From 56c38904fbcec91f790f41838295e20363465c76 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 23 Nov 2019 11:14:18 +0800 Subject: [PATCH 01/96] update doc --- docs/generators/kotlin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index 4c35ec6f36c..ec9a4e0332a 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -17,4 +17,4 @@ sidebar_label: kotlin |serializableModel|boolean - toggle "implements Serializable" for generated models| |null| |dateLibrary|Option. Date library to use|
**string**
String
**java8**
Java 8 native JSR310 (jvm only)
**threetenbp**
Threetenbp (jvm only)
|java8| |collectionType|Option. Collection type to use|
**array**
kotlin.Array
**list**
kotlin.collections.List
|array| -|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.
**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.
**multiplatform**
Platform: Kotlin multiplatform. HTTP client: Ktor 1.2.4. JSON processing: Kotlinx Serialization: 0.12.0.
|jvm-okhttp4| From 2f0105368053df959cf11c5cfce1098c6f3646f7 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 23 Nov 2019 11:41:29 +0800 Subject: [PATCH 02/96] Add bitrise badge to readme (#4578) * add bitrise badge to readme * move bitrise.yml to CI --- bitrise.yml => CI/bitrise.yml | 0 README.md | 3 +++ 2 files changed, 3 insertions(+) rename bitrise.yml => CI/bitrise.yml (100%) diff --git a/bitrise.yml b/CI/bitrise.yml similarity index 100% rename from bitrise.yml rename to CI/bitrise.yml diff --git a/README.md b/README.md index ddf1e8abaf0..a147e6d9b5f 100644 --- a/README.md +++ b/README.md @@ -7,18 +7,21 @@ [![Run Status](https://api.shippable.com/projects/5af6bf74e790f4070084a115/badge?branch=master)](https://app.shippable.com/github/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) [![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/master)](https://cloud.drone.io/OpenAPITools/openapi-generator) +[![iOS Build Status](https://app.bitrise.io/app/4a2b10a819d12b67/status.svg?token=859FMDR8QHwabCzwvZK6vQ&branch=master)](https://app.bitrise.io/app/4a2b10a819d12b67) [`4.3.x`](https://github.com/OpenAPITools/openapi-generator/tree/4.3.x) branch: [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/4.3.x.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator/tree/4.3.x.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Run Status](https://api.shippable.com/projects/5af6bf74e790f4070084a115/badge?branch=4.3.x)](https://app.shippable.com/github/OpenAPITools/openapi-generator) [![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=4.3.x&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu) [![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/4.3.x)](https://cloud.drone.io/OpenAPITools/openapi-generator) +[![iOS Build Status](https://app.bitrise.io/app/4a2b10a819d12b67/status.svg?token=859FMDR8QHwabCzwvZK6vQ&branch=4.3.x)](https://app.bitrise.io/app/4a2b10a819d12b67) [`5.0.x`](https://github.com/OpenAPITools/openapi-generator/tree/5.0.x) branch: [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/5.0.x.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator/tree/5.0.x.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Run Status](https://api.shippable.com/projects/5af6bf74e790f4070084a115/badge?branch=5.0.x)](https://app.shippable.com/github/OpenAPITools/openapi-generator) [![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=5.0.x&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu) [![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/5.0.x)](https://cloud.drone.io/OpenAPITools/openapi-generator) +[![iOS Build Status](https://app.bitrise.io/app/4a2b10a819d12b67/status.svg?token=859FMDR8QHwabCzwvZK6vQ&branch=5.0.x)](https://app.bitrise.io/app/4a2b10a819d12b67)
From dd6257917d122c955a7d67b588e648880b331585 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sat, 23 Nov 2019 00:27:15 -0500 Subject: [PATCH 03/96] Add php-slim4 config for batch/ci (#4581) --- bin/ci/php-slim4-server-petstore.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 bin/ci/php-slim4-server-petstore.json diff --git a/bin/ci/php-slim4-server-petstore.json b/bin/ci/php-slim4-server-petstore.json new file mode 100644 index 00000000000..1bfab4a21bc --- /dev/null +++ b/bin/ci/php-slim4-server-petstore.json @@ -0,0 +1,6 @@ +{ + "generatorName": "php-slim4", + "inputSpec": "modules/openapi-generator/src/test/resources/3_0/petstore.yaml", + "outputDir": "samples/server/petstore/php-slim4", + "templateDir": "modules/openapi-generator/src/main/resources/php-slim4-server" +} \ No newline at end of file From d70adae0e3da0dac19865e94a7b79fb6d724a7f5 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 23 Nov 2019 16:52:10 +0800 Subject: [PATCH 04/96] [swift] update Swift4 samples (#4589) * swift-update * dont put swift4 in ensure-up-to-date --- .../default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift | 6 +++--- .../PetstoreClient/Classes/OpenAPIs/APIHelper.swift | 6 +++--- .../client/petstore/swift4/promisekitLibrary/Package.swift | 6 +++--- .../PetstoreClient/Classes/OpenAPIs/APIHelper.swift | 6 +++--- .../PetstoreClient/Classes/OpenAPIs/APIHelper.swift | 6 +++--- .../PetstoreClient/Classes/OpenAPIs/APIHelper.swift | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 20007009680..75dea243957 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { result[item.key] = collection.filter({ $0 != nil }).map { "\($0!)" }.joined(separator: ",") } else if let value: Any = item.value { result[item.key] = "\(value)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? [Any?] { + if let collection = source as? Array { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 20007009680..75dea243957 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { result[item.key] = collection.filter({ $0 != nil }).map { "\($0!)" }.joined(separator: ",") } else if let value: Any = item.value { result[item.key] = "\(value)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? [Any?] { + if let collection = source as? Array { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/promisekitLibrary/Package.swift b/samples/client/petstore/swift4/promisekitLibrary/Package.swift index fbf22f5f823..7ba5c67b456 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/Package.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/Package.swift @@ -9,12 +9,12 @@ let package = Package( // Products define the executables and libraries produced by a package, and make them visible to other packages. .library( name: "PetstoreClient", - targets: ["PetstoreClient"]), + targets: ["PetstoreClient"]) ], dependencies: [ // Dependencies declare other packages that this package depends on. .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.0"), - .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.11.0"), + .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.11.0") ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. @@ -23,6 +23,6 @@ let package = Package( name: "PetstoreClient", dependencies: ["Alamofire", "PromiseKit"], path: "PetstoreClient/Classes" - ), + ) ] ) diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 20007009680..75dea243957 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { result[item.key] = collection.filter({ $0 != nil }).map { "\($0!)" }.joined(separator: ",") } else if let value: Any = item.value { result[item.key] = "\(value)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? [Any?] { + if let collection = source as? Array { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 20007009680..75dea243957 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { result[item.key] = collection.filter({ $0 != nil }).map { "\($0!)" }.joined(separator: ",") } else if let value: Any = item.value { result[item.key] = "\(value)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? [Any?] { + if let collection = source as? Array { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 20007009680..75dea243957 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { result[item.key] = collection.filter({ $0 != nil }).map { "\($0!)" }.joined(separator: ",") } else if let value: Any = item.value { result[item.key] = "\(value)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? [Any?] { + if let collection = source as? Array { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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?] { + if let collection = item.value as? Array { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { From 6a828d55dfb064cf5b3e02798f60a0ffb7b13ff3 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 23 Nov 2019 16:56:58 +0800 Subject: [PATCH 05/96] fix broken link to image --- website/dynamic/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index e366ab1d08b..754cae7988b 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -165,7 +165,7 @@ pinned: false - caption: "Kronsoft Development" - image: "img/companies/kronsoft.svg" + image: "img/companies/kronsoft.png" infoLink: "https://www.kronsoft.ro/home/" pinned: false - From bfb82f1a9193028f8b8b7545895226fb902377c5 Mon Sep 17 00:00:00 2001 From: Tetsuya Morimoto Date: Mon, 25 Nov 2019 00:17:08 +0900 Subject: [PATCH 06/96] Add a link to the presentation by @t2y at JJUG CCC 2019 Fall (#4595) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a147e6d9b5f..8ad918255e5 100644 --- a/README.md +++ b/README.md @@ -624,11 +624,13 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [WSO2](https://wso2.com/) - [Vouchery.io](https://vouchery.io) - [Xero](https://www.xero.com/) +- [Yahoo Japan](https://www.yahoo.co.jp/) - [Yelp](https://www.yelp.com/) - [Zalando](https://www.zalando.com) ## [5 - Presentations/Videos/Tutorials/Books](#table-of-contents) +- 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) - 2018/05/12 - [OpenAPI Generator - community drivenで成長するコードジェネレータ](https://ackintosh.github.io/blog/2018/05/12/openapi-generator/) by [中野暁人](https://github.com/ackintosh) - 2018/05/15 - [Starting a new open-source project](http://jmini.github.io/blog/2018/2018-05-15_new-open-source-project.html) by [Jeremie Bresson](https://github.com/jmini) - 2018/05/15 - [REST API仕様からAPIクライアントやスタブサーバを自動生成する「OpenAPI Generator」オープンソースで公開。Swagger Codegenからのフォーク](https://www.publickey1.jp/blog/18/rest_apiapiopenapi_generatorswagger_generator.html) by [Publickey](https://www.publickey1.jp) From 3084fe59375d4124ccdc8e803b645e403813b291 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 25 Nov 2019 00:14:29 +0800 Subject: [PATCH 07/96] Add 4brunu to Swift technical committee (#4596) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ad918255e5..a5dc22d0df2 100644 --- a/README.md +++ b/README.md @@ -907,7 +907,7 @@ If you want to join the committee, please kindly apply by sending an email to te | Ruby | @cliffano (2017/07) @zlx (2017/09) @autopp (2019/02) | | Rust | @frol (2017/07) @farcaller (2017/08) @bjgill (2017/12) @richardwhiuk (2019/07) | | Scala | @clasnake (2017/07), @jimschubert (2017/09) [:heart:](https://www.patreon.com/jimschubert), @shijinkui (2018/01), @ramzimaalej (2018/03) | -| Swift | @jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @d-date (2018/03) | +| Swift | @jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @d-date (2018/03) @4brunu (2019/11) | | TypeScript | @TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @nicokoenig (2018/09) @topce (2018/10) @akehir (2019/07) | :heart: = Link to support the contributor directly From d9bde12ebbb9b2c3a695edbd1da8fd3d9082ded9 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 25 Nov 2019 14:09:16 +0800 Subject: [PATCH 08/96] add yahoo logo (#4601) --- website/dynamic/users.yml | 5 +++++ website/static/img/companies/yahoo_japan.png | Bin 0 -> 22761 bytes 2 files changed, 5 insertions(+) create mode 100644 website/static/img/companies/yahoo_japan.png diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index 754cae7988b..8369879ca6d 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -303,6 +303,11 @@ image: "img/companies/xero.png" infoLink: "https://www.xero.com/" pinned: false +- + caption: Yahoo! Japan + image: "img/companies/yahoo_japan.png" + infoLink: "https://www.yahoo.co.jp" + pinned: false - caption: Yelp image: "img/companies/yelp.png" diff --git a/website/static/img/companies/yahoo_japan.png b/website/static/img/companies/yahoo_japan.png new file mode 100644 index 0000000000000000000000000000000000000000..7748b162c59bf1b453d1e16970512f22a666d4d7 GIT binary patch literal 22761 zcmdpd1y@_&({%{$?h@Q7Zbgeztb!E^1gAKqxCM7B6n81b-HHW=LUD=(Ymnluf$;MC zKi}eAS?eY_Su1z$oO9;P?Abf|jkYR24h;?f0KivQQ+fvgpfWyxKEuLzz6#&Z20g!_ z*}l?x1pw41;y#$8KYwSmRC}id0Qj;40FW>M;Qo0C@(%#;5C8!7!2rO^3;=-AHRtDB z>E|CXEHqS=08jtD3cAWto<}ghsB0->Zen4h;S2WsuCoOI435;5Ug>%-ALV-Ge6(Kb zsYQ%C`xf6MB{8xQH3(;i5&1`BaWgZs6=8+^fRHJp-*FkfnKn@N*Q;Y>R3?f>MrNfw2KrFO?Nb5E}B(8QK9FQg|Qn-G3^pF@chu$aRB zf4Ha*SONd*xEWP^gsf(Dq z4THvAv@|`(169>dNEkC78T^0H7&F@qF1*IW`S0JNqziQtdCD0RlyXKxQKA#K)Lzf~H5G5TE0^O#kUduuUwC0H^{lb=%m1ddH6~u&xc@#HOe)9@Bn_^vXp(RNe1I_k zg8)Xh)E5hvYd^E4sf=42&Z+CC-CTMbe$fVvGyVYKi{Utup%lBSpcF$^7u$vw{Cudr z8Q?y3lvqBWGzxoZr%puSy?Qh@;m?c0h>{NO71qLn<%n}k8tlc^n;#pc4}LKe8YYVx z5=65^PQqxtjeY?;Z6j^AG8oU0eIw4y|HfYjxK3&-B0#g4d)t!qExW_@MPwSgWv>u^ z*?-I9-y&sJR>&Y6O4u)f<497!YLO+e3h@nH|3pQXU#H7Q@6TvNa zU8~c{mtjXA;__;Ahqc3#fL;tTL2SGuC^qg0CmyX*;VkTa*W4N%Np@L7M^POt?a*m7iw^TM|sD2~N%E^Q6 zI7TiNY3?l8#Eb}<_F-1}UkHp|#z(C<7uJR<=Uv(*ki$5Uf^J|ZofJuBWiG8E5TNkVNRLh=h_O+EFg+T}*@ zisD$T`LL6=D_q{T`?&ojvXg8L7*uqdDf;rXp=jt@l7gh2@QR1^3ytl>PaoIn&UiG> z;xx{}Xcfi-^96_-9u2w>F)z* zV06Qh`rBRP^jncx7dMM_(|I>Ky=PrA7LA#&kM@57MNXtj_Y9InA9 zBEhJ{h^OAHpvXpJU}GyvM&c5kf(tMRxSuCr({tXUkoxAB%cJfy8rn&SD;~;UZ^tIcFyNk%V3#^Uw9PdM1mpFn{j` zrQd-y*LH0Rmj@b8cks%B+JwCY?y0~;4-|=h0E$MiOW4l*nUW5ND7vlT9_AL<`%w^T z3+zaf)M{~i$sA+SXkGZm$B&i>PTCvoZ*Fah(6rwP zg{zr@^4n0Gj&TpQHY{D)QTDLD`T|%q>~yx)7h7b^$NlPWR=f_cr)91wNJ%$RoT2SRpXK5mI9{WpkG%BX)*mXe!A^?tfRu9`?ioW9b>6fv3>(w> zjjc#=2m>zk{;^jvT*1SnCXJk0_w8dm~_^XOsX^c+^9O zvqtHthJ4C|qSMWDkS=nx+NU9!th`&V4ZDI<`5(-Ux4?P9F=>W>); z!{7+)A&qo-NG%ZUFo1!ZCAztVH6?uNpzF5F)i zY&jf5o4b>f4#Rws`*(na@8Clq-thoUV2RPPAc}~Xf;ZOCtBn-jC4BW*0l%mz5D-z8 zYyyiN999}X0k)LCp~w<+W^_c93%ZzJExXy{Py`Xd{WpTRGg9`v^NZs@@D%g8grh~> zdGR{ltFRsXWG5`_ai1`qJCwaMbX@I$oMG>U=YOU_nu|Pkr&Ha@<{Uwo?A^j8np&_f ze8R@VH*`oqE@d7{Awr}{8RB!ure&2G`l@==!s7rmPgaINtUh`%5T_q?u^TA7~?lZykt?Z<<(Mz(jf`1N`!1*-AePR=W(5VjbJKVd--zG#Qu#)aSx>GH=qpQ-b8BMIr1e(WcSaU`ck=c>T<2NpjM;Ly8j zh@*L;`lI>dSw=3FCdz$z{W<&2v$6O|+0J+02Ds^BY2>29TZw}paH7U_5)8^7_)dkX z_*$YA7A`XJS0`g2o=ZT!V34|qb>#?-8qZp%UTN#@Cv+=Z(X@d6u1(a8-)Nq%<JQJIYfH-Xr|DuE9D`8_}1At(Vrcg@({RJ-=VnL0lj9& zS{aN!`UX*SaM@*Jj7&jqm`d|IXkobfZ9N5&Rq#BFdIKyu*Zw4P%OQXO-bysjhE$1> zz)3c;weRyK(rMfMzM4#0s#+k^GakdP+RV_jo(!saR7w%(5+bYrWH(*Vs(YY!c5%%z z7#E+8Gg;ytHLhr9k9GRmSW#x`u`=O#cW667%-G`MlDm?7)S`6N?r;EE--9j07UI`J z#$k!^s>drhaj-4TyOpvVORUVqaSM`@9PmMgYerU3LB$)BuWlDtz##31S_<7P=6zns znI5=gO(gZ&9>p6pgvhz1gS`kpJW|J$p*~qH^960xBa>MHnb^{OmhQ8gi zr-C{&nezq6GU(zhy97c;*6MS0Y$D(8!}oQ#6KQan#o=MThmcu~=N-x;gPIC`OwEdM zQa8zNRhSh=Iw*`Rz6D-yZjWOuo$`;cqAOtqJ*lhrGOJO+W7U-@*hvGa-^?U|I;dQ1TlA(5{vh5dK`Dn&3Go`z&I9}|y5ALD*^GW6{%n(!%Z`b+hGcV#bhG|K~bZA-Q#^QbnA0|gCV;giPY_KY7pJ@ z_YJ}}gs2^Cj8c_u>{RW;y237lE}7_u#BWImH_KDvmwuZ65WBxO&v<0Xii{+UYj1QY z(7Aqz@>f%fn712k*8w|2YGJ396`c^WN=R#?`Y85?xn}$yS#-FsMiRX;nTtu>V^wI%mCUI71RdW^<><$1#$av_ead zkVNW>ytqGr%^M41kd1hThJWfGl}3kE4*F10ag=_RoBVjtW@l}TW)mmZU(_bA=8++p zGVGf~U^Vv0L?GIxi~WO>s>~mM9s#b9VYwL0l(<7{5|HRZgZ>DH#jHfi8fN9Bg7Uzy zQCzmGpPa0HTlmuCw##y?f&Uk2(8Nc3kyQ)x5jx6q0#~d z4K1YDf^!TWb}*@5d+?!Spg(aKUbeKU4d2wW%0Z;0(qktT9n|ifv~jR-7OX^T_kU{M zBh%C}hvE7Ec=+ZhHymjdC#hwBCb~41K89hDa=T$hj`ihUXoAgqeU*1S*UIWd>zsUS z=<-Ts7WBIj)O!#K|EPd`ec478=hiWMT5l)K*25SfR5je6$ibxGafSHg4(dCiJ!7Q^ z?6Sur6=G3eN(OLgg+0(Unz6A6dxobh^|a)KJm;#hwU~0<R;(x*qNeA~q{IFmRQ^wUsO0yBWItW8YdR=$@P0 zLE=Im?=DC*{AUPo!IP^=9f}pnK^&l2m|k$Dy6>~?7!>C1{fajly|-Nt{53uP@Gq;i zTI7_5Gi-_CMt#`wcOzt)d}1OGjjxAkD{SqEERH(t>Q30zJCo-^MPWkZvqSM1Vlmio ze;v#-dUD{*9<r{VdBD|J<6k`GG@q z{oliZ9`$?XGpE|UeC_)aC^7NEy5K}fHEEZ{Cs=wD)jJYKnTp9wjn!F@bE2GJQ&Fay z?7r2pa6`|(TiV4y2ir%jtu`Pq(@-jGbU6@xIYckw z?TZ_#V-O~Hko?rcXO7&x0PR=(6NVQ7))b&bcrO|Y!5K=@vQZbCe@To`rITT^THSdh z)LbxbUL2k#X0PbqsTHN!zcRD&HWBmj0&{jaf%lR4YI@y&+tcYQKh+Q9wOAQ;2B~7c ztk`B+o7^YKuK+F$RF``{SyQFKz1SrY+ox*ZSf||awdcg`ng=fLCgV(PIS~ZsQ8%u} zO}d&As*O44L3w8>k$JO`LwO|+SwW`|3n)snl%T#a9f)KIIa`TJS!Sq2st`kGxb^GE1@XI;GUCEbzcMwxLKMFK9eNvCF2ECK=#y1-9AXC+WB5L{;Rg;#As z%YEP9!}A|PjVKwlhWhaJ=I$?58omzhkc?-SIL=s zm4s9{a{{8~)48o3Yrg}xnU4RKpR0G@FPLP)=6ecNkF#Y*dDqfQ#zA-g39JwNK3mKb z5GcAbs}70{e?n>DnPo8>2vv;x?!cp4RPE3iD*euy+EWRC`UVI-!6IFRxOXOZyl)9K z*1>hBv_w8e4dH?tnugVEIf2NmLzC8h7qJG?(|Yxh$6-=F=?W?V5vU>!gO1 ziP@)P5W3NcHA-r;3j#>~K2{9yM-!`>>)66A!t!fN_dZaZxqzfVX1GfVpq#k$QD|aX zzVznikNHFIr^R+(y5|y*LF55=@x)`iB2v?L)HQTyzzq{R9&RJ{F2v{<^tJPA`*mJL zo@B&ScM*&vZYimy)(ZMo*pc#}_yUm6V2%?hv3EoH)(xTZ@vk`3O&hmtO9DgW;>vnv z)@#FF14a89G_|9sBs%9Z{k7w{JOF42U$x{6zEvyAv z(%|R#ztg_i7C-bj+ohS*1dI*tv3wwFZFG~PyCL>=h6p}o+Pg=Je7y?HQ8$MBbN8`2 zhvrQ9lZmKky9^%45_Hm;Gl!c|kP0yWWu6r2`WMyMDyM+-z2c+>=p;N_1bQ7pI7b|V zN|M_z`I|4L_puMhcAF8{lbTe^x`0j9gZamka(gB8QF@|Y<-J&;lciu?Mv}wD_T+P^ zO9adg5k_C+>kYlFgj#0EsN3nhx@9fNgLq7KdW>{>X_k{PioUwYghHbjkkSl+ueEIi zE#Zd-FyZI2Sw~5o?odQqa7Xhb@W+J-b5{z~vBpTH>f+dl)Y>`JA7@M6D53fEA4^4 zpj0h?Duc~lM1{Kl7k0Jht#D!7($KLfMg#X79m&a`rmgXQQBpwD>)R!K?hG!A%6nuK zd3+`IV&15H_SZ1T)5C%9>w zbhuUJuKF03ft4xLZ$4#9ynoMNg`~X5=A7J|ypkwm+wN2)3qkW&N;dPuho@mRG!j~U zpMzkQ@ELaHLI_nC{NI_){He@~^Ks9Ewuv=ll^wSMxdkmyz8aNhC3IQyB?f-1XRU^e zi`mp@*gL5~281$pcHsVBf9a?pNN@GNk%LGh!Lcqp@TH9Oi!+(eJxA3?!;)Y;XAsY^ zh9|nYtFlOOME(cVRefN|g2Q-J%PsT}$LwxZ!?!?L+#nNV1}(c+`q`Bm^cZzeygJfO{Qon>^plz#$R!x$U5Id0J_``FT8ZiEfH)8qPuKsvO`xpiEa_ zl&}gvB30yeAbG!*L`}k2)Fl|#P1IKQ_f8=2xI|bmHjxl4jdu9qyDE~tR%#$)wGwVG zu~#oKOm5KQS$#H=eTQjCwnDXEcqP0)RphHqPnUb~HYoPcxCKR^&&iPP&u{sk(iV~6 zI&KM13!(r)#|!Q_vARt48obpI^2&9&>fbW%Bs=bqRi2D*-5FZ$>vER7h7^x_Ft63Rsk^8IE}WMF17LREr9KC^_7>EXQgvyNt3>@Fg?!O z-TU-UEN&piIAr~~CJ^z6eCyl1Y%iub$RplDauYLphq~6@XF?`NkFB!R8f2R zcl*B|T>9qmD+&8P$fHWIta z+p7esUDl+EvK3WfCq6Nue5E25LXgAc2z2jlaum(a21_N!;SuJsCw-3^+u37B*%Uk4 zC-KR@J6y;%TQ!J)=^o@h&-e$ytu0#nDnSHYZ60sMk5FY+dCgWcWrem15+|mfEbHl- zkPJ}ieLOayEM35Rt&#RvZi)Z9*~}NvgfjNXhG8!ZzhERP^*Jlq8IGrY-SSx*sVE%l_2T1`}OT>=oyXw^YD? z?9NB1oC;2t&1EHh!%P7X4<;dqPj_QlG2vd}d6=UhF_&!Y!}s4Wv)vGF)0dUYSMjeu zJZ_XdCspXTs;#IlN=XNyx#P(F{-W1W|L)!2Yv!n_DSuk1fzO9M@ciw&LXlJVplh}z z^%siJ%?tHOWG`r%q*>anEHauCBK_+X0^clSI?opWIW|gQ=-uTtE0!}JeH8h-mH&O; zm|IYOa;|=*Q$fJh-l}q-6Z)Kqo*}Jq8wz~LPK9KFTg|B+!?0y3-vCl3{&;3U3Y%pm z8yE_%%&wjccv@QfQ=IdlGwWpdcA~Nv(c_%cPfqSTozO5iQC)$!+> zp>o4pqN&;tNl7}IZVavU09)H3#z*||9`!qn-|4Oi0$Do?o~U&$=~H%rPNqs*+f%he zhq1(Q=NytLPx)sX+*ezRhJ;lPlz{A~P6A8%Iyyt#Kbj*(SlPi8b@MLKf#bb@mdw%obeLXuDX+l(%+OW!#a477EwA)S$K8TZhM)Yj23H00j zbV+$HSegLdZkFIk7cAsBYq_Cy&#&I&N{e8Ds6V?A)qG_##=%T0@#S77Tgg1VBKU{{ zVpdK`Ic{IK3tdM`v$$rz%?|5C=_U*L=3~3GupN%ZQ{Y4&=3w4?{$jnQJ#GbkjK$Yk zE>nyIL+Qru09o;F*O&Jl3eaZV3v{v2*D@2+w>v)?TJJ%rn*UV>+nwQc6lFO%(KIRX z*REwg8S33R92=JKrQgT+@VM^_xm=HR--4iAyILfTXQyhG#|O{^@#DXv&pA{|KZ$;(%MppA$%II$|-UjHnGwA+rX zn{V?#6NuB?L@uRBZ!;@8;?Nu>hn+h9ah#nlD>?S`nT1R0=xbg52xm{7n!w=hV*6w} z?(8abwfIX;;ltptjQ2(1JP|L4FHHh)i1O%Hgj4#rw6zH1V9u7;^c!(fKhj6~qK1Y} zO^ZM6NDV~(LkF^+bB;B?q&}utZN&WI#}z5qMc!(rvd;TxtZmb_-=W!+?B@6PdYkI2 z5&mOfO58h4;i?!@Yjp^#M+|ER1z{p4cR=d{ra%^iW$bobZqqZh2*c&$Bi0M9&FmoY z9X{S_C%%vIcc3Ebw;{rQT9jm6sfU%*ag{9|h2mH-7DHsQ`w?B@<~D_|oP%Bk(psfD zhKGwwy>AjO9lqGlkTrA_77)PL^sW|k|D=E;TU_z8CCmP+OhLQOroR|UwXY^Mt|(v7 zyfZ!q)nQVEW$!S#8CyB%igQUIik&@5xY-Nl;6g*|chvS8YdqerO8O1Oi&k~M3cY#B z@NPb_1{W}LjLK-&D&*VxyV9Gv#v?zjDJsR+4%m0EKI5!;2I=Xg7}?KojKQiiR;M&@ zE-?F;I9~fZUe03+@K`rwI*n(pHCBvF0Fkt>>hFVtD#X2I>W!;lKV|d2RziHX>cANkz2~8A>%s)Hz9w z9Ibc7PY(Z%VAna0xV`F%srZsIAmW=qpQ(P@R&i`xV1$DsaWunw85)$obgb~S6l4lS zSHy{t_ceqnu`_z5wEouGMqDyJvJx446o`K^*e1!oe$Cdm5k#u{fEo8mj~uS1tsr`P z%=jYOY7$TUyqB zKSC*ztdbn1?#Vtht}&(hka|jVKhC}BCx`ymdkpr>F!(E?`HqG2i#EMDLt_sh0IohY zA>6?8)e?~Z)??N9cZ-pd+KcR-zQ+Aq@$PfW=YEpy*>G^cYbtAg{&c>0)wO{(z9I}i zn|UwE>Db}fyGg(j7DH~xsqTk1UV?1_SYqP8GvQ}6iDKQkfls0g)vaoaaNy9C!@a~v z(aWiHlZdwslZx*B*C4TmSrVHFL}m3Ft9(Ta%o=KS zHVZ&KY_9kAJuM$ zAhkKsPOH>j<2=L5gP}bguqR=io~C+t)Ix5afN)hP{*ryA6n2vR=V<8JoGrvYis@9u z^y!sJ^9nJK4(c^;H_9!4oMUEfh~vHZqA)R8LjvQ~(tb4yy~4?36EfMZNGl=iQq^ib zPvToK!h%5$FH#>1x!923G*2}wN6M9oYLrnJd~ zPt+Xm&AOhkisSk(NMWMsuDc<^T)_aV?RV7v40WnX#iv~=*YSCJCztx2SH;i^L2U+G z^U56wd`vrr-+03mPaThRrGpu#>2co?Bz8%N%6bMi`HIhfb1uZ=4!%mgT>PLiD?P8P zDw2qbT?kRLY5_&>{WP%>zkt>R05`mRp`hsXjQeiaMUKvl&<~>>O70 zahxjJyt)S?LMe3sj|Gu`-kjg=?uNjchOsYF2M8j}#&@OmZWgpx>|m38kNo2gSiH{#cr$in@4+SmZ#nVJP!gTz=N?zK z^J5#I++3t7aLb723-1z^XyMKr0UQke{TZ`!QXRVk^jJnOhWdqh{x;IIl8EIy5~-v> zCmhZOWulgyY2)r3DrOVO^&woq-|`^Y=k+1a;dgW-rUs%ax1{>E)m7kns*EE%pNu zj9|N3fsv% zTWhW#5yp3R`n@o@=xW$P*QR&zUi&gBLkcEo)uW_ynNp4}tusjcbE1BYjCHNoYr4;&c2_eO5Gresf)$D^r)n|7vbEmoqYaKrP4IFwaEu&by-Ij>_{RE<~GD{FEz+ zjU0Q-%9U@HG8KN@kR*<~*xjZRn{DkWSN;UzRl|)F75zzJb!6oS^2au~HxyGgS z-nIMItD`4^I=XQtM|P{{KE*~3(X^(28e(oNC7|{`f~mm7-8U$yWAT$=;*uA$_I{8+ z_DNcI@Km?8RsM-GeB%wU2XJ%YiZS%w4XM!w^BE;;(W)gq|HR==z9WZ*RF&b=H|;-) zgigju@(D$vMG;drVgKJ#Z*>WM%f}XB@1UlX0MlP=h(3Op{%AA^qnP; z!G{%Jz^Rbrzv;PLli@PVM{;O!miaI|^-mrJ_)P-DsY?2Z1YVx^pt5*vE_0TpQD{q_}IZ+zXxHEilv4bAk zY}8SutYP2qoBNNB^7cNsgl(=fimr~-MD--7-h?xeVm*X~N9B|GZM}#!K&levNW}rc$;_3AT1dm3zswHaw_u zJd;(8J47(Bp9k>dIz!>0ZC_{mF8%60>$)}bZ5<7v7mopemqVDWFPMlR$(_WvHx-C zDowlzV#NhCZTm~ZkQQ<8c>Yb|EPZ4umpvTw{e)*P6UhohBtPS25&A2%ngSE$eRGjY!rSfg-7z8)3Z(E)5MO-CRW;@`9% zi0$y81HblR@iX{+b??6}9R*DoxFf1_iO&R+yYf$%O!=k@J~i)G^bBEVtOL6-{P`AN zgUN@C!1#4JNzG6rF#0Vc76!>JBbe%zQTmxxS!WVO0L&A54qqtDtn&7{5Q+cTh{6CDUIl8-9hEXAW+#u)MYq%=0rSf3+xWcgy9RzrcC=93xuFTu@eLgoC5IteoxG zd(x5AnFnF z_8=UUbv!L~KdDXUK;a2xVm3h>A=Nkg*_y2;^Sdnts%I?c6C#*Xex{mNY(0FA{IF$> z?JY_dI*u-!)~>k2F_}GGf2-SXlIh^2K*$p~0OaeuR)KrYk0a z_ICy~R8nkzya`#TEGz&0{mLhF3e-dkq<5f3q1?v=^3^c)B$F}O&aAFC)w@Tm@?rn( zjN|bpMoZY@>B!-jloFturZkV?KIMlLgYV`cf7N z1i6B?*HB=7!SUbgGkJxQGDRL(H0HYKjx@778LOHRjosZKLDw zA>JX{p{8^ty9=Nepdnz&WJP=nhg#N|PaBKt`S8~iKs|Z zU&{WeY*Oh$nPU-YpcqpT>)Ni!vGur*0TgA$&D zb@}#!*T@?dfw?ZYBQi>7O+CC0umK3aTt3}D>>)>!Qmi9IGY)n^-t#GOheEIQ zkk`Uq#~FMaAPKK$QAM9CwIO2t14^&M)ID=mpigY|d(%cfsSwFAvm^j<5ym8$H&2w@t)TQ=?fi}ut7W)cZspKv_@rGFJyHw$8 z1+{=@*7zvsA4Tp3&Cpd?uP9r05)oVL0{R%l8rtXeAatn09b*v%Ua2!U!ifSB$29m> zG_%P*$E+%j-rBrKd~x=k5>MPIl3b=oGTYC|;vd4L93GZCV}6}eINmG^84=yJFg)W- zDzk*AusjJ607>%6tU^{{!x@%1obA;pa6=wV$b|9^&qL#R`hPT&Coy`cCpt%c4m89k zHd;wPd15dpQ3S7YDeu^~{ao2`{y25f3VtO}^nDF9^-^jmSWx8iO~!7*ps^?Pk*sbd z*h6&DNF4Hnx=YvT;dKEcR+-Hwt2VkkMzMWOUuT&KTERdytI^N4!%gEXR&*|(d7)c9 z)XSRNd#6Cia3+M;{@oYnP#k={i6ztI4r^~XZNu-@K=Ez;_Rw|qzjUM(Ft&c(-c0qI zp76NpkhQ;Z>0Imj&1r(^zsthL%FNtC$2*cA`~n4!7Xjy!B{h#vt4r{3p*c4$U`ggf z?p1bUh?g_W@VaGSdHDo-5)<$FujZ@-8rk$@E#EsIx3y8p)c9q&++s4d2Cq78=`$*6)!T3|>g_~!r{40xNEn$J`gHkHXENVK zR(DpYJ`O)N?8j_$Y!duKuul)ZT*MWMRJ>jTuC__Gb;3=XXyDp;gtaj@Cr}%me-L=)tpFf0to|Y3_&6Y+h;bkZEe^sW+>G zRe&+QWxw7a6$>Xf{7-9Ki5A~r>9a8f9i8za)kZ)UcTS7cA){!4R1>|rE(PuBf((pJ zn7ts##}uFH&ODML79+2CaLNeoydyF8e-X;Gt90@c40oB`k|&WpXu-FC_qjRmmDMP~^rrBCuJQ)RZtH-8mt=?k<4=X~XoL?Axt z)19F0Va*$H0!KOE&|ldI|BsO+AI~}nyz$^~6`uGPi<7dP#sifxQ^OaFya*G)Q19+6 zL?&7kXIbo;1DaZ3&rXaR7}K(o)?X-0Ds>Nk=-`c4QA(z{6{wb`IIK6`&|4*p%O9$q zDEj$gK0ORzi6jAIyY3EMg+AcBwoo=Dgv=eIb@SZ5Xv60S61|$RCgZFe?XeEPZlvrr zV{A%47e86FObQrcOkE@@T3PFKK#LtRLLn~d3e`KJsCtn3cSQ<86(orGh8cpt3?t`c zL0EkJmN*1Edp^f+`txu}Xj79U319gN3UCVr@oe}j$d-4rD%s|;t^gle9|`G) zJx1`t(|X^CQ#oRVgrk%oC8%|Iqf}vo*+*bBWqE3CK@gpGeXg zXwJnro;VTcrZ(U9A0PebXq9geL{emx+`!Dw8b*ZeCS8Q3U^stK^6X!Z@~!K~A#B52 z53rma^;z1V(^g~(Sp-nk!qZANvHOp@T%0g!8|ZM8Z|(Ka$ubNJ8ILt+BoiEzoWx%t zh5amdVpAeQW!0PKVT?g#wl9$hj|6~#D!Q3kn1DzNe^R*FhN_;Bu!^UkfUrgL?FZXF zv3>1lnG~!1%PWWHFtf-xoU$_G)VgMF;n(u_gR66tM0oI&@Asc6&-yHTjv~gegTg)h z=LI?XJ@=g{&S=)jn$&(r%{eeE&A6~18el#5!Cx{+5b`XNd;437B+NBh?{1#xCF;A! z!;G9N);kJb+BMu7w-1<&rj>1MAL_={*Rkm+&4rAK=kj$%l=uHW+ftE^&y;r0P+03o z81fUt5O-7Pv>EJB;7lIIW3Cw73MR0t^sIcQPYT}s8#&}cd55)m8uRh9o@t)eI4vQe z%RmU6*?Gh4%Mh|bh9cxYLp-Q1Oy|a$yo&e?^|T&|w_LPd$FRP(^7}l52VD6{se9Wv zI{JFwMSc#UgCL!An4)+#!k5|zrTksabU^)F>FBb4>Ku8JY`>p!X|{|(^u8w+_yNmq z6*nXR+n*nHgMp!v-xf5)CqrNdg$yoi$g-PD zYWx7y*PxBq7jOh4_k&;6ld<6C$7_xYeRzra&_N&PG$Dc@Dd(Jtp`uOU}gY7XLxT&Ex zf1QV^ypxE!vXV-D3FOiBy8rO~QKpmU46dM=JQeRqZR#S>@|uT6R0;18<8WR%@}NO{ zrz4LXG1wX~u|{F&adG0?RiTE(gu?vVm1-C-MAp`_+D!e_CqgL?MUbM#W_D!+XWM+| zCD=q9WK3a}uzdZ`#`?$dKim>G4HqLW6pk(mN9@` zSg**Odm{cA$NBKG=1(oQz~TSRn*yRnx}l-f;? ztvrG2)c!!i7{c*k#ff}7&fya9PYzNs;*L8Qv;W<7DS9K-gpQ0%X1;C zDr3O(N63p?;t*vyj;$&oxf}HJU8tBXU=aX5nE6??>c9(QL}C7Udg$N!_hmUJDqm87 zo(*RNM@#TeO8crQp12P@dN<7Gy!?-q=8fY9KNgMKde!;=K?SSOq&9P6+_>?4R;xGd z`vTLch10JYVk0#wn6sUqkr;lOc8#%xMMw1|^mcb!m&0@t#%=nYCLoDi?Z1e03l8{Q z?PlCpwy+`g(j-7x5g*Bpm!Thlt3J}K$&$a+^2V{=lPIgjPk=M9wIh$UJ9$e~p zk1`(Su{~|tT{3=BxWf35jTZIKehUwhYaP8feMiWo)Z9&AXnOymf)NAd?-O(pha3c)m4RFPVn)j`s}WV5`61BJANc3KHsM=eQW6+ zMNm>TAR>oxdjen3Z&QklahWQNE&mKcg)Q~E_kdD+Ft!9WGy|07b`vF6TWh^bKGEE6#_tS>AY#Uw5 zKNDNwo@`Ar*jkgr#L~}c8hXMgD9x7BS@Aq_e+kEt=hTVw@#n#OThFjv)_WT%LWnC` z9ci8L|EuOYyPDd%H3=Y611L>8f|N){dY7W0pr{lh(i9M+LqK{*2<;pY;Sh)jf*x7` zrPt8Q2~C;_1VO2xmxTUqj=pz{`{Dk8`z0C47;CLP*V=2=XFiULI;YP9MG2O41Klqb z1xf9xVf)p%a-gSpM)r!R?f2_eLhI~Att#{~y&TXqez=eXpmnv(=iZ8P)x|+G{EY`e zaw5T7t_J%@w52KK_NPslMgE2enc&Oe;dacQj~?2Ep#^K*s5KLg6K=K$>G!k&$k6xF zJ4?-zsYT*}G;xw0RY#)YE?H@O2w5Nl8NgT*l}McH+2&NhN8{o*F8iE9oniOfCSH)J z+}b3#-I|su4j;cu{duzYV}r1o%%~07fY&@cy`tUIvPNMmmS>(5%{*p=www3M5ecrb zchUw@^MV8EyU%yzr;AR}#0gYJT*iA%-orH@SlZF@e_k$rV%sU3nM29*urUe#M(k#EqXMo2tp_Ezc?}SQ-~Pxt~c`oAJCCjmv$k>MT&zS9M|xE-QJv zX076x4+{NtRvGY4`Z{AB#cm|Kzg3?n^4P_%E{e zAQ1-J5P6CTG zA(D(Bq@NX7g$@~+ZA@shXN#wwEs*yOeJap#Y=AdeR$UEM%+&+2x{F~W7!hVE2Wv)C zsJfIOCi>IKQi$WJA1QVh&L%Lru>Snz><0ACnd~n!z3m|?B^@K zmaacYRxEsbnjK+?p>|7pR`-pgK+ z%ysB6+d}>E&0ru^^IxNzPiI?`M|WQUi8$q!WzDcq$5Vq+D*Dt^pkAq0(SH^Df{O92 zo|HC_sXu49AO|$j9On)~Ukm#lcS%zF9kypC_J~?UeS6iUKGA*(rfRnS zTab9`AkX&uD9gcccHS368my@2q_klY^k3)HbMp3Vt1C*ZxK|Nc5ru3zkOC5D2KLIsP(7$g@t%cY-R*pc=lk+ zsVoZY{zv7ziblT|HXr00f&w}-n0!{0e8V1K@@O?it16hYSHyXOrS1{m)QAs+ZYbPI zC`=k#khJ_)Ha+U4wl^A*KkL_vn33@}J=LlZk;mA~x?ML-g2$3(Pp{^Xr*ouBK@VH1 zoN}^b75y!zlvj4vr1`vs%$6VZ6;gFa+Qx&7!E4XPrbpO4!#? zyBgzSOxZR+@%At7#c&Kw?X`5>Fxbz5VerL!cLohss;@6Z6?>}D1=RH{zKl8`{j0Lp8ZYWk9a<<9xC%vxuSAxVoGq=pHBbkk@`A+;X8R{m<)K{LxUNn z8V!^g08t(yS%p|0Cqe~oYSI$%uhx}jGQYCi^e8&284w4nX>dJaAqn~lY;Fy|{+c}U z_YpV;HGhyTd$i1C+&kcxc~TbSGgSl0kS9|~R1(i_xY{@e_-|9)THJf~<1`XyVRValFH&%VgFpX6zPtbs@&mV3 zZ+r3k-qy3y@0_+MDdc!@VvM!gTAsB&saPF{Nk}nAQ7lifm%tbO0zmxMlRK5AT2a`+ zt?QBaChNzsM6j(nskH7-i|uj0D>Mb!l_#84sJHhbM41bur7Ig&nd^ZZCZKavzSR_` z%R$N!-TXB>4P-ayXTKwJe2>(Hmh$k=&8ZY1GvbX#4PPGa8A{)lr0z9>hO1Ln;D8pP zlcwzYlKB@5Q$GJH585~;@ZoK+aJdMHEaVBJ?K+7B;1Dc8F7g*yjYRKPv&GpSpwVzQ zuQkG2450<|rd%i5=?LQdM@;6U`^F7@yr2R)kQ%I|r=wsN*nP#S4r2;#@Z0YHGDM2S zd|aBbhkr>s)dr!)=>EG_HPnwO8OZT7(ok${ z%w0XZ@z=UEUM;)18Qs1V8Y%A;M^~>`fsg!IKuDUp0cbnf@8O6b^TOR>U%zBg;=<;E zT8xumu~kDjKX=%PUnO`hhF(8^*$;U&d;)Q&k(3mWfYE?{YuwfKa%9%D=@awFZz_$kk z2o0J4u&8N|Y{=Ql(JS9@rq=sKU9_dr*o%u~`&8RDd5dGH-r z8BBXORd2QnoA_GcpN=ca<@90 zE90HU3+{n(2X%c8TUbk zY~&E=I=EU{0m59ZC-=}ZhxWb@`@Sq_D@_sPmqV-7#uXF+RF?u=WN!I+XM0*Ny9xQn zzyg(L{`tVLQ2=s1s5;7oxN||fVQQ1pmT3skFAJeRdG9@NCP=`<7boCyHWcA#=zG5@8Bc=#l;)Sa~@l+=2Ce%7T-s z!(m6drIV9(;E!4E=;(h?RHu)EpOd?3N3!*;%18fe{X}l>Ne_2kKVvU>w})t*?a1s> z>CHmlr8biix)OLlc|N<<#`6fwmn`R@I@x1AHV-RPEirCU);XOv8QLIcUb$;E82(aR zm)*S;RtQdcGn6stEw@;6rthV#Xe4`=;#{xlbKZL&XEhEyeyv@A1(d0p%88EZX$DoP z+m+Pyg$E~jd!wxohq5$#tc~x&O%2E?6}!3#rzYJ#^N&;49G-h(9@d41{#B2h*>hDZ z)IWWp&eWn9_akN;XXR$+m#aeiZ#3p0QmOm#+{vv(LEFW-W}=p_X$yE}xLWtO@vsh0 z526(b_!)Vz_hmaLE>bsvP>YWR-)+G+Td3c9goZ|CW!V+OtGaPbZ&Tu7m$L>iZb4^}5%?6k47Nbv%) z0Be!wdsWrQ^aM_AU?(d!pv7OsZBt8e`!Ut(yS207N2xb! zpa7G?t5t98rOT|gBL^STro`>HIC}+mP5Lx=A*S!h+A-n>bHCnuHag~~Qi$Sz(nA5O zyM0s8LeFe_C=B+lSgG@NN>YVM!qoa3PSBqz-*qiypN#9Q{O!zIqq|aR%1|uer+*p* z(eJ_IyrjF`+-EbzMfndMj4X>jVBq+*v~kNF7mhy z?XxWj#Ui{M>MSZ1D^A(p9pM`BSl=#&1hm#zx3#IkXt~T;^MB=+Os@owfOiN>FECi3 zJrYGoYA07M@hI`stkMqXd0>+7G?UYSn;ECh6k zv`juq(}!MeFGR?crTsRce}|)^l{u;l)F0il6g>3k+iKqFVZcjmI}dC{ zY2Nx*PVa|_@|Fkk0-(1;V^fd-E+RHyWuzQhBC&S-T5c$d;!{dK8Nk)m@-pr}i*_^l zHL1q?bhgy9-2no>62p$P|GdD=mFb9|HKW1Y_a?L0tE3HULW+d%-@nh_$5kWhUIgFC zEA9)~b6?!8OU8gz9Fbk(EVZB6V4x{s-Aa$yHalD6ABf_ibA`Yv?oHkC7L%%?k-fKu zId;+Ih<0m99<&2GBX+Xsubeh1$?Z{cR=^uHFbWQ8EJbo&xk7m~~nmid{ zY#nMzcb@V`c}@>7RoS%SlELQeWVYYYLm*FyGsu1)*d^EH7r;is{3|#YxPAB&#yIWr zaA=D8$k#p(qU9~?nvP7aCCPu`c9?#lpuyqMg>j`j{y~!y8xrIgCGKZ3Pov>ni@;d6%(ssExv(NDp`@hjFqr1$amHFt<)2*T&*X5Hu4_3zq^IGq>Zfs|aJi)R^LDuCSZK1&vZ=_5H_llFyxzTXi>U=bT?oIHIIGrIK#bpehk zO)Y1nPHsEqyy!VHXn!1)dIVtG5<@YW-S)?tEvrqo=#`I!5#g+ZIS>}N=ngAtq2+KjHQ!Y1$ zn;MrALu86=@MYx^y&#R0EeqWi-pHds?`y&>-b$gu(GC$Ow83G>iq@qOo)<9ivkFf> zyG@173*_wC3)Po4>;K5!GC$NgtWg#m_$4#PV1qMVxY41jTC}S!cr`y63hZb~|A>S&yjwkv?Od?}fJ=H!Wj$1`|#l_U6 z8DG|;v1^Ok^1H0o-*f6cY9nvDI0)A7657G%vh0%NWkRRo2`90y+|^td+}h4F9CKX( z9xVL1^iwdp(}3BlbodN2G0JdAd#ujoP&C|UKXI%&PXkxMH8Bl>-wKVpH^q5@p`8nH zK>O;fl1cPLF17OnbdfK*%_nhr6%ksGdo2fZaz2{+BhC0I&}C2#SFT2>e#vJLKh{<< z5ToGT0w3IMKR#2HbCG0<075mui|AN3`$@UNYxYqs$;bWvqHN#B=l%5It!o^bxL#>^ zyzC`45I=?(CX3QR&uz1!`P{K>4^8WfnLwNpx#nMC*+qL4}teSpT zI+F$*(pR+hk`JWydhlXMZW3YplXb+z)n!_{bs@;eO)u zBIzu_{~N|@h`o(#kQ!g9zr<1O2SKdc3cX@`ruqu27>N&$Yb(l@^Xi`V$!Of=*8 zAqCoBi9dvKG0H#+T1+b#2>m_J!(hM@c0Dl#%{j1Op8@y`033YoDjQwqr%7!4#z(Qg zv5@aSCwVCmFJyK1;xKNQ{W@^7g;=+SJ$W1_KvDJNNmV35fE32=5v?S6UhM%!2gYq? zs%P4sn0lW1Dxr|cN6P?g?%9q1nVgw_8DhInzgZ?^sTGH#Hh}+i{o3!LdbAh^qIP6` zv6tp}XLl~ Date: Mon, 25 Nov 2019 15:21:11 +0800 Subject: [PATCH 09/96] Disable elm and TS Angular 4 tests (#4602) * disable elm tests * disable ts angular 4 tests --- .travis.yml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index e7eccb2c0ff..973a0dc3ce8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,7 +62,7 @@ before_install: - gem install bundler - npm install -g typescript - npm install -g npm - - npm install -g elm@0.18.0-exp5 + #- npm install -g elm@0.18.0-exp5 - npm config set registry http://registry.npmjs.org/ # set python 3.6.3 as default - source ~/virtualenv/python3.6/bin/activate diff --git a/pom.xml b/pom.xml index 4a2446c44be..af352facc95 100644 --- a/pom.xml +++ b/pom.xml @@ -1042,7 +1042,7 @@ samples/client/petstore/bash samples/client/petstore/c samples/client/petstore/cpp-qt5 - samples/client/petstore/elm-0.18 + samples/client/petstore/rust samples/client/petstore/php/OpenAPIClient-php @@ -1072,8 +1072,8 @@ - samples/client/petstore/typescript-angular-v4/npm - samples/client/petstore/typescript-angular-v4.3/npm + samples/client/petstore/typescript-angular-v6-provided-in-root samples/client/petstore/typescript-angular-v7-provided-in-root samples/server/petstore/rust-server From dc4296819aa9fd64a752a58f37ebed73a2fdac7f Mon Sep 17 00:00:00 2001 From: sullis Date: Mon, 25 Nov 2019 02:32:15 -0500 Subject: [PATCH 10/96] kotlin 1.3.60 (#4598) --- modules/openapi-generator/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index a60ebba1429..996fb2e65b9 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -200,7 +200,7 @@ 1.0.2 2.9.10 2.9.10 - 1.3.41 + 1.3.60 From eff94da9c9d0808b31d224ebd3c0b6f11f0fbd6b Mon Sep 17 00:00:00 2001 From: Tasuku Tozawa Date: Mon, 25 Nov 2019 16:42:11 +0900 Subject: [PATCH 11/96] [Swift] Convert default value of enum with not string type to string (#4481) * Convert not string enum default value to string by toString. * Add some test cases for enum's default value. * Convert string default value to enum var name format. * sync master, update samples --- .../codegen/languages/Swift4Codegen.java | 6 +- .../codegen/swift4/Swift4ModelEnumTest.java | 81 ++++++++++++++++++- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 16 ++-- .../petstore/swift4/default/docs/FakeAPI.md | 16 ++-- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 16 ++-- .../swift4/objcCompatible/docs/FakeAPI.md | 16 ++-- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 16 ++-- .../swift4/promisekitLibrary/docs/FakeAPI.md | 16 ++-- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 16 ++-- .../swift4/rxswiftLibrary/docs/FakeAPI.md | 16 ++-- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 16 ++-- .../swift4/unwrapRequired/docs/FakeAPI.md | 16 ++-- 12 files changed, 163 insertions(+), 84 deletions(-) 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 da3b7078def..43c1ae6ec89 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 @@ -555,7 +555,11 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { public String toDefaultValue(Schema p) { if (p.getEnum() != null && !p.getEnum().isEmpty()) { if (p.getDefault() != null) { - return "." + escapeText((String) p.getDefault()); + if (ModelUtils.isStringSchema(p)) { + return "." + toEnumVarName(escapeText((String) p.getDefault()), p.getType()); + } else { + return "." + toEnumVarName(escapeText(p.getDefault().toString()), p.getType()); + } } } if (ModelUtils.isIntegerSchema(p) || ModelUtils.isNumberSchema(p) || ModelUtils.isBooleanSchema(p)) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4ModelEnumTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4ModelEnumTest.java index 9dc34cf3261..7991c70d990 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4ModelEnumTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4ModelEnumTest.java @@ -18,6 +18,8 @@ package org.openapitools.codegen.swift4; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.IntegerSchema; +import io.swagger.v3.oas.models.media.NumberSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.StringSchema; import org.openapitools.codegen.CodegenModel; @@ -28,12 +30,13 @@ import org.openapitools.codegen.languages.Swift4Codegen; import org.testng.Assert; import org.testng.annotations.Test; +import java.math.BigDecimal; import java.util.Arrays; @SuppressWarnings("static-method") public class Swift4ModelEnumTest { - @Test(description = "convert a java model with an enum and a default value") - public void converterTest() { + @Test(description = "convert a java model with an string enum and a default value") + public void convertStringDefaultValueTest() { final StringSchema enumSchema = new StringSchema(); enumSchema.setEnum(Arrays.asList("VALUE1", "VALUE2", "VALUE3")); enumSchema.setDefault("VALUE2"); @@ -51,8 +54,80 @@ public class Swift4ModelEnumTest { Assert.assertEquals(enumVar.dataType, "String"); Assert.assertEquals(enumVar.datatypeWithEnum, "Name"); Assert.assertEquals(enumVar.name, "name"); - Assert.assertEquals(enumVar.defaultValue, ".VALUE2"); + Assert.assertEquals(enumVar.defaultValue, ".value2"); Assert.assertEquals(enumVar.baseType, "String"); Assert.assertTrue(enumVar.isEnum); } + + @Test(description = "convert a java model with an reserved word string enum and a default value") + public void convertReservedWordStringDefaultValueTest() { + final StringSchema enumSchema = new StringSchema(); + enumSchema.setEnum(Arrays.asList("1st", "2nd", "3rd")); + enumSchema.setDefault("2nd"); + final Schema model = new Schema().type("object").addProperties("name", enumSchema); + + final DefaultCodegen codegen = new Swift4Codegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty enumVar = cm.vars.get(0); + Assert.assertEquals(enumVar.baseName, "name"); + Assert.assertEquals(enumVar.dataType, "String"); + Assert.assertEquals(enumVar.datatypeWithEnum, "Name"); + Assert.assertEquals(enumVar.name, "name"); + Assert.assertEquals(enumVar.defaultValue, "._2nd"); + Assert.assertEquals(enumVar.baseType, "String"); + Assert.assertTrue(enumVar.isEnum); + } + + @Test(description = "convert a java model with an integer enum and a default value") + public void convertIntegerDefaultValueTest() { + final IntegerSchema enumSchema = new IntegerSchema(); + enumSchema.setEnum(Arrays.asList(1, 2, 3)); + enumSchema.setDefault(2); + final Schema model = new Schema().type("object").addProperties("name", enumSchema); + + final DefaultCodegen codegen = new Swift4Codegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty enumVar = cm.vars.get(0); + Assert.assertEquals(enumVar.baseName, "name"); + Assert.assertEquals(enumVar.dataType, "Int"); + Assert.assertEquals(enumVar.datatypeWithEnum, "Name"); + Assert.assertEquals(enumVar.name, "name"); + Assert.assertEquals(enumVar.defaultValue, "._2"); + Assert.assertEquals(enumVar.baseType, "Int"); + Assert.assertTrue(enumVar.isEnum); + } + + @Test(description = "convert a java model with an number enum and a default value") + public void convertNumberDefaultValueTest() { + final NumberSchema enumSchema = new NumberSchema(); + enumSchema.setEnum(Arrays.asList(new BigDecimal(10), new BigDecimal(100), new BigDecimal(1000))); + enumSchema.setDefault(new BigDecimal((100))); + final Schema model = new Schema().type("object").addProperties("name", enumSchema); + + final DefaultCodegen codegen = new Swift4Codegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty enumVar = cm.vars.get(0); + Assert.assertEquals(enumVar.baseName, "name"); + Assert.assertEquals(enumVar.dataType, "Double"); + Assert.assertEquals(enumVar.datatypeWithEnum, "Name"); + Assert.assertEquals(enumVar.name, "name"); + Assert.assertEquals(enumVar.defaultValue, "._100"); + Assert.assertEquals(enumVar.baseType, "Double"); + Assert.assertTrue(enumVar.isEnum); + } } diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index d1f658b08d8..e2b1c0d9c58 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -379,13 +379,13 @@ open class FakeAPI { 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 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, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { @@ -403,13 +403,13 @@ open class FakeAPI { - 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 { diff --git a/samples/client/petstore/swift4/default/docs/FakeAPI.md b/samples/client/petstore/swift4/default/docs/FakeAPI.md index 18fbf8147d8..49d4d3fb6a1 100644 --- a/samples/client/petstore/swift4/default/docs/FakeAPI.md +++ b/samples/client/petstore/swift4/default/docs/FakeAPI.md @@ -453,13 +453,13 @@ To test enum parameters 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 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 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 .$) -let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .-efg) +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 @@ -479,13 +479,13 @@ FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHea 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] + **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] + **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 .$] - **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .-efg] + **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 diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index d1f658b08d8..e2b1c0d9c58 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -379,13 +379,13 @@ open class FakeAPI { 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 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, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { @@ -403,13 +403,13 @@ open class FakeAPI { - 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 { diff --git a/samples/client/petstore/swift4/objcCompatible/docs/FakeAPI.md b/samples/client/petstore/swift4/objcCompatible/docs/FakeAPI.md index f90c5bbc98d..c7e27b881fd 100644 --- a/samples/client/petstore/swift4/objcCompatible/docs/FakeAPI.md +++ b/samples/client/petstore/swift4/objcCompatible/docs/FakeAPI.md @@ -453,13 +453,13 @@ To test enum parameters 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 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 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 .$) -let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .-efg) +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 @@ -479,13 +479,13 @@ FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHea 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] + **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] + **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 .$] - **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .-efg] + **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 diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index d5c10dc1187..106fcd274be 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -426,13 +426,13 @@ open class FakeAPI { 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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: 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) -> Promise { @@ -452,13 +452,13 @@ open class FakeAPI { - 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 { diff --git a/samples/client/petstore/swift4/promisekitLibrary/docs/FakeAPI.md b/samples/client/petstore/swift4/promisekitLibrary/docs/FakeAPI.md index 15f8e5f9f69..bf8e514f03d 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift4/promisekitLibrary/docs/FakeAPI.md @@ -429,13 +429,13 @@ To test enum parameters 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 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 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 .$) -let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .-efg) +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).then { @@ -452,13 +452,13 @@ FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHea 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] + **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] + **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 .$] - **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .-efg] + **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 diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 474af3c46cc..8c8b4ae5f6e 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -442,13 +442,13 @@ open class FakeAPI { 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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: 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) -> Observable { @@ -470,13 +470,13 @@ open class FakeAPI { - 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/docs/FakeAPI.md b/samples/client/petstore/swift4/rxswiftLibrary/docs/FakeAPI.md index a67ef1c2815..a9a6c32c98b 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift4/rxswiftLibrary/docs/FakeAPI.md @@ -379,13 +379,13 @@ To test enum parameters 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 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 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 .$) -let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .-efg) +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) // TODO RxSwift sample code not yet implemented. To contribute, please open a ticket via http://github.com/OpenAPITools/openapi-generator/issues/new ``` @@ -395,13 +395,13 @@ let enumFormString = "enumFormString_example" // String | Form parameter enum te 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] + **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] + **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 .$] - **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .-efg] + **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 diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index d1f658b08d8..e2b1c0d9c58 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -379,13 +379,13 @@ open class FakeAPI { 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 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, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { @@ -403,13 +403,13 @@ open class FakeAPI { - 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 { diff --git a/samples/client/petstore/swift4/unwrapRequired/docs/FakeAPI.md b/samples/client/petstore/swift4/unwrapRequired/docs/FakeAPI.md index 18fbf8147d8..49d4d3fb6a1 100644 --- a/samples/client/petstore/swift4/unwrapRequired/docs/FakeAPI.md +++ b/samples/client/petstore/swift4/unwrapRequired/docs/FakeAPI.md @@ -453,13 +453,13 @@ To test enum parameters 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 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 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 .$) -let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .-efg) +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 @@ -479,13 +479,13 @@ FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHea 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] + **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] + **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 .$] - **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .-efg] + **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 From 40799937fb69e66b5579c72b4291a0d1b2bd180f Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Mon, 25 Nov 2019 15:58:51 +0800 Subject: [PATCH 12/96] add go.mod as supporting files to go-server (#4592) --- .../openapitools/codegen/languages/GoServerCodegen.java | 1 + .../src/main/resources/go-server/go.mod.mustache | 5 +++++ .../src/main/resources/go-server/main.mustache | 9 +-------- samples/server/petstore/go-api-server/go.mod | 5 +++++ samples/server/petstore/go-api-server/main.go | 9 +-------- 5 files changed, 13 insertions(+), 16 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/go-server/go.mod.mustache create mode 100644 samples/server/petstore/go-api-server/go.mod 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 db2f36d1f32..211dcdadb99 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 @@ -165,6 +165,7 @@ public class GoServerCodegen extends AbstractGoCodegen { supportingFiles.add(new SupportingFile("openapi.mustache", "api", "openapi.yaml")); supportingFiles.add(new SupportingFile("main.mustache", "", "main.go")); supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile")); + supportingFiles.add(new SupportingFile("go.mod.mustache", "", "go.mod")); supportingFiles.add(new SupportingFile("routers.mustache", sourceFolder, "routers.go")); supportingFiles.add(new SupportingFile("logger.mustache", sourceFolder, "logger.go")); supportingFiles.add(new SupportingFile("api.mustache", sourceFolder, "api.go")); 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 new file mode 100644 index 00000000000..18f7e897253 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/go-server/go.mod.mustache @@ -0,0 +1,5 @@ +module {{gitHost}}/{{gitUserId}}/{{gitRepoId}} + +go 1.13 + +require github.com/gorilla/mux v1.7.3 diff --git a/modules/openapi-generator/src/main/resources/go-server/main.mustache b/modules/openapi-generator/src/main/resources/go-server/main.mustache index 377e7122e1b..ab7516375a8 100644 --- a/modules/openapi-generator/src/main/resources/go-server/main.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/main.mustache @@ -5,14 +5,7 @@ import ( "log" "net/http" - // WARNING! - // Change this to a fully-qualified import path - // once you place this file into your project. - // For example, - // - // sw "github.com/myname/myrepo/{{sourceFolder}}" - // - {{packageName}} "./{{sourceFolder}}" + {{packageName}} "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/{{sourceFolder}}" ) func main() { diff --git a/samples/server/petstore/go-api-server/go.mod b/samples/server/petstore/go-api-server/go.mod new file mode 100644 index 00000000000..5b6a67c74e2 --- /dev/null +++ b/samples/server/petstore/go-api-server/go.mod @@ -0,0 +1,5 @@ +module github.com/GIT_USER_ID/GIT_REPO_ID + +go 1.13 + +require github.com/gorilla/mux v1.7.3 diff --git a/samples/server/petstore/go-api-server/main.go b/samples/server/petstore/go-api-server/main.go index f8b3e76d13c..ddc5258297c 100644 --- a/samples/server/petstore/go-api-server/main.go +++ b/samples/server/petstore/go-api-server/main.go @@ -13,14 +13,7 @@ import ( "log" "net/http" - // WARNING! - // Change this to a fully-qualified import path - // once you place this file into your project. - // For example, - // - // sw "github.com/myname/myrepo/go" - // - petstoreserver "./go" + petstoreserver "github.com/GIT_USER_ID/GIT_REPO_ID/go" ) func main() { From d0e838ee02ec6f60941932bdaf81e1141b4388e5 Mon Sep 17 00:00:00 2001 From: Jason Culverhouse Date: Mon, 25 Nov 2019 00:08:18 -0800 Subject: [PATCH 13/96] Maintains state of hasMore when security is filtered (#4585) --- .../codegen/DefaultGenerator.java | 1 + .../codegen/java/JavaClientCodegenTest.java | 20 ++++ .../src/test/resources/3_0/issue4584.yaml | 110 ++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue4584.yaml 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 7f56122e52c..2d263ed3867 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 @@ -1295,6 +1295,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { // We have to create a new auth method instance because the original object must // not be modified. CodegenSecurity opSecurity = security.filterByScopeNames(opScopes); + opSecurity.hasMore = security.hasMore; result.add(opSecurity); filtered = true; break; 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 2f8a8d31c9b..aa11a462ca0 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 @@ -491,6 +491,26 @@ public class JavaClientCodegenTest { assertEquals(postScopes.size(), 2, "POST scopes don't match. actual:" + postScopes); } + @Test + public void testAuthorizationsHasMoreWhenFiltered() { + final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/issue4584.yaml"); + + final DefaultGenerator defaultGenerator = new DefaultGenerator(); + + final ClientOptInput clientOptInput = new ClientOptInput(); + clientOptInput.setOpenAPI(openAPI); + clientOptInput.setConfig(new JavaClientCodegen()); + + defaultGenerator.opts(clientOptInput); + final List codegenOperations = defaultGenerator.processPaths(openAPI.getPaths()).get("Pet"); + + final CodegenOperation getCodegenOperation = codegenOperations.stream().filter(it -> it.httpMethod.equals("GET")).collect(Collectors.toList()).get(0); + assertTrue(getCodegenOperation.hasAuthMethods); + assertEquals(getCodegenOperation.authMethods.size(), 2); + assertTrue(getCodegenOperation.authMethods.get(0).hasMore); + Assert.assertFalse(getCodegenOperation.authMethods.get(1).hasMore); + } + @Test public void testFreeFormObjects() { final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/issue796.yaml"); diff --git a/modules/openapi-generator/src/test/resources/3_0/issue4584.yaml b/modules/openapi-generator/src/test/resources/3_0/issue4584.yaml new file mode 100644 index 00000000000..e1001fab1a4 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue4584.yaml @@ -0,0 +1,110 @@ +openapi: 3.0.0 +servers: + - url: 'http://petstore.swagger.io/v2' +info: + description: Used for verification of AuthorizationScope resolution issue + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +paths: + /pet: + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + - petstore_beta_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + '/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/json: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - petstore_auth: + - 'read:pets' + - petstore_beta_auth: + - 'read:pets' +components: + securitySchemes: + petstore_auth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://petstore.swagger.io/oauth2/auth + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + tokenUrl: https://petstore.swagger.io/oauth2/token + petstore_beta_auth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://petstore.beta.swagger.io/oauth2/auth + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + tokenUrl: https://petstore.beta.swagger.io/oauth2/token + schemas: + Pet: + title: a Pet + description: A pet for sale in the pet store + type: object + required: + - name + - photoUrls + properties: + id: + type: integer + format: int64 + name: + type: string + example: doggie + photoUrls: + type: array + items: + type: string + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold From d5c7c9c9b7903e922db5410bff26a305be729671 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Mon, 25 Nov 2019 09:19:50 +0000 Subject: [PATCH 14/96] [swift] add option for non public api (#4556) * [swift] implement non public api * [swift] add petstore for non public api * [swift] fix error in extension that cannot be internal * [swift] update docs --- bin/swift4-petstore-all.sh | 1 + bin/swift4-petstore-nonPublicApi.json | 7 + bin/swift4-petstore-nonPublicApi.sh | 42 ++ docs/generators/swift4.md | 1 + .../codegen/languages/Swift4Codegen.java | 16 + .../main/resources/swift4/APIHelper.mustache | 12 +- .../src/main/resources/swift4/APIs.mustache | 34 +- .../swift4/AlamofireImplementations.mustache | 22 +- .../resources/swift4/CodableHelper.mustache | 10 +- .../resources/swift4/Configuration.mustache | 4 +- .../main/resources/swift4/Extensions.mustache | 16 +- .../swift4/JSONEncodableEncoding.mustache | 6 +- .../swift4/JSONEncodingHelper.mustache | 6 +- .../src/main/resources/swift4/Models.mustache | 14 +- .../src/main/resources/swift4/api.mustache | 12 +- .../main/resources/swift4/api_doc.mustache | 6 +- .../main/resources/swift4/modelArray.mustache | 2 +- .../main/resources/swift4/modelEnum.mustache | 2 +- .../modelInlineEnumDeclaration.mustache | 2 +- .../resources/swift4/modelObject.mustache | 20 +- .../options/Swift4OptionsProvider.java | 2 + .../codegen/swift4/Swift4OptionsTest.java | 2 + .../petstore/swift4/nonPublicApi/.gitignore | 63 ++ .../nonPublicApi/.openapi-generator-ignore | 23 + .../nonPublicApi/.openapi-generator/VERSION | 1 + .../contents.xcworkspacedata | 7 + .../petstore/swift4/nonPublicApi/Cartfile | 1 + .../petstore/swift4/nonPublicApi/Info.plist | 22 + .../swift4/nonPublicApi/Package.resolved | 16 + .../swift4/nonPublicApi/Package.swift | 27 + .../nonPublicApi/PetstoreClient.podspec | 14 + .../PetstoreClient.xcodeproj/project.pbxproj | 576 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/PetstoreClient.xcscheme | 99 +++ .../Classes/OpenAPIs/APIHelper.swift | 70 ++ .../Classes/OpenAPIs/APIs.swift | 61 ++ .../OpenAPIs/APIs/AnotherFakeAPI.swift | 43 ++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 576 +++++++++++++++ .../APIs/FakeClassnameTags123API.swift | 46 ++ .../Classes/OpenAPIs/APIs/PetAPI.swift | 394 +++++++++++ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 146 ++++ .../Classes/OpenAPIs/APIs/UserAPI.swift | 295 ++++++++ .../OpenAPIs/AlamofireImplementations.swift | 450 ++++++++++++ .../Classes/OpenAPIs/CodableHelper.swift | 71 ++ .../Classes/OpenAPIs/Configuration.swift | 15 + .../Classes/OpenAPIs/Extensions.swift | 177 +++++ .../OpenAPIs/JSONEncodableEncoding.swift | 54 ++ .../Classes/OpenAPIs/JSONEncodingHelper.swift | 43 ++ .../Classes/OpenAPIs/Models.swift | 36 + .../Models/AdditionalPropertiesClass.swift | 25 + .../Classes/OpenAPIs/Models/Animal.swift | 20 + .../Classes/OpenAPIs/Models/AnimalFarm.swift | 10 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 22 + .../Models/ArrayOfArrayOfNumberOnly.swift | 22 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 22 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 28 + .../OpenAPIs/Models/Capitalization.swift | 38 + .../Classes/OpenAPIs/Models/Cat.swift | 22 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 18 + .../Classes/OpenAPIs/Models/Category.swift | 20 + .../Classes/OpenAPIs/Models/ClassModel.swift | 20 + .../Classes/OpenAPIs/Models/Client.swift | 18 + .../Classes/OpenAPIs/Models/Dog.swift | 22 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 18 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 33 + .../Classes/OpenAPIs/Models/EnumClass.swift | 14 + .../Classes/OpenAPIs/Models/EnumTest.swift | 52 ++ .../Classes/OpenAPIs/Models/File.swift | 21 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 20 + .../Classes/OpenAPIs/Models/FormatTest.swift | 42 ++ .../OpenAPIs/Models/HasOnlyReadOnly.swift | 20 + .../Classes/OpenAPIs/Models/List.swift | 22 + .../Classes/OpenAPIs/Models/MapTest.swift | 35 + ...opertiesAndAdditionalPropertiesClass.swift | 22 + .../OpenAPIs/Models/Model200Response.swift | 27 + .../Classes/OpenAPIs/Models/Name.swift | 33 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 22 + .../Classes/OpenAPIs/Models/Order.swift | 34 + .../OpenAPIs/Models/OuterComposite.swift | 28 + .../Classes/OpenAPIs/Models/OuterEnum.swift | 14 + .../Classes/OpenAPIs/Models/Pet.swift | 34 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 20 + .../Classes/OpenAPIs/Models/Return.swift | 24 + .../OpenAPIs/Models/SpecialModelName.swift | 22 + .../OpenAPIs/Models/StringBooleanMap.swift | 45 ++ .../Classes/OpenAPIs/Models/Tag.swift | 20 + .../OpenAPIs/Models/TypeHolderDefault.swift | 34 + .../OpenAPIs/Models/TypeHolderExample.swift | 34 + .../Classes/OpenAPIs/Models/User.swift | 33 + .../petstore/swift4/nonPublicApi/README.md | 141 ++++ .../docs/AdditionalPropertiesAnyType.md | 0 .../docs/AdditionalPropertiesArray.md | 0 .../docs/AdditionalPropertiesBoolean.md | 0 .../docs/AdditionalPropertiesClass.md | 11 + .../docs/AdditionalPropertiesInteger.md | 0 .../docs/AdditionalPropertiesNumber.md | 0 .../docs/AdditionalPropertiesObject.md | 0 .../docs/AdditionalPropertiesString.md | 0 .../swift4/nonPublicApi/docs/Animal.md | 11 + .../swift4/nonPublicApi/docs/AnimalFarm.md | 9 + .../nonPublicApi/docs/AnotherFakeAPI.md | 59 ++ .../swift4/nonPublicApi/docs/ApiResponse.md | 12 + .../docs/ArrayOfArrayOfNumberOnly.md | 10 + .../nonPublicApi/docs/ArrayOfNumberOnly.md | 10 + .../swift4/nonPublicApi/docs/ArrayTest.md | 12 + .../nonPublicApi/docs/Capitalization.md | 15 + .../petstore/swift4/nonPublicApi/docs/Cat.md | 10 + .../swift4/nonPublicApi/docs/CatAllOf.md | 10 + .../swift4/nonPublicApi/docs/Category.md | 11 + .../swift4/nonPublicApi/docs/ClassModel.md | 10 + .../swift4/nonPublicApi/docs/Client.md | 10 + .../petstore/swift4/nonPublicApi/docs/Dog.md | 10 + .../swift4/nonPublicApi/docs/DogAllOf.md | 10 + .../swift4/nonPublicApi/docs/EnumArrays.md | 11 + .../swift4/nonPublicApi/docs/EnumClass.md | 9 + .../swift4/nonPublicApi/docs/EnumTest.md | 14 + .../swift4/nonPublicApi/docs/FakeAPI.md | 662 ++++++++++++++++++ .../docs/FakeClassnameTags123API.md | 59 ++ .../petstore/swift4/nonPublicApi/docs/File.md | 10 + .../nonPublicApi/docs/FileSchemaTestClass.md | 11 + .../swift4/nonPublicApi/docs/FormatTest.md | 22 + .../nonPublicApi/docs/HasOnlyReadOnly.md | 11 + .../petstore/swift4/nonPublicApi/docs/List.md | 10 + .../swift4/nonPublicApi/docs/MapTest.md | 13 + ...dPropertiesAndAdditionalPropertiesClass.md | 12 + .../nonPublicApi/docs/Model200Response.md | 11 + .../petstore/swift4/nonPublicApi/docs/Name.md | 13 + .../swift4/nonPublicApi/docs/NumberOnly.md | 10 + .../swift4/nonPublicApi/docs/Order.md | 15 + .../nonPublicApi/docs/OuterComposite.md | 12 + .../swift4/nonPublicApi/docs/OuterEnum.md | 9 + .../petstore/swift4/nonPublicApi/docs/Pet.md | 15 + .../swift4/nonPublicApi/docs/PetAPI.md | 469 +++++++++++++ .../swift4/nonPublicApi/docs/ReadOnlyFirst.md | 11 + .../swift4/nonPublicApi/docs/Return.md | 10 + .../nonPublicApi/docs/SpecialModelName.md | 10 + .../swift4/nonPublicApi/docs/StoreAPI.md | 206 ++++++ .../nonPublicApi/docs/StringBooleanMap.md | 9 + .../petstore/swift4/nonPublicApi/docs/Tag.md | 11 + .../nonPublicApi/docs/TypeHolderDefault.md | 14 + .../nonPublicApi/docs/TypeHolderExample.md | 14 + .../petstore/swift4/nonPublicApi/docs/User.md | 17 + .../swift4/nonPublicApi/docs/UserAPI.md | 406 +++++++++++ .../docs/XmlItem.md | 0 .../petstore/swift4/nonPublicApi/git_push.sh | 58 ++ .../petstore/swift4/nonPublicApi/pom.xml | 43 ++ .../petstore/swift4/nonPublicApi/project.yml | 15 + .../swift4/nonPublicApi/run_spmbuild.sh | 3 + .../client/petstore/swift4/swift4_test_all.sh | 1 + 150 files changed, 7113 insertions(+), 84 deletions(-) create mode 100644 bin/swift4-petstore-nonPublicApi.json create mode 100755 bin/swift4-petstore-nonPublicApi.sh create mode 100644 samples/client/petstore/swift4/nonPublicApi/.gitignore create mode 100644 samples/client/petstore/swift4/nonPublicApi/.openapi-generator-ignore create mode 100644 samples/client/petstore/swift4/nonPublicApi/.openapi-generator/VERSION create mode 100644 samples/client/petstore/swift4/nonPublicApi/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 samples/client/petstore/swift4/nonPublicApi/Cartfile create mode 100644 samples/client/petstore/swift4/nonPublicApi/Info.plist create mode 100644 samples/client/petstore/swift4/nonPublicApi/Package.resolved create mode 100644 samples/client/petstore/swift4/nonPublicApi/Package.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient.podspec create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.pbxproj create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIHelper.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift create mode 100644 samples/client/petstore/swift4/nonPublicApi/README.md rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesAnyType.md (100%) rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesArray.md (100%) rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesBoolean.md (100%) create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesClass.md rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesInteger.md (100%) rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesNumber.md (100%) rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesObject.md (100%) rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/AdditionalPropertiesString.md (100%) create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Animal.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/AnimalFarm.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/AnotherFakeAPI.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/ApiResponse.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/ArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/ArrayTest.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Capitalization.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Cat.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/CatAllOf.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Category.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/ClassModel.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Client.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Dog.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/DogAllOf.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/EnumArrays.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/EnumClass.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/EnumTest.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/FakeAPI.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/FakeClassnameTags123API.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/File.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/FileSchemaTestClass.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/FormatTest.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/HasOnlyReadOnly.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/List.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/MapTest.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Model200Response.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Name.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/NumberOnly.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Order.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/OuterComposite.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/OuterEnum.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Pet.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/PetAPI.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/ReadOnlyFirst.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Return.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/SpecialModelName.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/StoreAPI.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/StringBooleanMap.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/Tag.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/TypeHolderDefault.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/TypeHolderExample.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/User.md create mode 100644 samples/client/petstore/swift4/nonPublicApi/docs/UserAPI.md rename samples/client/petstore/swift4/{objcCompatible => nonPublicApi}/docs/XmlItem.md (100%) create mode 100644 samples/client/petstore/swift4/nonPublicApi/git_push.sh create mode 100644 samples/client/petstore/swift4/nonPublicApi/pom.xml create mode 100644 samples/client/petstore/swift4/nonPublicApi/project.yml create mode 100755 samples/client/petstore/swift4/nonPublicApi/run_spmbuild.sh diff --git a/bin/swift4-petstore-all.sh b/bin/swift4-petstore-all.sh index b8d8cd47b26..24697b4fa95 100755 --- a/bin/swift4-petstore-all.sh +++ b/bin/swift4-petstore-all.sh @@ -5,3 +5,4 @@ ./bin/swift4-petstore-rxswift.sh ./bin/swift4-petstore-objcCompatible.sh ./bin/swift4-petstore-unwrapRequired.sh +./bin/swift4-petstore-nonPublicApi.sh diff --git a/bin/swift4-petstore-nonPublicApi.json b/bin/swift4-petstore-nonPublicApi.json new file mode 100644 index 00000000000..c8cf09f065e --- /dev/null +++ b/bin/swift4-petstore-nonPublicApi.json @@ -0,0 +1,7 @@ +{ + "podSummary": "PetstoreClient", + "podHomepage": "https://github.com/openapitools/openapi-generator", + "podAuthors": "", + "projectName": "PetstoreClient", + "nonPublicApi": true +} diff --git a/bin/swift4-petstore-nonPublicApi.sh b/bin/swift4-petstore-nonPublicApi.sh new file mode 100755 index 00000000000..0018a2af49b --- /dev/null +++ b/bin/swift4-petstore-nonPublicApi.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -t modules/openapi-generator/src/main/resources/swift4 -i modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml -g swift4 -c ./bin/swift4-petstore-nonPublicApi.json -o samples/client/petstore/swift4/nonPublicApi --generate-alias-as-model $@" + +java $JAVA_OPTS -jar $executable $ags + +if type "xcodegen" > /dev/null 2>&1; then + cd samples/client/petstore/swift4/nonPublicApi + xcodegen generate +fi + +if type "swiftlint" > /dev/null 2>&1; then + cd samples/client/petstore/swift4/nonPublicApi + swiftlint autocorrect +fi \ No newline at end of file diff --git a/docs/generators/swift4.md b/docs/generators/swift4.md index 3136fb0a7c6..c61fff90d8d 100644 --- a/docs/generators/swift4.md +++ b/docs/generators/swift4.md @@ -11,6 +11,7 @@ sidebar_label: swift4 |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |projectName|Project name in Xcode| |null| |responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift are available.| |null| +|nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)| |null| |unwrapRequired|Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema| |null| |objcCompatible|Add additional properties and methods for Objective-C compatibility (default: false)| |null| |podSource|Source information used for Podspec| |null| 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 43c1ae6ec89..d80c9eaa4f5 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 @@ -59,6 +59,7 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { protected static final String LIBRARY_RX_SWIFT = "RxSwift"; protected static final String[] RESPONSE_LIBRARIES = {LIBRARY_PROMISE_KIT, LIBRARY_RX_SWIFT}; protected String projectName = "OpenAPIClient"; + protected boolean nonPublicApi = false; protected boolean unwrapRequired; protected boolean objcCompatible = false; protected boolean lenientTypeCast = false; @@ -208,6 +209,9 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { "Optionally use libraries to manage response. Currently " + StringUtils.join(RESPONSE_LIBRARIES, ", ") + " are available.")); + cliOptions.add(new CliOption(CodegenConstants.NON_PUBLIC_API, + CodegenConstants.NON_PUBLIC_API_DESC + + "(default: false)")); cliOptions.add(new CliOption(UNWRAP_REQUIRED, "Treat 'required' properties in response as non-optional " + "(which would crash the app if api returns null as opposed " @@ -329,6 +333,14 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { } sourceFolder = projectName + File.separator + sourceFolder; + // Setup nonPublicApi option, which generates code with reduced access + // modifiers; allows embedding elsewhere without exposing non-public API calls + // to consumers + if (additionalProperties.containsKey(CodegenConstants.NON_PUBLIC_API)) { + setNonPublicApi(convertPropertyToBooleanAndWriteBack(CodegenConstants.NON_PUBLIC_API)); + } + additionalProperties.put(CodegenConstants.NON_PUBLIC_API, nonPublicApi); + // Setup unwrapRequired option, which makes all the // properties with "required" non-optional if (additionalProperties.containsKey(UNWRAP_REQUIRED)) { @@ -718,6 +730,10 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { this.projectName = projectName; } + public void setNonPublicApi(boolean nonPublicApi) { + this.nonPublicApi = nonPublicApi; + } + public void setUnwrapRequired(boolean unwrapRequired) { this.unwrapRequired = unwrapRequired; } diff --git a/modules/openapi-generator/src/main/resources/swift4/APIHelper.mustache b/modules/openapi-generator/src/main/resources/swift4/APIHelper.mustache index d94614b34fc..368722c9fe9 100644 --- a/modules/openapi-generator/src/main/resources/swift4/APIHelper.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/APIHelper.mustache @@ -6,8 +6,8 @@ import Foundation -public struct APIHelper { - public static func rejectNil(_ source: [String:Any?]) -> [String:Any]? { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct APIHelper { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} 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 @@ -20,7 +20,7 @@ public struct APIHelper { return destination } - public static func rejectNilHeaders(_ source: [String:Any?]) -> [String:String] { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNilHeaders(_ source: [String:Any?]) -> [String:String] { return source.reduce(into: [String: String]()) { (result, item) in if let collection = item.value as? Array { result[item.key] = collection.filter({ $0 != nil }).map{ "\($0!)" }.joined(separator: ",") @@ -30,7 +30,7 @@ public struct APIHelper { } } - public static func convertBoolToString(_ source: [String: Any]?) -> [String:Any]? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func convertBoolToString(_ source: [String: Any]?) -> [String:Any]? { guard let source = source else { return nil } @@ -45,14 +45,14 @@ public struct APIHelper { }) } - public static func mapValueToPathItem(_ source: Any) -> Any { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func mapValueToPathItem(_ source: Any) -> Any { if let collection = source as? Array { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source } - public static func mapValuesToQueryItems(_ source: [String:Any?]) -> [URLQueryItem]? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} 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? Array { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") diff --git a/modules/openapi-generator/src/main/resources/swift4/APIs.mustache b/modules/openapi-generator/src/main/resources/swift4/APIs.mustache index 6ed1abe5694..c523102bca6 100644 --- a/modules/openapi-generator/src/main/resources/swift4/APIs.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/APIs.mustache @@ -6,25 +6,25 @@ import Foundation -open class {{projectName}}API { - public static var basePath = "{{{basePath}}}" - public static var credential: URLCredential? - public static var customHeaders: [String:String] = [:] - public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}}API { + {{#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] = [:] + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() } -open class RequestBuilder { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class RequestBuilder { var credential: URLCredential? var headers: [String:String] - public let parameters: [String:Any]? - public let isBody: Bool - public let method: String - public let URLString: String + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let parameters: [String:Any]? + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let isBody: Bool + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let method: String + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let URLString: String /// Optional block to obtain a reference to the request's progress instance when available. - public var onProgressReady: ((Progress) -> ())? + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var onProgressReady: ((Progress) -> ())? - required public init(method: String, URLString: String, parameters: [String:Any]?, isBody: Bool, headers: [String:String] = [:]) { + required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String:Any]?, isBody: Bool, headers: [String:String] = [:]) { self.method = method self.URLString = URLString self.parameters = parameters @@ -34,28 +34,28 @@ open class RequestBuilder { addHeaders({{projectName}}API.customHeaders) } - open func addHeaders(_ aHeaders:[String:String]) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func addHeaders(_ aHeaders:[String:String]) { for (header, value) in aHeaders { headers[header] = value } } - open func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { } + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { } - public func addHeader(name: String, value: String) -> Self { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func addHeader(name: String, value: String) -> Self { if !value.isEmpty { headers[name] = value } return self } - open func addCredential() -> Self { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func addCredential() -> Self { self.credential = {{projectName}}API.credential return self } } -public protocol RequestBuilderFactory { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} protocol RequestBuilderFactory { func getNonDecodableBuilder() -> RequestBuilder.Type func getBuilder() -> RequestBuilder.Type } diff --git a/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache index dac40e9a31c..ee3d462a457 100644 --- a/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache @@ -28,7 +28,7 @@ private struct SynchronizedDictionary { target: nil ) - public subscript(key: K) -> V? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} subscript(key: K) -> V? { get { var value: V? @@ -49,8 +49,8 @@ private struct SynchronizedDictionary { // Store manager to retain its reference private var managerStore = SynchronizedDictionary() -open class AlamofireRequestBuilder: RequestBuilder { - required public init(method: String, URLString: String, parameters: [String : Any]?, isBody: Bool, headers: [String : String] = [:]) { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class AlamofireRequestBuilder: RequestBuilder { + required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String : Any]?, isBody: Bool, headers: [String : String] = [:]) { super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) } @@ -58,7 +58,7 @@ open class AlamofireRequestBuilder: RequestBuilder { May be overridden by a subclass if you want to control the session configuration. */ - open func createSessionManager() -> Alamofire.SessionManager { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createSessionManager() -> Alamofire.SessionManager { let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = buildHeaders() return Alamofire.SessionManager(configuration: configuration) @@ -67,7 +67,7 @@ open class AlamofireRequestBuilder: RequestBuilder { /** May be overridden by a subclass if you want to custom request constructor. */ - open func createURLRequest() -> URLRequest? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createURLRequest() -> URLRequest? { let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil } return try? encoding.encode(originalRequest, with: parameters) @@ -80,7 +80,7 @@ open class AlamofireRequestBuilder: RequestBuilder { 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? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func contentTypeForFormPart(fileURL: URL) -> String? { return nil } @@ -88,11 +88,11 @@ open class AlamofireRequestBuilder: RequestBuilder { May be overridden by a subclass if you want to control the request configuration (e.g. to override the cache policy). */ - open func makeRequest(manager: SessionManager, method: HTTPMethod, encoding: ParameterEncoding, headers: [String:String]) -> DataRequest { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func makeRequest(manager: SessionManager, method: HTTPMethod, encoding: ParameterEncoding, headers: [String:String]) -> DataRequest { return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: headers) } - override open func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { let managerId:String = UUID().uuidString // Create a new manager for each request to customize its request header let manager = createSessionManager() @@ -268,7 +268,7 @@ open class AlamofireRequestBuilder: RequestBuilder { } } - open func buildHeaders() -> [String: String] { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func buildHeaders() -> [String: String] { var httpHeaders = SessionManager.defaultHTTPHeaders for (key, value) in self.headers { httpHeaders[key] = value @@ -337,14 +337,14 @@ fileprivate enum DownloadException : Error { case requestMissingURL } -public enum AlamofireDecodableRequestBuilderError: Error { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum AlamofireDecodableRequestBuilderError: Error { case emptyDataResponse case nilHTTPResponse case jsonDecoding(DecodingError) case generalError(Error) } -open class AlamofireDecodableRequestBuilder: AlamofireRequestBuilder { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class AlamofireDecodableRequestBuilder: AlamofireRequestBuilder { override fileprivate func processRequest(request: DataRequest, _ managerId: String, _ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { if let credential = self.credential { diff --git a/modules/openapi-generator/src/main/resources/swift4/CodableHelper.mustache b/modules/openapi-generator/src/main/resources/swift4/CodableHelper.mustache index 584de8c3d57..b0db903483b 100644 --- a/modules/openapi-generator/src/main/resources/swift4/CodableHelper.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/CodableHelper.mustache @@ -7,13 +7,13 @@ import Foundation -public typealias EncodeResult = (data: Data?, error: Error?) +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias EncodeResult = (data: Data?, error: Error?) -open class CodableHelper { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class CodableHelper { - public static var dateformatter: DateFormatter? + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var dateformatter: DateFormatter? - open class func decode(_ type: T.Type, from data: Data) -> (decodableObj: T?, error: Error?) where T : Decodable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func decode(_ type: T.Type, from data: Data) -> (decodableObj: T?, error: Error?) where T : Decodable { var returnedDecodable: T? = nil var returnedError: Error? = nil @@ -39,7 +39,7 @@ open class CodableHelper { return (returnedDecodable, returnedError) } - open class func encode(_ value: T, prettyPrint: Bool = false) -> EncodeResult where T : Encodable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func encode(_ value: T, prettyPrint: Bool = false) -> EncodeResult where T : Encodable { var returnedData: Data? var returnedError: Error? = nil diff --git a/modules/openapi-generator/src/main/resources/swift4/Configuration.mustache b/modules/openapi-generator/src/main/resources/swift4/Configuration.mustache index 516590da5d9..92a05e46c67 100644 --- a/modules/openapi-generator/src/main/resources/swift4/Configuration.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/Configuration.mustache @@ -6,10 +6,10 @@ import Foundation -open class Configuration { +{{#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. - public 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" } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache index a4ed6ae9c02..3ad31bf941c 100644 --- a/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache @@ -113,24 +113,24 @@ extension String: CodingKey { extension KeyedEncodingContainerProtocol { - public mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T : Encodable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} 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 { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} 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 { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} 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 { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T : Encodable { if let pairs = pairs { try encodeMap(pairs) } @@ -140,7 +140,7 @@ extension KeyedEncodingContainerProtocol { extension KeyedDecodingContainerProtocol { - public func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T : Decodable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T : Decodable { var tmpArray = [T]() var nestedContainer = try nestedUnkeyedContainer(forKey: key) @@ -152,7 +152,7 @@ extension KeyedDecodingContainerProtocol { return tmpArray } - public func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T : Decodable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T : Decodable { var tmpArray: [T]? = nil if contains(key) { @@ -162,7 +162,7 @@ extension KeyedDecodingContainerProtocol { return tmpArray } - public func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T : Decodable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T : Decodable { var map: [Self.Key : T] = [:] for key in allKeys { @@ -178,7 +178,7 @@ extension KeyedDecodingContainerProtocol { } {{#usePromiseKit}}extension RequestBuilder { - public func execute() -> Promise> { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func execute() -> Promise> { let deferred = Promise>.pending() self.execute { (response: Response?, error: Error?) in if let response = response { diff --git a/modules/openapi-generator/src/main/resources/swift4/JSONEncodableEncoding.mustache b/modules/openapi-generator/src/main/resources/swift4/JSONEncodableEncoding.mustache index ca05906d420..69636d84635 100644 --- a/modules/openapi-generator/src/main/resources/swift4/JSONEncodableEncoding.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/JSONEncodableEncoding.mustache @@ -8,7 +8,7 @@ import Foundation import Alamofire -public struct JSONDataEncoding: ParameterEncoding { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct JSONDataEncoding: ParameterEncoding { // MARK: Properties @@ -25,7 +25,7 @@ public struct JSONDataEncoding: ParameterEncoding { /// - throws: An `Error` if the encoding process encounters an error. /// /// - returns: The encoded request. - public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { var urlRequest = try urlRequest.asURLRequest() guard let jsonData = parameters?[JSONDataEncoding.jsonDataKey] as? Data, !jsonData.isEmpty else { @@ -41,7 +41,7 @@ public struct JSONDataEncoding: ParameterEncoding { return urlRequest } - public static func encodingParameters(jsonData: Data?) -> Parameters? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func encodingParameters(jsonData: Data?) -> Parameters? { var returnedParams: Parameters? = nil if let jsonData = jsonData, !jsonData.isEmpty { var params = Parameters() diff --git a/modules/openapi-generator/src/main/resources/swift4/JSONEncodingHelper.mustache b/modules/openapi-generator/src/main/resources/swift4/JSONEncodingHelper.mustache index 70449515842..d4d7cc8f750 100644 --- a/modules/openapi-generator/src/main/resources/swift4/JSONEncodingHelper.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/JSONEncodingHelper.mustache @@ -8,9 +8,9 @@ import Foundation import Alamofire -open class JSONEncodingHelper { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class JSONEncodingHelper { - open class func encodingParameters(forEncodableObject encodableObj: T?) -> Parameters? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func encodingParameters(forEncodableObject encodableObj: T?) -> Parameters? { var params: Parameters? = nil // Encode the Encodable object @@ -24,7 +24,7 @@ open class JSONEncodingHelper { return params } - open class func encodingParameters(forEncodableObject encodableObj: Any?) -> Parameters? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func encodingParameters(forEncodableObject encodableObj: Any?) -> Parameters? { var params: Parameters? = nil if let encodableObj = encodableObj { diff --git a/modules/openapi-generator/src/main/resources/swift4/Models.mustache b/modules/openapi-generator/src/main/resources/swift4/Models.mustache index 40856389035..62b20a27c32 100644 --- a/modules/openapi-generator/src/main/resources/swift4/Models.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/Models.mustache @@ -10,22 +10,22 @@ protocol JSONEncodable { func encodeToJSON() -> Any } -public enum ErrorResponse : Error { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum ErrorResponse : Error { case error(Int, Data?, Error) } -open class Response { - public let statusCode: Int - public let header: [String: String] - public let body: T? +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class Response { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let statusCode: Int + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let header: [String: String] + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let body: T? - public init(statusCode: Int, header: [String: String], body: T?) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(statusCode: Int, header: [String: String], body: T?) { self.statusCode = statusCode self.header = header self.body = body } - public convenience init(response: HTTPURLResponse, body: T?) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} convenience init(response: HTTPURLResponse, body: T?) { let rawHeader = response.allHeaderFields var header = [String:String]() for case let (key, value) as (String, String) in rawHeader { diff --git a/modules/openapi-generator/src/main/resources/swift4/api.mustache b/modules/openapi-generator/src/main/resources/swift4/api.mustache index 813518bfb05..9b920ef8cea 100644 --- a/modules/openapi-generator/src/main/resources/swift4/api.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/api.mustache @@ -16,14 +16,14 @@ extension {{projectName}}API { {{#description}} /** {{description}} */{{/description}} -open class {{classname}} { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{classname}} { {{#operation}} {{#allParams}} {{#isEnum}} /** * enum for parameter {{paramName}} */ - public enum {{enumName}}_{{operationId}}: {{^isContainer}}{{{dataType}}}{{/isContainer}}{{#isContainer}}String{{/isContainer}} { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}_{{operationId}}: {{^isContainer}}{{{dataType}}}{{/isContainer}}{{#isContainer}}String{{/isContainer}} { {{#allowableValues}} {{#enumVars}} case {{name}} = {{{value}}} @@ -42,7 +42,7 @@ open class {{classname}} { - 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}} - parameter completion: completion handler to receive the data and the error objects */ - open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}completion: @escaping ((_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?,_ error: Error?) -> Void)) { {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute { (response, error) -> Void in {{#returnType}} completion(response?.body, error) @@ -66,7 +66,7 @@ open class {{classname}} { - 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: Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> */ - open class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> 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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { let deferred = Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.pending() {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute { (response, error) -> Void in if let error = error { @@ -94,7 +94,7 @@ open class {{classname}} { - 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: Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> */ - open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> 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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { return Observable.create { observer -> Disposable in {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute { (response, error) -> Void in if let error = error { @@ -141,7 +141,7 @@ open class {{classname}} { {{/allParams}} - returns: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{description}} */ - open class func {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { + {{#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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{^secondaryParam}}var{{/secondaryParam}}{{/pathParams}} path = "{{{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) ?? "" diff --git a/modules/openapi-generator/src/main/resources/swift4/api_doc.mustache b/modules/openapi-generator/src/main/resources/swift4/api_doc.mustache index 9ea5ae16149..c08e36fa550 100644 --- a/modules/openapi-generator/src/main/resources/swift4/api_doc.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/api_doc.mustache @@ -14,14 +14,14 @@ Method | HTTP request | Description ```swift {{^usePromiseKit}} {{^useRxSwift}} - open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}completion: @escaping (_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void) {{/useRxSwift}} {{/usePromiseKit}} {{#usePromiseKit}} - open class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> 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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{/usePromiseKit}} {{#useRxSwift}} - open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> 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}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{/useRxSwift}} ``` diff --git a/modules/openapi-generator/src/main/resources/swift4/modelArray.mustache b/modules/openapi-generator/src/main/resources/swift4/modelArray.mustache index 843626158cd..536c5e9eea4 100644 --- a/modules/openapi-generator/src/main/resources/swift4/modelArray.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/modelArray.mustache @@ -1 +1 @@ -public typealias {{classname}} = {{parent}} \ No newline at end of file +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{classname}} = {{parent}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift4/modelEnum.mustache b/modules/openapi-generator/src/main/resources/swift4/modelEnum.mustache index 91c2efd54af..4a28e656e2d 100644 --- a/modules/openapi-generator/src/main/resources/swift4/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/modelEnum.mustache @@ -1,4 +1,4 @@ -public enum {{classname}}: {{dataType}}, Codable { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, Codable { {{#allowableValues}} {{#enumVars}} case {{name}} = {{{value}}} diff --git a/modules/openapi-generator/src/main/resources/swift4/modelInlineEnumDeclaration.mustache b/modules/openapi-generator/src/main/resources/swift4/modelInlineEnumDeclaration.mustache index e2a3d08e912..e7fed7d16ea 100644 --- a/modules/openapi-generator/src/main/resources/swift4/modelInlineEnumDeclaration.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/modelInlineEnumDeclaration.mustache @@ -1,4 +1,4 @@ - public enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, Codable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, Codable { {{#allowableValues}} {{#enumVars}} case {{name}} = {{{value}}} diff --git a/modules/openapi-generator/src/main/resources/swift4/modelObject.mustache b/modules/openapi-generator/src/main/resources/swift4/modelObject.mustache index d477ac7880d..54ad96db65f 100644 --- a/modules/openapi-generator/src/main/resources/swift4/modelObject.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/modelObject.mustache @@ -1,5 +1,5 @@ -public struct {{classname}}: Codable { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct {{classname}}: Codable { {{#allVars}} {{#isEnum}} @@ -9,12 +9,12 @@ public struct {{classname}}: Codable { {{#allVars}} {{#isEnum}} {{#description}}/** {{description}} */ - {{/description}}public var {{name}}: {{{datatypeWithEnum}}}{{#unwrapRequired}}?{{/unwrapRequired}}{{^unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}} + {{/description}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var {{name}}: {{{datatypeWithEnum}}}{{#unwrapRequired}}?{{/unwrapRequired}}{{^unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}} {{/isEnum}} {{^isEnum}} {{#description}}/** {{description}} */ - {{/description}}public var {{name}}: {{{datatype}}}{{#unwrapRequired}}?{{/unwrapRequired}}{{^unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#objcCompatible}}{{#vendorExtensions.x-swift-optional-scalar}} - public var {{name}}Num: NSNumber? { + {{/description}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var {{name}}: {{{datatype}}}{{#unwrapRequired}}?{{/unwrapRequired}}{{^unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#objcCompatible}}{{#vendorExtensions.x-swift-optional-scalar}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var {{name}}Num: NSNumber? { get { return {{name}}.map({ return NSNumber(value: $0) }) } @@ -23,16 +23,16 @@ public struct {{classname}}: Codable { {{/allVars}} {{#hasVars}} - public init({{#allVars}}{{name}}: {{{datatypeWithEnum}}}{{#unwrapRequired}}?{{/unwrapRequired}}{{^unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#hasMore}}, {{/hasMore}}{{/allVars}}) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init({{#allVars}}{{name}}: {{{datatypeWithEnum}}}{{#unwrapRequired}}?{{/unwrapRequired}}{{^unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#hasMore}}, {{/hasMore}}{{/allVars}}) { {{#allVars}} self.{{name}} = {{name}} {{/allVars}} } {{/hasVars}} {{#additionalPropertiesType}} - public var additionalProperties: [String:{{{additionalPropertiesType}}}] = [:] + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var additionalProperties: [String:{{{additionalPropertiesType}}}] = [:] - public subscript(key: String) -> {{{additionalPropertiesType}}}? { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} subscript(key: String) -> {{{additionalPropertiesType}}}? { get { if let value = additionalProperties[key] { return value @@ -47,7 +47,7 @@ public struct {{classname}}: Codable { // Encodable protocol methods - public func encode(to encoder: Encoder) throws { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: String.self) @@ -59,7 +59,7 @@ public struct {{classname}}: Codable { // Decodable protocol methods - public init(from decoder: Decoder) throws { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: String.self) {{#allVars}} @@ -74,7 +74,7 @@ public struct {{classname}}: Codable { {{/additionalPropertiesType}} {{^additionalPropertiesType}}{{#vendorExtensions.x-codegen-has-escaped-property-names}} - public enum CodingKeys: String, CodingKey { {{#allVars}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum CodingKeys: String, CodingKey { {{#allVars}} case {{name}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}}{{/allVars}} } {{/vendorExtensions.x-codegen-has-escaped-property-names}}{{/additionalPropertiesType}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift4OptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift4OptionsProvider.java index eba12dbcb27..29692ce08e3 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift4OptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift4OptionsProvider.java @@ -28,6 +28,7 @@ public class Swift4OptionsProvider implements OptionsProvider { public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; public static final String PROJECT_NAME_VALUE = "Swagger"; public static final String RESPONSE_AS_VALUE = "test"; + public static final String NON_PUBLIC_API_REQUIRED_VALUE = "false"; public static final String UNWRAP_REQUIRED_VALUE = "true"; public static final String OBJC_COMPATIBLE_VALUE = "false"; public static final String LENIENT_TYPE_CAST_VALUE = "false"; @@ -59,6 +60,7 @@ public class Swift4OptionsProvider implements OptionsProvider { .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(Swift4Codegen.PROJECT_NAME, PROJECT_NAME_VALUE) .put(Swift4Codegen.RESPONSE_AS, RESPONSE_AS_VALUE) + .put(CodegenConstants.NON_PUBLIC_API, NON_PUBLIC_API_REQUIRED_VALUE) .put(Swift4Codegen.UNWRAP_REQUIRED, UNWRAP_REQUIRED_VALUE) .put(Swift4Codegen.OBJC_COMPATIBLE, OBJC_COMPATIBLE_VALUE) .put(Swift4Codegen.LENIENT_TYPE_CAST, LENIENT_TYPE_CAST_VALUE) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4OptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4OptionsTest.java index 0611790b326..c31fa7e62b1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4OptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift4/Swift4OptionsTest.java @@ -48,6 +48,8 @@ public class Swift4OptionsTest extends AbstractOptionsTest { times = 1; clientCodegen.setResponseAs(Swift4OptionsProvider.RESPONSE_AS_VALUE.split(",")); times = 1; + clientCodegen.setNonPublicApi(Boolean.valueOf(Swift4OptionsProvider.NON_PUBLIC_API_REQUIRED_VALUE)); + times = 1; clientCodegen.setUnwrapRequired(Boolean.valueOf(Swift4OptionsProvider.UNWRAP_REQUIRED_VALUE)); times = 1; clientCodegen.setObjcCompatible(Boolean.valueOf(Swift4OptionsProvider.OBJC_COMPATIBLE_VALUE)); diff --git a/samples/client/petstore/swift4/nonPublicApi/.gitignore b/samples/client/petstore/swift4/nonPublicApi/.gitignore new file mode 100644 index 00000000000..5e5d5cebcf4 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/.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/swift4/nonPublicApi/.openapi-generator-ignore b/samples/client/petstore/swift4/nonPublicApi/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/.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/swift4/nonPublicApi/.openapi-generator/VERSION b/samples/client/petstore/swift4/nonPublicApi/.openapi-generator/VERSION new file mode 100644 index 00000000000..e4955748d3e --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.2.2-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift4/nonPublicApi/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift4/nonPublicApi/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift4/nonPublicApi/Cartfile b/samples/client/petstore/swift4/nonPublicApi/Cartfile new file mode 100644 index 00000000000..86748c63d90 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/Cartfile @@ -0,0 +1 @@ +github "Alamofire/Alamofire" ~> 4.9.0 diff --git a/samples/client/petstore/swift4/nonPublicApi/Info.plist b/samples/client/petstore/swift4/nonPublicApi/Info.plist new file mode 100644 index 00000000000..323e5ecfc42 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/samples/client/petstore/swift4/nonPublicApi/Package.resolved b/samples/client/petstore/swift4/nonPublicApi/Package.resolved new file mode 100644 index 00000000000..ca6137050eb --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "747c8db8d57b68d5e35275f10c92d55f982adbd4", + "version": "4.9.1" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift4/nonPublicApi/Package.swift b/samples/client/petstore/swift4/nonPublicApi/Package.swift new file mode 100644 index 00000000000..e5c5f0f33b8 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version:4.2 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "PetstoreClient", + 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/Alamofire/Alamofire.git", from: "4.9.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: ["Alamofire"], + path: "PetstoreClient/Classes" + ) + ] +) diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.podspec b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.podspec new file mode 100644 index 00000000000..a6c9a1f3d45 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.podspec @@ -0,0 +1,14 @@ +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.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 'Alamofire', '~> 4.9.0' +end diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..b606fe1ab10 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.pbxproj @@ -0,0 +1,576 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 0299339D13C3571C4C57368A /* ApiResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8E7B833748B4F0C7CDA90C6 /* ApiResponse.swift */; }; + 081C0B80A989B1AAF2665121 /* MapTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7986861626C2B1CB49AD7000 /* MapTest.swift */; }; + 0C1E4C682F2D0AF7D9E431EE /* Dog.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6C3E1129526A353B963EFD7 /* Dog.swift */; }; + 0E6932F1C55BA6880693C478 /* Order.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B2E9EF856E89FEAA359A3A /* Order.swift */; }; + 1E6C7C7F271A802DF8099330 /* APIHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 897716962D472FE162B723CB /* APIHelper.swift */; }; + 22FA6CA58E58550DE36AE750 /* JSONEncodableEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9791B840B8D6EAA35343B00F /* JSONEncodableEncoding.swift */; }; + 248F2F0F29E8FDAE9CAD64C5 /* AdditionalPropertiesClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 396DEF3156BA0D12D0FC5C3C /* AdditionalPropertiesClass.swift */; }; + 269E3103C458C78EA5726EE2 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C298FC8929DCB369053F11 /* Extensions.swift */; }; + 294CDFA409BC369C0FDC5FB3 /* SpecialModelName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 386FD590658E90509C121118 /* SpecialModelName.swift */; }; + 2B441CDFFFDDB343C04F5375 /* Animal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95568E7C35F119EB4A12B498 /* Animal.swift */; }; + 2C29D5B60E00DDA3878F1BDE /* Pet.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFEB4C6C257B3BB3CEA36D1 /* Pet.swift */; }; + 31DFF71D8CCCA0D2D2F8AC90 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5565A447062C7B8F695F451 /* User.swift */; }; + 34C26979F4678B5B579D26E8 /* FakeClassnameTags123API.swift in Sources */ = {isa = PBXBuildFile; fileRef = B42354B407EC173BEB54E042 /* FakeClassnameTags123API.swift */; }; + 3691B017D3AA18404A563C67 /* ArrayOfNumberOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = B65BB72353DA24536A9049BE /* ArrayOfNumberOnly.swift */; }; + 37DEADD6CD0496690725B8A7 /* Name.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AD994DFAA0DA93C188A4DBA /* Name.swift */; }; + 40E3027D2E38D8329C6AB01F /* APIs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37DF825B8F3BADA2B2537D17 /* APIs.swift */; }; + 40E46046D2B16D1A672A08E3 /* AlamofireImplementations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A201508DF2B697D65F2631 /* AlamofireImplementations.swift */; }; + 418DB36F23C53C6E2C3CDE39 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A235FA3FDFB086CC69CDE83D /* Alamofire.framework */; }; + 41A491E9B577C510F927D126 /* OuterEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = C15008AABC804EB6FB4CDAC6 /* OuterEnum.swift */; }; + 45B3B29D7A62049F824751F8 /* AnimalFarm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D22BE01748F51106DE02332 /* AnimalFarm.swift */; }; + 4A344DF7ECE721B4BBEDCB4A /* CatAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD0F94F512DFBC09F9CC79A /* CatAllOf.swift */; }; + 4B4BE77747413A9188CDABD2 /* ArrayOfArrayOfNumberOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B1B8B838B5D9D312F2002EB /* ArrayOfArrayOfNumberOnly.swift */; }; + 555DEA47352B42E49082922B /* NumberOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8E0B16084741FCB82389F58 /* NumberOnly.swift */; }; + 5695497F5DBF6C08842755A3 /* TypeHolderDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC76F6D4D2AA8084B7EB50E /* TypeHolderDefault.swift */; }; + 61322FC4325F1A4FF24ACA48 /* EnumArrays.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10503995D9EFD031A2EFB576 /* EnumArrays.swift */; }; + 64C48E3658CF53EBE8AF82F9 /* UserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8D5F382979854D47F18DB1 /* UserAPI.swift */; }; + 6B638A04B34C82B2091D6EDD /* FormatTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3156CE41C001C80379B84BDB /* FormatTest.swift */; }; + 6FBD978F4D1ED92E7071FFBB /* CodableHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A6F6BB2152ACEE1416D44A /* CodableHelper.swift */; }; + 72547ECFB451A509409311EE /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28A444949BBC254798C3B3DD /* Configuration.swift */; }; + 72CE544C52BB33778D1B89B8 /* DogAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21A69C8402A60E01116ABBD /* DogAllOf.swift */; }; + 7441BBA84C31E06400338F89 /* ClassModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C30827D8EAF8EA684E7BCEA /* ClassModel.swift */; }; + 7588B7E2960253174ADCCF16 /* JSONEncodingHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D710108A69DD8A5297F926 /* JSONEncodingHelper.swift */; }; + 86DE714469BE8BA28AFF710F /* HasOnlyReadOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7FBC641752D2E13B150973 /* HasOnlyReadOnly.swift */; }; + 914F4D1FCB17773C067C4E68 /* ReadOnlyFirst.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FD42727E001E799E458C292 /* ReadOnlyFirst.swift */; }; + 922BDADAB291907A7FD14314 /* OuterComposite.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E0AD8F60A91F72C7687560 /* OuterComposite.swift */; }; + 97F7B85BF07A325EEBF92C93 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3933D3B2A3AC4577094D0C23 /* File.swift */; }; + 9CA19AA4483F6EB50270A81E /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A6070F581E611FF44AFD40A /* List.swift */; }; + 9CF06ACDA32CB0C3E74E435C /* Model200Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82A2C3DC2235F0114C2B08E5 /* Model200Response.swift */; }; + 9DA1C6F8B4D6C8595F28C098 /* EnumTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD60AEA646791E0EDE885DE1 /* EnumTest.swift */; }; + A6E50CC6845FE58D8C236253 /* Return.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81447828475F76C5CF4F08A /* Return.swift */; }; + A6E5A5629495DB0ED672B06F /* PetAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A019F500E546A3292CE716A /* PetAPI.swift */; }; + A85E190556818FFA79896E92 /* ArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1A0379CDFC55705AE76C998 /* ArrayTest.swift */; }; + ACF3037926301D4D6E848745 /* EnumClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B2C97AE6ACA1E5FB88F5BAA /* EnumClass.swift */; }; + AD594BFB99E31A5E07579237 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = A913A57E72D723632E9A718F /* Client.swift */; }; + B301DB1B80F37C757550AA17 /* MixedPropertiesAndAdditionalPropertiesClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD714C7CC59BDD18DE8DF4E /* MixedPropertiesAndAdditionalPropertiesClass.swift */; }; + B3E35FE2773D4A8BA15CFA88 /* Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2896F8BFD1AA2965C8A3015 /* Tag.swift */; }; + BB1F3C6D50B8F0A8CC4F1749 /* Capitalization.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B38FA00A494D13F4C382A3 /* Capitalization.swift */; }; + CA9B9B19882EA044EAD0B359 /* AnotherFakeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF24D2714B9C4CF14146E88 /* AnotherFakeAPI.swift */; }; + CB68ABDBAADAF6B8D7B93A5D /* StoreAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53274D99BBDE1B79BF3521C /* StoreAPI.swift */; }; + D3BAB7C7A607392CA838C580 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8699F7966F748ED026A6FB4C /* Models.swift */; }; + D95A5F83AAA7D5C95A29AB83 /* Cat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 212AA914B7F1793A4E32C119 /* Cat.swift */; }; + DDBD4C0FBA3CD6A4DA3DF376 /* FakeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E00950725DC44436C5E238C /* FakeAPI.swift */; }; + DDF1D589267D56D9BED3C6E5 /* FileSchemaTestClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B3666552AA854DAF9C480A3 /* FileSchemaTestClass.swift */; }; + E8A58C6414E88AF3EAE45B69 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F2985D01F8D60A4B1925C69 /* Category.swift */; }; + EDFC6C5121A43997014049CB /* StringBooleanMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B4DEBABEFE140768CFB70B /* StringBooleanMap.swift */; }; + FECA2E8C9D0BDFEC459E8996 /* TypeHolderExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19B65C66C97F082718DDD703 /* TypeHolderExample.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 02A6F6BB2152ACEE1416D44A /* CodableHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableHelper.swift; sourceTree = ""; }; + 10503995D9EFD031A2EFB576 /* EnumArrays.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumArrays.swift; sourceTree = ""; }; + 164AD6EC9C4CCF634D7C4590 /* PetstoreClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PetstoreClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 19B65C66C97F082718DDD703 /* TypeHolderExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeHolderExample.swift; sourceTree = ""; }; + 212AA914B7F1793A4E32C119 /* Cat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cat.swift; sourceTree = ""; }; + 27B2E9EF856E89FEAA359A3A /* Order.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Order.swift; sourceTree = ""; }; + 28A444949BBC254798C3B3DD /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; }; + 3156CE41C001C80379B84BDB /* FormatTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormatTest.swift; sourceTree = ""; }; + 35D710108A69DD8A5297F926 /* JSONEncodingHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONEncodingHelper.swift; sourceTree = ""; }; + 37DF825B8F3BADA2B2537D17 /* APIs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIs.swift; sourceTree = ""; }; + 386FD590658E90509C121118 /* SpecialModelName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpecialModelName.swift; sourceTree = ""; }; + 3933D3B2A3AC4577094D0C23 /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; + 396DEF3156BA0D12D0FC5C3C /* AdditionalPropertiesClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdditionalPropertiesClass.swift; sourceTree = ""; }; + 3AD0F94F512DFBC09F9CC79A /* CatAllOf.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatAllOf.swift; sourceTree = ""; }; + 3C30827D8EAF8EA684E7BCEA /* ClassModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClassModel.swift; sourceTree = ""; }; + 47B4DEBABEFE140768CFB70B /* StringBooleanMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringBooleanMap.swift; sourceTree = ""; }; + 4B2C97AE6ACA1E5FB88F5BAA /* EnumClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumClass.swift; sourceTree = ""; }; + 4B3666552AA854DAF9C480A3 /* FileSchemaTestClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileSchemaTestClass.swift; sourceTree = ""; }; + 4C7FBC641752D2E13B150973 /* HasOnlyReadOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HasOnlyReadOnly.swift; sourceTree = ""; }; + 5AD994DFAA0DA93C188A4DBA /* Name.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Name.swift; sourceTree = ""; }; + 6E00950725DC44436C5E238C /* FakeAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeAPI.swift; sourceTree = ""; }; + 6F2985D01F8D60A4B1925C69 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = ""; }; + 6FD42727E001E799E458C292 /* ReadOnlyFirst.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadOnlyFirst.swift; sourceTree = ""; }; + 7986861626C2B1CB49AD7000 /* MapTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTest.swift; sourceTree = ""; }; + 7A6070F581E611FF44AFD40A /* List.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = List.swift; sourceTree = ""; }; + 7B1B8B838B5D9D312F2002EB /* ArrayOfArrayOfNumberOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrayOfArrayOfNumberOnly.swift; sourceTree = ""; }; + 7C8D5F382979854D47F18DB1 /* UserAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAPI.swift; sourceTree = ""; }; + 82A2C3DC2235F0114C2B08E5 /* Model200Response.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Model200Response.swift; sourceTree = ""; }; + 84A201508DF2B697D65F2631 /* AlamofireImplementations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlamofireImplementations.swift; sourceTree = ""; }; + 8699F7966F748ED026A6FB4C /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = ""; }; + 897716962D472FE162B723CB /* APIHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIHelper.swift; sourceTree = ""; }; + 8D22BE01748F51106DE02332 /* AnimalFarm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimalFarm.swift; sourceTree = ""; }; + 95568E7C35F119EB4A12B498 /* Animal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Animal.swift; sourceTree = ""; }; + 9791B840B8D6EAA35343B00F /* JSONEncodableEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONEncodableEncoding.swift; sourceTree = ""; }; + 9A019F500E546A3292CE716A /* PetAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PetAPI.swift; sourceTree = ""; }; + 9AD714C7CC59BDD18DE8DF4E /* MixedPropertiesAndAdditionalPropertiesClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MixedPropertiesAndAdditionalPropertiesClass.swift; sourceTree = ""; }; + 9DF24D2714B9C4CF14146E88 /* AnotherFakeAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnotherFakeAPI.swift; sourceTree = ""; }; + A21A69C8402A60E01116ABBD /* DogAllOf.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DogAllOf.swift; sourceTree = ""; }; + A235FA3FDFB086CC69CDE83D /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; }; + A53274D99BBDE1B79BF3521C /* StoreAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreAPI.swift; sourceTree = ""; }; + A7B38FA00A494D13F4C382A3 /* Capitalization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Capitalization.swift; sourceTree = ""; }; + A8E7B833748B4F0C7CDA90C6 /* ApiResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiResponse.swift; sourceTree = ""; }; + A913A57E72D723632E9A718F /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; + B2896F8BFD1AA2965C8A3015 /* Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tag.swift; sourceTree = ""; }; + B42354B407EC173BEB54E042 /* FakeClassnameTags123API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeClassnameTags123API.swift; sourceTree = ""; }; + B65BB72353DA24536A9049BE /* ArrayOfNumberOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrayOfNumberOnly.swift; sourceTree = ""; }; + B8C298FC8929DCB369053F11 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + B8E0B16084741FCB82389F58 /* NumberOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberOnly.swift; sourceTree = ""; }; + C15008AABC804EB6FB4CDAC6 /* OuterEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OuterEnum.swift; sourceTree = ""; }; + C6C3E1129526A353B963EFD7 /* Dog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dog.swift; sourceTree = ""; }; + C81447828475F76C5CF4F08A /* Return.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Return.swift; sourceTree = ""; }; + E5565A447062C7B8F695F451 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + EBC76F6D4D2AA8084B7EB50E /* TypeHolderDefault.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeHolderDefault.swift; sourceTree = ""; }; + ECFEB4C6C257B3BB3CEA36D1 /* Pet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pet.swift; sourceTree = ""; }; + F1A0379CDFC55705AE76C998 /* ArrayTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrayTest.swift; sourceTree = ""; }; + F4E0AD8F60A91F72C7687560 /* OuterComposite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OuterComposite.swift; sourceTree = ""; }; + FD60AEA646791E0EDE885DE1 /* EnumTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumTest.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D1990C2A394CCF025EF98A2F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 418DB36F23C53C6E2C3CDE39 /* Alamofire.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1E464C0937FE0D3A7A0FE29A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7861EE241895128F64DD7873 /* Carthage */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4FBDCF1330A9AB9122780DB3 /* Models */ = { + isa = PBXGroup; + children = ( + 396DEF3156BA0D12D0FC5C3C /* AdditionalPropertiesClass.swift */, + 95568E7C35F119EB4A12B498 /* Animal.swift */, + 8D22BE01748F51106DE02332 /* AnimalFarm.swift */, + A8E7B833748B4F0C7CDA90C6 /* ApiResponse.swift */, + 7B1B8B838B5D9D312F2002EB /* ArrayOfArrayOfNumberOnly.swift */, + B65BB72353DA24536A9049BE /* ArrayOfNumberOnly.swift */, + F1A0379CDFC55705AE76C998 /* ArrayTest.swift */, + A7B38FA00A494D13F4C382A3 /* Capitalization.swift */, + 212AA914B7F1793A4E32C119 /* Cat.swift */, + 3AD0F94F512DFBC09F9CC79A /* CatAllOf.swift */, + 6F2985D01F8D60A4B1925C69 /* Category.swift */, + 3C30827D8EAF8EA684E7BCEA /* ClassModel.swift */, + A913A57E72D723632E9A718F /* Client.swift */, + C6C3E1129526A353B963EFD7 /* Dog.swift */, + A21A69C8402A60E01116ABBD /* DogAllOf.swift */, + 10503995D9EFD031A2EFB576 /* EnumArrays.swift */, + 4B2C97AE6ACA1E5FB88F5BAA /* EnumClass.swift */, + FD60AEA646791E0EDE885DE1 /* EnumTest.swift */, + 3933D3B2A3AC4577094D0C23 /* File.swift */, + 4B3666552AA854DAF9C480A3 /* FileSchemaTestClass.swift */, + 3156CE41C001C80379B84BDB /* FormatTest.swift */, + 4C7FBC641752D2E13B150973 /* HasOnlyReadOnly.swift */, + 7A6070F581E611FF44AFD40A /* List.swift */, + 7986861626C2B1CB49AD7000 /* MapTest.swift */, + 9AD714C7CC59BDD18DE8DF4E /* MixedPropertiesAndAdditionalPropertiesClass.swift */, + 82A2C3DC2235F0114C2B08E5 /* Model200Response.swift */, + 5AD994DFAA0DA93C188A4DBA /* Name.swift */, + B8E0B16084741FCB82389F58 /* NumberOnly.swift */, + 27B2E9EF856E89FEAA359A3A /* Order.swift */, + F4E0AD8F60A91F72C7687560 /* OuterComposite.swift */, + C15008AABC804EB6FB4CDAC6 /* OuterEnum.swift */, + ECFEB4C6C257B3BB3CEA36D1 /* Pet.swift */, + 6FD42727E001E799E458C292 /* ReadOnlyFirst.swift */, + C81447828475F76C5CF4F08A /* Return.swift */, + 386FD590658E90509C121118 /* SpecialModelName.swift */, + 47B4DEBABEFE140768CFB70B /* StringBooleanMap.swift */, + B2896F8BFD1AA2965C8A3015 /* Tag.swift */, + EBC76F6D4D2AA8084B7EB50E /* TypeHolderDefault.swift */, + 19B65C66C97F082718DDD703 /* TypeHolderExample.swift */, + E5565A447062C7B8F695F451 /* User.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5FBA6AE5F64CD737F88B4565 = { + isa = PBXGroup; + children = ( + 9B364C01750D7AA4F983B9E7 /* PetstoreClient */, + 1E464C0937FE0D3A7A0FE29A /* Frameworks */, + 857F0DEA1890CE66D6DAD556 /* Products */, + ); + sourceTree = ""; + }; + 67BF3478113E6B4DF1C4E04F /* OpenAPIs */ = { + isa = PBXGroup; + children = ( + 84A201508DF2B697D65F2631 /* AlamofireImplementations.swift */, + 897716962D472FE162B723CB /* APIHelper.swift */, + 37DF825B8F3BADA2B2537D17 /* APIs.swift */, + 02A6F6BB2152ACEE1416D44A /* CodableHelper.swift */, + 28A444949BBC254798C3B3DD /* Configuration.swift */, + B8C298FC8929DCB369053F11 /* Extensions.swift */, + 9791B840B8D6EAA35343B00F /* JSONEncodableEncoding.swift */, + 35D710108A69DD8A5297F926 /* JSONEncodingHelper.swift */, + 8699F7966F748ED026A6FB4C /* Models.swift */, + F956D0CCAE23BCFD1C7BDD5D /* APIs */, + 4FBDCF1330A9AB9122780DB3 /* Models */, + ); + path = OpenAPIs; + sourceTree = ""; + }; + 7861EE241895128F64DD7873 /* Carthage */ = { + isa = PBXGroup; + children = ( + A012205B41CB71A62B86EECD /* iOS */, + ); + name = Carthage; + path = Carthage/Build; + sourceTree = ""; + }; + 857F0DEA1890CE66D6DAD556 /* Products */ = { + isa = PBXGroup; + children = ( + 164AD6EC9C4CCF634D7C4590 /* PetstoreClient.framework */, + ); + name = Products; + sourceTree = ""; + }; + 9B364C01750D7AA4F983B9E7 /* PetstoreClient */ = { + isa = PBXGroup; + children = ( + EF4C81BDD734856ED5023B77 /* Classes */, + ); + path = PetstoreClient; + sourceTree = ""; + }; + A012205B41CB71A62B86EECD /* iOS */ = { + isa = PBXGroup; + children = ( + A235FA3FDFB086CC69CDE83D /* Alamofire.framework */, + ); + path = iOS; + sourceTree = ""; + }; + EF4C81BDD734856ED5023B77 /* Classes */ = { + isa = PBXGroup; + children = ( + 67BF3478113E6B4DF1C4E04F /* OpenAPIs */, + ); + path = Classes; + sourceTree = ""; + }; + F956D0CCAE23BCFD1C7BDD5D /* APIs */ = { + isa = PBXGroup; + children = ( + 9DF24D2714B9C4CF14146E88 /* AnotherFakeAPI.swift */, + 6E00950725DC44436C5E238C /* FakeAPI.swift */, + B42354B407EC173BEB54E042 /* FakeClassnameTags123API.swift */, + 9A019F500E546A3292CE716A /* PetAPI.swift */, + A53274D99BBDE1B79BF3521C /* StoreAPI.swift */, + 7C8D5F382979854D47F18DB1 /* UserAPI.swift */, + ); + path = APIs; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C1282C2230015E0D204BEAED /* PetstoreClient */ = { + isa = PBXNativeTarget; + buildConfigurationList = B46EDEB1A7F0D78FE6394544 /* Build configuration list for PBXNativeTarget "PetstoreClient" */; + buildPhases = ( + E539708354CE60FE486F81ED /* Sources */, + D1990C2A394CCF025EF98A2F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PetstoreClient; + productName = PetstoreClient; + productReference = 164AD6EC9C4CCF634D7C4590 /* PetstoreClient.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + E7D276EE2369D8C455513C2E /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + }; + buildConfigurationList = ECAB17FF35111B5E14DAAC08 /* Build configuration list for PBXProject "PetstoreClient" */; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = 5FBA6AE5F64CD737F88B4565; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C1282C2230015E0D204BEAED /* PetstoreClient */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + E539708354CE60FE486F81ED /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E6C7C7F271A802DF8099330 /* APIHelper.swift in Sources */, + 40E3027D2E38D8329C6AB01F /* APIs.swift in Sources */, + 248F2F0F29E8FDAE9CAD64C5 /* AdditionalPropertiesClass.swift in Sources */, + 40E46046D2B16D1A672A08E3 /* AlamofireImplementations.swift in Sources */, + 2B441CDFFFDDB343C04F5375 /* Animal.swift in Sources */, + 45B3B29D7A62049F824751F8 /* AnimalFarm.swift in Sources */, + CA9B9B19882EA044EAD0B359 /* AnotherFakeAPI.swift in Sources */, + 0299339D13C3571C4C57368A /* ApiResponse.swift in Sources */, + 4B4BE77747413A9188CDABD2 /* ArrayOfArrayOfNumberOnly.swift in Sources */, + 3691B017D3AA18404A563C67 /* ArrayOfNumberOnly.swift in Sources */, + A85E190556818FFA79896E92 /* ArrayTest.swift in Sources */, + BB1F3C6D50B8F0A8CC4F1749 /* Capitalization.swift in Sources */, + D95A5F83AAA7D5C95A29AB83 /* Cat.swift in Sources */, + 4A344DF7ECE721B4BBEDCB4A /* CatAllOf.swift in Sources */, + E8A58C6414E88AF3EAE45B69 /* Category.swift in Sources */, + 7441BBA84C31E06400338F89 /* ClassModel.swift in Sources */, + AD594BFB99E31A5E07579237 /* Client.swift in Sources */, + 6FBD978F4D1ED92E7071FFBB /* CodableHelper.swift in Sources */, + 72547ECFB451A509409311EE /* Configuration.swift in Sources */, + 0C1E4C682F2D0AF7D9E431EE /* Dog.swift in Sources */, + 72CE544C52BB33778D1B89B8 /* DogAllOf.swift in Sources */, + 61322FC4325F1A4FF24ACA48 /* EnumArrays.swift in Sources */, + ACF3037926301D4D6E848745 /* EnumClass.swift in Sources */, + 9DA1C6F8B4D6C8595F28C098 /* EnumTest.swift in Sources */, + 269E3103C458C78EA5726EE2 /* Extensions.swift in Sources */, + DDBD4C0FBA3CD6A4DA3DF376 /* FakeAPI.swift in Sources */, + 34C26979F4678B5B579D26E8 /* FakeClassnameTags123API.swift in Sources */, + 97F7B85BF07A325EEBF92C93 /* File.swift in Sources */, + DDF1D589267D56D9BED3C6E5 /* FileSchemaTestClass.swift in Sources */, + 6B638A04B34C82B2091D6EDD /* FormatTest.swift in Sources */, + 86DE714469BE8BA28AFF710F /* HasOnlyReadOnly.swift in Sources */, + 22FA6CA58E58550DE36AE750 /* JSONEncodableEncoding.swift in Sources */, + 7588B7E2960253174ADCCF16 /* JSONEncodingHelper.swift in Sources */, + 9CA19AA4483F6EB50270A81E /* List.swift in Sources */, + 081C0B80A989B1AAF2665121 /* MapTest.swift in Sources */, + B301DB1B80F37C757550AA17 /* MixedPropertiesAndAdditionalPropertiesClass.swift in Sources */, + 9CF06ACDA32CB0C3E74E435C /* Model200Response.swift in Sources */, + D3BAB7C7A607392CA838C580 /* Models.swift in Sources */, + 37DEADD6CD0496690725B8A7 /* Name.swift in Sources */, + 555DEA47352B42E49082922B /* NumberOnly.swift in Sources */, + 0E6932F1C55BA6880693C478 /* Order.swift in Sources */, + 922BDADAB291907A7FD14314 /* OuterComposite.swift in Sources */, + 41A491E9B577C510F927D126 /* OuterEnum.swift in Sources */, + 2C29D5B60E00DDA3878F1BDE /* Pet.swift in Sources */, + A6E5A5629495DB0ED672B06F /* PetAPI.swift in Sources */, + 914F4D1FCB17773C067C4E68 /* ReadOnlyFirst.swift in Sources */, + A6E50CC6845FE58D8C236253 /* Return.swift in Sources */, + 294CDFA409BC369C0FDC5FB3 /* SpecialModelName.swift in Sources */, + CB68ABDBAADAF6B8D7B93A5D /* StoreAPI.swift in Sources */, + EDFC6C5121A43997014049CB /* StringBooleanMap.swift in Sources */, + B3E35FE2773D4A8BA15CFA88 /* Tag.swift in Sources */, + 5695497F5DBF6C08842755A3 /* TypeHolderDefault.swift in Sources */, + FECA2E8C9D0BDFEC459E8996 /* TypeHolderExample.swift in Sources */, + 31DFF71D8CCCA0D2D2F8AC90 /* User.swift in Sources */, + 64C48E3658CF53EBE8AF82F9 /* UserAPI.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3B2C02AFB91CB5C82766ED5C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + A9EB0A02B94C427CBACFEC7C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + DD3EEB93949E9EBA4437E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + F81D4E5FECD46E9AA6DD2C29 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B46EDEB1A7F0D78FE6394544 /* Build configuration list for PBXNativeTarget "PetstoreClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD3EEB93949E9EBA4437E9CD /* Debug */, + 3B2C02AFB91CB5C82766ED5C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ""; + }; + ECAB17FF35111B5E14DAAC08 /* Build configuration list for PBXProject "PetstoreClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A9EB0A02B94C427CBACFEC7C /* Debug */, + F81D4E5FECD46E9AA6DD2C29 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = E7D276EE2369D8C455513C2E /* Project object */; +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme new file mode 100644 index 00000000000..26d510552bb --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIHelper.swift new file mode 100644 index 00000000000..8641eb7ebf7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -0,0 +1,70 @@ +// APIHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct APIHelper { + internal 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 + } + + internal 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)" + } + } + } + + internal 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 + } + }) + } + + internal static func mapValueToPathItem(_ source: Any) -> Any { + if let collection = source as? [Any?] { + return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") + } + return source + } + + internal 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?] { + let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") + 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/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift new file mode 100644 index 00000000000..82b62e32eb9 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -0,0 +1,61 @@ +// APIs.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal class PetstoreClientAPI { + internal static var basePath = "http://petstore.swagger.io:80/v2" + internal static var credential: URLCredential? + internal static var customHeaders: [String: String] = [:] + internal static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() +} + +internal class RequestBuilder { + var credential: URLCredential? + var headers: [String: String] + internal let parameters: [String: Any]? + internal let isBody: Bool + internal let method: String + internal let URLString: String + + /// Optional block to obtain a reference to the request's progress instance when available. + internal var onProgressReady: ((Progress) -> Void)? + + required internal init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { + self.method = method + self.URLString = URLString + self.parameters = parameters + self.isBody = isBody + self.headers = headers + + addHeaders(PetstoreClientAPI.customHeaders) + } + + internal func addHeaders(_ aHeaders: [String: String]) { + for (header, value) in aHeaders { + headers[header] = value + } + } + + internal func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { } + + internal func addHeader(name: String, value: String) -> Self { + if !value.isEmpty { + headers[name] = value + } + return self + } + + internal func addCredential() -> Self { + self.credential = PetstoreClientAPI.credential + return self + } +} + +internal protocol RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type + func getBuilder() -> RequestBuilder.Type +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift new file mode 100644 index 00000000000..70d98b03d27 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -0,0 +1,43 @@ +// +// AnotherFakeAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class AnotherFakeAPI { + /** + To test special tags + + - parameter body: (body) client model + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func call123testSpecialTags(body: Client, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + call123testSpecialTagsWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { + let path = "/another-fake/dummy" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift new file mode 100644 index 00000000000..10ee354a4ca --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -0,0 +1,576 @@ +// +// FakeAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class FakeAPI { + /** + + - parameter body: (body) Input boolean as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func fakeOuterBooleanSerialize(body: Bool? = nil, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + + /** + - POST /fake/outer/boolean + - Test serialization of outer boolean types + - parameter body: (body) Input boolean as post body (optional) + - returns: RequestBuilder + */ + internal class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { + let path = "/fake/outer/boolean" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) Input composite as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + + /** + - POST /fake/outer/composite + - Test serialization of object with outer number type + - parameter body: (body) Input composite as post body (optional) + - returns: RequestBuilder + */ + internal class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { + let path = "/fake/outer/composite" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) Input number as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func fakeOuterNumberSerialize(body: Double? = nil, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + fakeOuterNumberSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + + /** + - POST /fake/outer/number + - Test serialization of outer number types + - parameter body: (body) Input number as post body (optional) + - returns: RequestBuilder + */ + internal class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { + let path = "/fake/outer/number" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) Input string as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func fakeOuterStringSerialize(body: String? = nil, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + fakeOuterStringSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + + /** + - POST /fake/outer/string + - Test serialization of outer string types + - parameter body: (body) Input string as post body (optional) + - returns: RequestBuilder + */ + internal class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { + let path = "/fake/outer/string" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func testBodyWithFileSchema(body: FileSchemaTestClass, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testBodyWithFileSchemaWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter query: (query) + - parameter body: (body) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func testBodyWithQueryParams(query: String, body: User, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + + /** + - PUT /fake/body-with-query-params + - parameter query: (query) + - parameter body: (body) + - returns: RequestBuilder + */ + internal 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 url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "query": query + ]) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + To test \"client\" model + + - parameter body: (body) client model + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func testClientModel(body: Client, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + testClientModelWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + + /** + To test \"client\" model + - PATCH /fake + - To test \"client\" model + - parameter body: (body) client model + - returns: RequestBuilder + */ + internal class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { + let path = "/fake" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + internal 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)) { + 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 { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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, + "float": float, + "double": double, + "string": string, + "pattern_without_delimiter": patternWithoutDelimiter, + "byte": byte, + "binary": binary, + "date": date?.encodeToJSON(), + "dateTime": dateTime?.encodeToJSON(), + "password": password, + "callback": callback + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + * enum for parameter enumHeaderStringArray + */ + internal enum EnumHeaderStringArray_testEnumParameters: String { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumHeaderString + */ + internal enum EnumHeaderString_testEnumParameters: String { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryStringArray + */ + internal enum EnumQueryStringArray_testEnumParameters: String { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumQueryString + */ + internal enum EnumQueryString_testEnumParameters: String { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryInteger + */ + internal enum EnumQueryInteger_testEnumParameters: Int { + case _1 = 1 + case number2 = -2 + } + + /** + * enum for parameter enumQueryDouble + */ + internal enum EnumQueryDouble_testEnumParameters: Double { + case _11 = 1.1 + case number12 = -1.2 + } + + /** + * enum for parameter enumFormStringArray + */ + internal enum EnumFormStringArray_testEnumParameters: String { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumFormString + */ + internal enum EnumFormString_testEnumParameters: String { + 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 .$) + - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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, 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 { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 .$) + - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "enum_form_string_array": enumFormStringArray, + "enum_form_string": enumFormString?.rawValue + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + var url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "enum_query_string_array": enumQueryStringArray, + "enum_query_string": enumQueryString?.rawValue, + "enum_query_integer": enumQueryInteger?.rawValue, + "enum_query_double": enumQueryDouble?.rawValue + ]) + let nillableHeaders: [String: Any?] = [ + "enum_header_string_array": enumHeaderStringArray, + "enum_header_string": enumHeaderString?.rawValue + ] + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, 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 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, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + 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 parameters: [String: Any]? = nil + + var url = URLComponents(string: URLString) + url?.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, + "boolean_group": booleanGroup + ] + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) + } + + /** + test inline additionalProperties + + - parameter param: (body) request body + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func testInlineAdditionalProperties(param: [String: String], completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + + /** + test inline additionalProperties + - POST /fake/inline-additionalProperties + - parameter param: (body) request body + - returns: RequestBuilder + */ + internal class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { + let path = "/fake/inline-additionalProperties" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + test json serialization of form data + + - parameter param: (form) field1 + - parameter param2: (form) field2 + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func testJsonFormData(param: String, param2: String, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + + /** + test json serialization of form data + - GET /fake/jsonFormData + - parameter param: (form) field1 + - parameter param2: (form) field2 + - returns: RequestBuilder + */ + internal class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { + let path = "/fake/jsonFormData" + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "param": param, + "param2": param2 + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift new file mode 100644 index 00000000000..90fe7cf0a80 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -0,0 +1,46 @@ +// +// FakeClassnameTags123API.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class FakeClassnameTags123API { + /** + To test class name in snake case + + - parameter body: (body) client model + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func testClassname(body: Client, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + testClassnameWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { + let path = "/fake_classname_test" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift new file mode 100644 index 00000000000..7eaffbe4f37 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -0,0 +1,394 @@ +// +// PetAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class PetAPI { + /** + Add a new pet to the store + + - parameter body: (body) Pet object that needs to be added to the store + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func addPet(body: Pet, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + addPetWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { + let path = "/pet" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Deletes a pet + + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func deletePet(petId: Int64, apiKey: String? = nil, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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 url = URLComponents(string: URLString) + let nillableHeaders: [String: Any?] = [ + "api_key": apiKey + ] + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) + } + + /** + * enum for parameter status + */ + internal enum Status_findPetsByStatus: String { + 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 completion: completion handler to receive the data and the error objects + */ + internal class func findPetsByStatus(status: [String], completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + findPetsByStatusWithRequestBuilder(status: status).execute { (response, error) -> Void in + completion(response?.body, 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]> + */ + internal class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { + let path = "/pet/findByStatus" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "status": status + ]) + + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Finds Pets by tags + + - parameter tags: (query) Tags to filter by + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func findPetsByTags(tags: [String], completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + findPetsByTagsWithRequestBuilder(tags: tags).execute { (response, error) -> Void in + completion(response?.body, 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]> + */ + internal class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { + let path = "/pet/findByTags" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "tags": tags + ]) + + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Find pet by ID + + - parameter petId: (path) ID of pet to return + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func getPetById(petId: Int64, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + getPetByIdWithRequestBuilder(petId: petId).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Update an existing pet + + - parameter body: (body) Pet object that needs to be added to the store + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func updatePet(body: Pet, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updatePetWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { + let path = "/pet" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + internal class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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, + "status": status + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + internal class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal 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, + "file": file + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + internal class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal 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, + "requiredFile": requiredFile + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift new file mode 100644 index 00000000000..bf27df25775 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -0,0 +1,146 @@ +// +// StoreAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class StoreAPI { + /** + Delete purchase order by ID + + - parameter orderId: (path) ID of the order that needs to be deleted + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func deleteOrder(orderId: String, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deleteOrderWithRequestBuilder(orderId: orderId).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Returns pet inventories by status + + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func getInventory(completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + getInventoryWithRequestBuilder().execute { (response, error) -> Void in + completion(response?.body, 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]> + */ + internal class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { + let path = "/store/inventory" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Find purchase order by ID + + - parameter orderId: (path) ID of pet that needs to be fetched + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func getOrderById(orderId: Int64, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + getOrderByIdWithRequestBuilder(orderId: orderId).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Place an order for a pet + + - parameter body: (body) order placed for purchasing the pet + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func placeOrder(body: Order, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + placeOrderWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + + /** + Place an order for a pet + - POST /store/order + - parameter body: (body) order placed for purchasing the pet + - returns: RequestBuilder + */ + internal class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { + let path = "/store/order" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift new file mode 100644 index 00000000000..bdb3265ad2d --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -0,0 +1,295 @@ +// +// UserAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class UserAPI { + /** + Create user + + - parameter body: (body) Created user object + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func createUser(body: User, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUserWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal class func createUserWithRequestBuilder(body: User) -> RequestBuilder { + let path = "/user" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func createUsersWithArrayInput(body: [User], completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUsersWithArrayInputWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + + /** + Creates list of users with given input array + - POST /user/createWithArray + - parameter body: (body) List of user object + - returns: RequestBuilder + */ + internal class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { + let path = "/user/createWithArray" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func createUsersWithListInput(body: [User], completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUsersWithListInputWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + + /** + Creates list of users with given input array + - POST /user/createWithList + - parameter body: (body) List of user object + - returns: RequestBuilder + */ + internal class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { + let path = "/user/createWithList" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Delete user + + - parameter username: (path) The name that needs to be deleted + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func deleteUser(username: String, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deleteUserWithRequestBuilder(username: username).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Get user by user name + + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func getUserByName(username: String, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + getUserByNameWithRequestBuilder(username: username).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Logs user into the system + + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func loginUser(username: String, password: String, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + loginUserWithRequestBuilder(username: username, password: password).execute { (response, error) -> Void in + completion(response?.body, 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 + */ + internal class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { + let path = "/user/login" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "username": username, + "password": password + ]) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Logs out current logged in user session + + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func logoutUser(completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + logoutUserWithRequestBuilder().execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + + /** + Logs out current logged in user session + - GET /user/logout + - returns: RequestBuilder + */ + internal class func logoutUserWithRequestBuilder() -> RequestBuilder { + let path = "/user/logout" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Updated user + + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - parameter completion: completion handler to receive the data and the error objects + */ + internal class func updateUser(username: String, body: User, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updateUserWithRequestBuilder(username: username, body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + 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 + */ + internal 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift new file mode 100644 index 00000000000..d1188c35a71 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -0,0 +1,450 @@ +// AlamofireImplementations.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +class AlamofireRequestBuilderFactory: RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type { + return AlamofireRequestBuilder.self + } + + func getBuilder() -> RequestBuilder.Type { + return AlamofireDecodableRequestBuilder.self + } +} + +private 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 + } + } + } + } + +// Store manager to retain its reference +private var managerStore = SynchronizedDictionary() + +internal class AlamofireRequestBuilder: RequestBuilder { + required internal init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { + super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) + } + + /** + May be overridden by a subclass if you want to control the session + configuration. + */ + internal func createSessionManager() -> Alamofire.SessionManager { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = buildHeaders() + return Alamofire.SessionManager(configuration: configuration) + } + + /** + May be overridden by a subclass if you want to custom request constructor. + */ + internal func createURLRequest() -> URLRequest? { + let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() + guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil } + return try? encoding.encode(originalRequest, with: parameters) + } + + /** + 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. + */ + internal func contentTypeForFormPart(fileURL: URL) -> String? { + return nil + } + + /** + May be overridden by a subclass if you want to control the request + configuration (e.g. to override the cache policy). + */ + internal func makeRequest(manager: SessionManager, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) -> DataRequest { + return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: headers) + } + + override internal func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + let managerId: String = UUID().uuidString + // Create a new manager for each request to customize its request header + let manager = createSessionManager() + managerStore[managerId] = manager + + let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() + + let xMethod = Alamofire.HTTPMethod(rawValue: method) + let fileKeys = parameters == nil ? [] : parameters!.filter { $1 is NSURL } + .map { $0.0 } + + if fileKeys.count > 0 { + manager.upload(multipartFormData: { mpForm in + for (k, v) in self.parameters! { + switch v { + case let fileURL as URL: + if let mimeType = self.contentTypeForFormPart(fileURL: fileURL) { + mpForm.append(fileURL, withName: k, fileName: fileURL.lastPathComponent, mimeType: mimeType) + } else { + mpForm.append(fileURL, withName: k) + } + case let string as String: + mpForm.append(string.data(using: String.Encoding.utf8)!, withName: k) + case let number as NSNumber: + mpForm.append(number.stringValue.data(using: String.Encoding.utf8)!, withName: k) + default: + fatalError("Unprocessable value \(v) with key \(k)") + } + } + }, to: URLString, method: xMethod!, headers: nil, encodingCompletion: { encodingResult in + switch encodingResult { + case .success(let upload, _, _): + if let onProgressReady = self.onProgressReady { + onProgressReady(upload.uploadProgress) + } + self.processRequest(request: upload, managerId, completion) + case .failure(let encodingError): + completion(nil, ErrorResponse.error(415, nil, encodingError)) + } + }) + } else { + let request = makeRequest(manager: manager, method: xMethod!, encoding: encoding, headers: headers) + if let onProgressReady = self.onProgressReady { + onProgressReady(request.progress) + } + processRequest(request: request, managerId, completion) + } + + } + + fileprivate func processRequest(request: DataRequest, _ managerId: String, _ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + if let credential = self.credential { + request.authenticate(usingCredential: credential) + } + + let cleanupRequest = { + managerStore[managerId] = nil + } + + let validatedRequest = request.validate() + + switch T.self { + case is String.Type: + validatedRequest.responseString(completionHandler: { (stringResponse) in + cleanupRequest() + + if stringResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.result.error!) + ) + return + } + + completion( + Response( + response: stringResponse.response!, + body: ((stringResponse.result.value ?? "") as! T) + ), + nil + ) + }) + case is URL.Type: + validatedRequest.responseData(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 documentsDirectory = fileManager.urls(for: .documentDirectory, 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)") + } + + 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( + Response( + response: dataResponse.response!, + body: (filePath as! T) + ), + nil + ) + + } catch let requestParserError as DownloadException { + completion(nil, ErrorResponse.error(400, dataResponse.data, requestParserError)) + } catch let error { + completion(nil, ErrorResponse.error(400, dataResponse.data, error)) + } + return + }) + case is Void.Type: + validatedRequest.responseData(completionHandler: { (voidResponse) in + cleanupRequest() + + if voidResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.result.error!) + ) + return + } + + completion( + Response( + response: voidResponse.response!, + body: nil), + nil + ) + }) + default: + validatedRequest.responseData(completionHandler: { (dataResponse) in + cleanupRequest() + + if dataResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!) + ) + return + } + + completion( + Response( + response: dataResponse.response!, + body: (dataResponse.data as! T) + ), + nil + ) + }) + } + } + + internal func buildHeaders() -> [String: String] { + var httpHeaders = SessionManager.defaultHTTPHeaders + for (key, value) in self.headers { + 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 + } + +} + +private enum DownloadException: Error { + case responseDataMissing + case responseFailed + case requestMissing + case requestMissingPath + case requestMissingURL +} + +internal enum AlamofireDecodableRequestBuilderError: Error { + case emptyDataResponse + case nilHTTPResponse + case jsonDecoding(DecodingError) + case generalError(Error) +} + +internal class AlamofireDecodableRequestBuilder: AlamofireRequestBuilder { + + override fileprivate func processRequest(request: DataRequest, _ managerId: String, _ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + if let credential = self.credential { + request.authenticate(usingCredential: credential) + } + + let cleanupRequest = { + managerStore[managerId] = nil + } + + let validatedRequest = request.validate() + + switch T.self { + case is String.Type: + validatedRequest.responseString(completionHandler: { (stringResponse) in + cleanupRequest() + + if stringResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.result.error!) + ) + return + } + + completion( + Response( + response: stringResponse.response!, + body: ((stringResponse.result.value ?? "") as! T) + ), + nil + ) + }) + case is Void.Type: + validatedRequest.responseData(completionHandler: { (voidResponse) in + cleanupRequest() + + if voidResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.result.error!) + ) + return + } + + completion( + Response( + response: voidResponse.response!, + body: nil), + nil + ) + }) + case is Data.Type: + validatedRequest.responseData(completionHandler: { (dataResponse) in + cleanupRequest() + + if dataResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!) + ) + return + } + + completion( + Response( + response: dataResponse.response!, + body: (dataResponse.data as! T) + ), + nil + ) + }) + default: + validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + cleanupRequest() + + guard dataResponse.result.isSuccess else { + completion(nil, ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!)) + return + } + + guard let data = dataResponse.data, !data.isEmpty else { + completion(nil, ErrorResponse.error(-1, nil, AlamofireDecodableRequestBuilderError.emptyDataResponse)) + return + } + + guard let httpResponse = dataResponse.response else { + completion(nil, ErrorResponse.error(-2, nil, AlamofireDecodableRequestBuilderError.nilHTTPResponse)) + return + } + + var responseObj: Response? + + let decodeResult: (decodableObj: T?, error: Error?) = CodableHelper.decode(T.self, from: data) + if decodeResult.error == nil { + responseObj = Response(response: httpResponse, body: decodeResult.decodableObj) + } + + completion(responseObj, decodeResult.error) + }) + } + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift new file mode 100644 index 00000000000..e17698e572c --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift @@ -0,0 +1,71 @@ +// +// CodableHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal typealias EncodeResult = (data: Data?, error: Error?) + +internal class CodableHelper { + + internal static var dateformatter: DateFormatter? + + internal class func decode(_ type: T.Type, from data: Data) -> (decodableObj: T?, error: Error?) where T: Decodable { + var returnedDecodable: T? + var returnedError: Error? + + let decoder = JSONDecoder() + if let df = self.dateformatter { + decoder.dateDecodingStrategy = .formatted(df) + } else { + decoder.dataDecodingStrategy = .base64 + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = Configuration.dateFormat + decoder.dateDecodingStrategy = .formatted(formatter) + } + + do { + returnedDecodable = try decoder.decode(type, from: data) + } catch { + returnedError = error + } + + return (returnedDecodable, returnedError) + } + + internal class func encode(_ value: T, prettyPrint: Bool = false) -> EncodeResult where T: Encodable { + var returnedData: Data? + var returnedError: Error? + + let encoder = JSONEncoder() + if prettyPrint { + encoder.outputFormatting = .prettyPrinted + } + if let df = self.dateformatter { + encoder.dateEncodingStrategy = .formatted(df) + } else { + encoder.dataEncodingStrategy = .base64 + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = Configuration.dateFormat + encoder.dateEncodingStrategy = .formatted(formatter) + } + + do { + returnedData = try encoder.encode(value) + } catch { + returnedError = error + } + + return (returnedData, returnedError) + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift new file mode 100644 index 00000000000..bfcf939d4bb --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -0,0 +1,15 @@ +// Configuration.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +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. + internal static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift new file mode 100644 index 00000000000..4aa9eb446f0 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -0,0 +1,177 @@ +// Extensions.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +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 } +} + +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 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()) + } +} + +private let dateFormatter: DateFormatter = { + if let formatter = CodableHelper.dateformatter { + return formatter + } else { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = Configuration.dateFormat + return formatter + } +}() + +extension Date: JSONEncodable { + func encodeToJSON() -> Any { + return dateFormatter.string(from: self) as Any + } +} + +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 { + + internal mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T: Encodable { + var arrayContainer = nestedUnkeyedContainer(forKey: key) + try arrayContainer.encode(contentsOf: values) + } + + internal mutating func encodeArrayIfPresent(_ values: [T]?, forKey key: Self.Key) throws where T: Encodable { + if let values = values { + try encodeArray(values, forKey: key) + } + } + + internal mutating func encodeMap(_ pairs: [Self.Key: T]) throws where T: Encodable { + for (key, value) in pairs { + try encode(value, forKey: key) + } + } + + internal mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T: Encodable { + if let pairs = pairs { + try encodeMap(pairs) + } + } + +} + +extension KeyedDecodingContainerProtocol { + + internal 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 + } + + internal 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 + } + + internal 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 + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift new file mode 100644 index 00000000000..bd9f3a2ed0d --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift @@ -0,0 +1,54 @@ +// +// JSONDataEncoding.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal struct JSONDataEncoding: ParameterEncoding { + + // 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. + internal func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + var urlRequest = try urlRequest.asURLRequest() + + 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 + } + + internal static func encodingParameters(jsonData: Data?) -> Parameters? { + var returnedParams: Parameters? + if let jsonData = jsonData, !jsonData.isEmpty { + var params = Parameters() + params[jsonDataKey] = jsonData + returnedParams = params + } + return returnedParams + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift new file mode 100644 index 00000000000..9330c457254 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift @@ -0,0 +1,43 @@ +// +// JSONEncodingHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +internal class JSONEncodingHelper { + + internal class func encodingParameters(forEncodableObject encodableObj: T?) -> Parameters? { + var params: Parameters? + + // Encode the Encodable object + if let encodableObj = encodableObj { + let encodeResult = CodableHelper.encode(encodableObj, prettyPrint: true) + if encodeResult.error == nil { + params = JSONDataEncoding.encodingParameters(jsonData: encodeResult.data) + } + } + + return params + } + + internal class func encodingParameters(forEncodableObject encodableObj: Any?) -> Parameters? { + var params: Parameters? + + if let encodableObj = encodableObj { + do { + let data = try JSONSerialization.data(withJSONObject: encodableObj, options: .prettyPrinted) + params = JSONDataEncoding.encodingParameters(jsonData: data) + } catch { + print(error) + return nil + } + } + + return params + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift new file mode 100644 index 00000000000..5c253abc2c4 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -0,0 +1,36 @@ +// Models.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +protocol JSONEncodable { + func encodeToJSON() -> Any +} + +internal enum ErrorResponse: Error { + case error(Int, Data?, Error) +} + +internal class Response { + internal let statusCode: Int + internal let header: [String: String] + internal let body: T? + + internal init(statusCode: Int, header: [String: String], body: T?) { + self.statusCode = statusCode + self.header = header + self.body = body + } + + internal convenience init(response: HTTPURLResponse, body: T?) { + let rawHeader = response.allHeaderFields + var header = [String: String]() + for case let (key, value) as (String, String) in rawHeader { + header[key] = value + } + self.init(statusCode: response.statusCode, header: header, body: body) + } +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift new file mode 100644 index 00000000000..203d2c1a931 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -0,0 +1,25 @@ +// +// AdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct AdditionalPropertiesClass: Codable { + + internal var mapString: [String: String]? + internal var mapMapString: [String: [String: String]]? + + internal init(mapString: [String: String]?, mapMapString: [String: [String: String]]?) { + self.mapString = mapString + self.mapMapString = mapMapString + } + + internal enum CodingKeys: String, CodingKey { + case mapString = "map_string" + case mapMapString = "map_map_string" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift new file mode 100644 index 00000000000..ada7f86de50 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -0,0 +1,20 @@ +// +// Animal.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Animal: Codable { + + internal var className: String + internal var color: String? = "red" + + internal init(className: String, color: String?) { + self.className = className + self.color = color + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift new file mode 100644 index 00000000000..3ebe9e9a5de --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -0,0 +1,10 @@ +// +// AnimalFarm.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift new file mode 100644 index 00000000000..b60d8999b4b --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -0,0 +1,22 @@ +// +// ApiResponse.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct ApiResponse: Codable { + + internal var code: Int? + internal var type: String? + internal var message: String? + + internal init(code: Int?, type: String?, message: String?) { + self.code = code + self.type = type + self.message = message + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift new file mode 100644 index 00000000000..ef26025dcd8 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -0,0 +1,22 @@ +// +// ArrayOfArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct ArrayOfArrayOfNumberOnly: Codable { + + internal var arrayArrayNumber: [[Double]]? + + internal init(arrayArrayNumber: [[Double]]?) { + self.arrayArrayNumber = arrayArrayNumber + } + + internal enum CodingKeys: String, CodingKey { + case arrayArrayNumber = "ArrayArrayNumber" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift new file mode 100644 index 00000000000..1147e9394c7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -0,0 +1,22 @@ +// +// ArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct ArrayOfNumberOnly: Codable { + + internal var arrayNumber: [Double]? + + internal init(arrayNumber: [Double]?) { + self.arrayNumber = arrayNumber + } + + internal enum CodingKeys: String, CodingKey { + case arrayNumber = "ArrayNumber" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift new file mode 100644 index 00000000000..ffbc3ebc736 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -0,0 +1,28 @@ +// +// ArrayTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct ArrayTest: Codable { + + internal var arrayOfString: [String]? + internal var arrayArrayOfInteger: [[Int64]]? + internal var arrayArrayOfModel: [[ReadOnlyFirst]]? + + internal init(arrayOfString: [String]?, arrayArrayOfInteger: [[Int64]]?, arrayArrayOfModel: [[ReadOnlyFirst]]?) { + self.arrayOfString = arrayOfString + self.arrayArrayOfInteger = arrayArrayOfInteger + self.arrayArrayOfModel = arrayArrayOfModel + } + + internal enum CodingKeys: String, CodingKey { + case arrayOfString = "array_of_string" + case arrayArrayOfInteger = "array_array_of_integer" + case arrayArrayOfModel = "array_array_of_model" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift new file mode 100644 index 00000000000..52cdbb01be7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -0,0 +1,38 @@ +// +// Capitalization.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Capitalization: Codable { + + internal var smallCamel: String? + internal var capitalCamel: String? + internal var smallSnake: String? + internal var capitalSnake: String? + internal var sCAETHFlowPoints: String? + /** Name of the pet */ + internal var ATT_NAME: String? + + internal init(smallCamel: String?, capitalCamel: String?, smallSnake: String?, capitalSnake: String?, sCAETHFlowPoints: String?, ATT_NAME: String?) { + self.smallCamel = smallCamel + self.capitalCamel = capitalCamel + self.smallSnake = smallSnake + self.capitalSnake = capitalSnake + self.sCAETHFlowPoints = sCAETHFlowPoints + self.ATT_NAME = ATT_NAME + } + + internal enum CodingKeys: String, CodingKey { + case smallCamel + case capitalCamel = "CapitalCamel" + case smallSnake = "small_Snake" + case capitalSnake = "Capital_Snake" + case sCAETHFlowPoints = "SCA_ETH_Flow_Points" + case ATT_NAME + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift new file mode 100644 index 00000000000..8a603dee5f1 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -0,0 +1,22 @@ +// +// Cat.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Cat: Codable { + + internal var className: String + internal var color: String? = "red" + internal var declawed: Bool? + + internal init(className: String, color: String?, declawed: Bool?) { + self.className = className + self.color = color + self.declawed = declawed + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift new file mode 100644 index 00000000000..45b7dbb26dc --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -0,0 +1,18 @@ +// +// CatAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct CatAllOf: Codable { + + internal var declawed: Bool? + + internal init(declawed: Bool?) { + self.declawed = declawed + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift new file mode 100644 index 00000000000..849bf788dfb --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -0,0 +1,20 @@ +// +// Category.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Category: Codable { + + internal var id: Int64? + internal var name: String = "default-name" + + internal init(id: Int64?, name: String) { + self.id = id + self.name = name + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift new file mode 100644 index 00000000000..c9cb2dc710f --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -0,0 +1,20 @@ +// +// ClassModel.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing model with \"_class\" property */ + +internal struct ClassModel: Codable { + + internal var _class: String? + + internal init(_class: String?) { + self._class = _class + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift new file mode 100644 index 00000000000..ddee836043f --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -0,0 +1,18 @@ +// +// Client.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Client: Codable { + + internal var client: String? + + internal init(client: String?) { + self.client = client + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift new file mode 100644 index 00000000000..6b5250de4a4 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -0,0 +1,22 @@ +// +// Dog.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Dog: Codable { + + internal var className: String + internal var color: String? = "red" + internal var breed: String? + + internal init(className: String, color: String?, breed: String?) { + self.className = className + self.color = color + self.breed = breed + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift new file mode 100644 index 00000000000..ef3ff7f1d78 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -0,0 +1,18 @@ +// +// DogAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct DogAllOf: Codable { + + internal var breed: String? + + internal init(breed: String?) { + self.breed = breed + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift new file mode 100644 index 00000000000..b84e5e2e1e2 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -0,0 +1,33 @@ +// +// EnumArrays.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct EnumArrays: Codable { + + internal enum JustSymbol: String, Codable { + case greaterThanOrEqualTo = ">=" + case dollar = "$" + } + internal enum ArrayEnum: String, Codable { + case fish = "fish" + case crab = "crab" + } + internal var justSymbol: JustSymbol? + internal var arrayEnum: [ArrayEnum]? + + internal init(justSymbol: JustSymbol?, arrayEnum: [ArrayEnum]?) { + self.justSymbol = justSymbol + self.arrayEnum = arrayEnum + } + + internal enum CodingKeys: String, CodingKey { + case justSymbol = "just_symbol" + case arrayEnum = "array_enum" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift new file mode 100644 index 00000000000..2520f9bd859 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -0,0 +1,14 @@ +// +// EnumClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal enum EnumClass: String, Codable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift new file mode 100644 index 00000000000..eba9a8056ef --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -0,0 +1,52 @@ +// +// EnumTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct EnumTest: Codable { + + internal enum EnumString: String, Codable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + internal enum EnumStringRequired: String, Codable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + internal enum EnumInteger: Int, Codable { + case _1 = 1 + case number1 = -1 + } + internal enum EnumNumber: Double, Codable { + case _11 = 1.1 + case number12 = -1.2 + } + internal var enumString: EnumString? + internal var enumStringRequired: EnumStringRequired + internal var enumInteger: EnumInteger? + internal var enumNumber: EnumNumber? + internal var outerEnum: OuterEnum? + + internal init(enumString: EnumString?, enumStringRequired: EnumStringRequired, enumInteger: EnumInteger?, enumNumber: EnumNumber?, outerEnum: OuterEnum?) { + self.enumString = enumString + self.enumStringRequired = enumStringRequired + self.enumInteger = enumInteger + self.enumNumber = enumNumber + self.outerEnum = outerEnum + } + + internal enum CodingKeys: String, CodingKey { + case enumString = "enum_string" + case enumStringRequired = "enum_string_required" + case enumInteger = "enum_integer" + case enumNumber = "enum_number" + case outerEnum + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift new file mode 100644 index 00000000000..2845c6bb4db --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -0,0 +1,21 @@ +// +// File.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Must be named `File` for test. */ + +internal struct File: Codable { + + /** Test capitalization */ + internal var sourceURI: String? + + internal init(sourceURI: String?) { + self.sourceURI = sourceURI + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift new file mode 100644 index 00000000000..e478e6c4b7d --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -0,0 +1,20 @@ +// +// FileSchemaTestClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct FileSchemaTestClass: Codable { + + internal var file: File? + internal var files: [File]? + + internal init(file: File?, files: [File]?) { + self.file = file + self.files = files + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift new file mode 100644 index 00000000000..23395c93b56 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -0,0 +1,42 @@ +// +// FormatTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct FormatTest: Codable { + + internal var integer: Int? + internal var int32: Int? + internal var int64: Int64? + internal var number: Double + internal var float: Float? + internal var double: Double? + internal var string: String? + internal var byte: Data + internal var binary: URL? + internal var date: Date + internal var dateTime: Date? + internal var uuid: UUID? + internal var password: String + + internal init(integer: Int?, int32: Int?, int64: Int64?, number: Double, float: Float?, double: Double?, string: String?, byte: Data, binary: URL?, date: Date, dateTime: Date?, uuid: UUID?, 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 + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift new file mode 100644 index 00000000000..831963ba2ed --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -0,0 +1,20 @@ +// +// HasOnlyReadOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct HasOnlyReadOnly: Codable { + + internal var bar: String? + internal var foo: String? + + internal init(bar: String?, foo: String?) { + self.bar = bar + self.foo = foo + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift new file mode 100644 index 00000000000..ba9579996d1 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -0,0 +1,22 @@ +// +// List.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct List: Codable { + + internal var _123list: String? + + internal init(_123list: String?) { + self._123list = _123list + } + + internal enum CodingKeys: String, CodingKey { + case _123list = "123-list" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift new file mode 100644 index 00000000000..f59541f7675 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -0,0 +1,35 @@ +// +// MapTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct MapTest: Codable { + + internal enum MapOfEnumString: String, Codable { + case upper = "UPPER" + case lower = "lower" + } + internal var mapMapOfString: [String: [String: String]]? + internal var mapOfEnumString: [String: String]? + internal var directMap: [String: Bool]? + internal var indirectMap: StringBooleanMap? + + internal init(mapMapOfString: [String: [String: String]]?, mapOfEnumString: [String: String]?, directMap: [String: Bool]?, indirectMap: StringBooleanMap?) { + self.mapMapOfString = mapMapOfString + self.mapOfEnumString = mapOfEnumString + self.directMap = directMap + self.indirectMap = indirectMap + } + + internal enum CodingKeys: String, CodingKey { + case mapMapOfString = "map_map_of_string" + case mapOfEnumString = "map_of_enum_string" + case directMap = "direct_map" + case indirectMap = "indirect_map" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift new file mode 100644 index 00000000000..c71bb9256b0 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -0,0 +1,22 @@ +// +// MixedPropertiesAndAdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct MixedPropertiesAndAdditionalPropertiesClass: Codable { + + internal var uuid: UUID? + internal var dateTime: Date? + internal var map: [String: Animal]? + + internal init(uuid: UUID?, dateTime: Date?, map: [String: Animal]?) { + self.uuid = uuid + self.dateTime = dateTime + self.map = map + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift new file mode 100644 index 00000000000..f0765ad5f0e --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -0,0 +1,27 @@ +// +// Model200Response.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing model name starting with number */ + +internal struct Model200Response: Codable { + + internal var name: Int? + internal var _class: String? + + internal init(name: Int?, _class: String?) { + self.name = name + self._class = _class + } + + internal enum CodingKeys: String, CodingKey { + case name + case _class = "class" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift new file mode 100644 index 00000000000..f0c7ab7def0 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -0,0 +1,33 @@ +// +// Name.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing model name same as property name */ + +internal struct Name: Codable { + + internal var name: Int + internal var snakeCase: Int? + internal var property: String? + internal var _123number: Int? + + internal init(name: Int, snakeCase: Int?, property: String?, _123number: Int?) { + self.name = name + self.snakeCase = snakeCase + self.property = property + self._123number = _123number + } + + internal enum CodingKeys: String, CodingKey { + case name + case snakeCase = "snake_case" + case property + case _123number = "123Number" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift new file mode 100644 index 00000000000..7dbe99f1426 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -0,0 +1,22 @@ +// +// NumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct NumberOnly: Codable { + + internal var justNumber: Double? + + internal init(justNumber: Double?) { + self.justNumber = justNumber + } + + internal enum CodingKeys: String, CodingKey { + case justNumber = "JustNumber" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift new file mode 100644 index 00000000000..7f575485bf7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -0,0 +1,34 @@ +// +// Order.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Order: Codable { + + internal enum Status: String, Codable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" + } + internal var id: Int64? + internal var petId: Int64? + internal var quantity: Int? + internal var shipDate: Date? + /** Order Status */ + internal var status: Status? + internal var complete: Bool? = false + + internal init(id: Int64?, petId: Int64?, quantity: Int?, shipDate: Date?, status: Status?, complete: Bool?) { + self.id = id + self.petId = petId + self.quantity = quantity + self.shipDate = shipDate + self.status = status + self.complete = complete + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift new file mode 100644 index 00000000000..04fbad30ef7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -0,0 +1,28 @@ +// +// OuterComposite.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct OuterComposite: Codable { + + internal var myNumber: Double? + internal var myString: String? + internal var myBoolean: Bool? + + internal init(myNumber: Double?, myString: String?, myBoolean: Bool?) { + self.myNumber = myNumber + self.myString = myString + self.myBoolean = myBoolean + } + + internal enum CodingKeys: String, CodingKey { + case myNumber = "my_number" + case myString = "my_string" + case myBoolean = "my_boolean" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift new file mode 100644 index 00000000000..fd2d4b4cdda --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -0,0 +1,14 @@ +// +// OuterEnum.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal enum OuterEnum: String, Codable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift new file mode 100644 index 00000000000..951f5929f92 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -0,0 +1,34 @@ +// +// Pet.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Pet: Codable { + + internal enum Status: String, Codable { + case available = "available" + case pending = "pending" + case sold = "sold" + } + internal var id: Int64? + internal var category: Category? + internal var name: String + internal var photoUrls: [String] + internal var tags: [Tag]? + /** pet status in the store */ + internal var status: Status? + + internal init(id: Int64?, category: Category?, name: String, photoUrls: [String], tags: [Tag]?, status: Status?) { + self.id = id + self.category = category + self.name = name + self.photoUrls = photoUrls + self.tags = tags + self.status = status + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift new file mode 100644 index 00000000000..d02c6cc5fd9 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -0,0 +1,20 @@ +// +// ReadOnlyFirst.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct ReadOnlyFirst: Codable { + + internal var bar: String? + internal var baz: String? + + internal init(bar: String?, baz: String?) { + self.bar = bar + self.baz = baz + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift new file mode 100644 index 00000000000..943da8ff453 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -0,0 +1,24 @@ +// +// Return.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing reserved words */ + +internal struct Return: Codable { + + internal var _return: Int? + + internal init(_return: Int?) { + self._return = _return + } + + internal enum CodingKeys: String, CodingKey { + case _return = "return" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift new file mode 100644 index 00000000000..b35724b1ca7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -0,0 +1,22 @@ +// +// SpecialModelName.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct SpecialModelName: Codable { + + internal var specialPropertyName: Int64? + + internal init(specialPropertyName: Int64?) { + self.specialPropertyName = specialPropertyName + } + + internal enum CodingKeys: String, CodingKey { + case specialPropertyName = "$special[property.name]" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift new file mode 100644 index 00000000000..dc3d00e1301 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -0,0 +1,45 @@ +// +// StringBooleanMap.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct StringBooleanMap: Codable { + + internal var additionalProperties: [String: Bool] = [:] + + internal subscript(key: String) -> Bool? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + internal func encode(to encoder: Encoder) throws { + + var container = encoder.container(keyedBy: String.self) + + try container.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + internal 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/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift new file mode 100644 index 00000000000..1e4de951fb2 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -0,0 +1,20 @@ +// +// Tag.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct Tag: Codable { + + internal var id: Int64? + internal var name: String? + + internal init(id: Int64?, name: String?) { + self.id = id + self.name = name + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift new file mode 100644 index 00000000000..0cff6b6a2f8 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -0,0 +1,34 @@ +// +// TypeHolderDefault.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct TypeHolderDefault: Codable { + + internal var stringItem: String = "what" + internal var numberItem: Double + internal var integerItem: Int + internal var boolItem: Bool = true + internal var arrayItem: [Int] + + internal 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 + } + + internal enum CodingKeys: String, CodingKey { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift new file mode 100644 index 00000000000..5d8f63dfe4a --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -0,0 +1,34 @@ +// +// TypeHolderExample.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct TypeHolderExample: Codable { + + internal var stringItem: String + internal var numberItem: Double + internal var integerItem: Int + internal var boolItem: Bool + internal var arrayItem: [Int] + + internal 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 + } + + internal enum CodingKeys: String, CodingKey { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift new file mode 100644 index 00000000000..ada8a7f82d9 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -0,0 +1,33 @@ +// +// User.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct User: Codable { + + internal var id: Int64? + internal var username: String? + internal var firstName: String? + internal var lastName: String? + internal var email: String? + internal var password: String? + internal var phone: String? + /** User Status */ + internal var userStatus: Int? + + internal init(id: Int64?, username: String?, firstName: String?, lastName: String?, email: String?, password: String?, phone: String?, userStatus: Int?) { + self.id = id + self.username = username + self.firstName = firstName + self.lastName = lastName + self.email = email + self.password = password + self.phone = phone + self.userStatus = userStatus + } + +} diff --git a/samples/client/petstore/swift4/nonPublicApi/README.md b/samples/client/petstore/swift4/nonPublicApi/README.md new file mode 100644 index 00000000000..0711eb87054 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/README.md @@ -0,0 +1,141 @@ +# Swift4 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 from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: +- Build package: org.openapitools.codegen.languages.Swift4Codegen + +## 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/swift4/objcCompatible/docs/AdditionalPropertiesAnyType.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesAnyType.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesAnyType.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesAnyType.md diff --git a/samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesArray.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesArray.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesArray.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesArray.md diff --git a/samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesBoolean.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesBoolean.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesBoolean.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesBoolean.md diff --git a/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesClass.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..e22d28be1de --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/objcCompatible/docs/AdditionalPropertiesInteger.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesInteger.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesInteger.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesInteger.md diff --git a/samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesNumber.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesNumber.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesNumber.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesNumber.md diff --git a/samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesObject.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesObject.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesObject.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesObject.md diff --git a/samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesString.md b/samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesString.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/AdditionalPropertiesString.md rename to samples/client/petstore/swift4/nonPublicApi/docs/AdditionalPropertiesString.md diff --git a/samples/client/petstore/swift4/nonPublicApi/docs/Animal.md b/samples/client/petstore/swift4/nonPublicApi/docs/Animal.md new file mode 100644 index 00000000000..69c601455cd --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/AnimalFarm.md b/samples/client/petstore/swift4/nonPublicApi/docs/AnimalFarm.md new file mode 100644 index 00000000000..df6bab21dae --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/AnotherFakeAPI.md b/samples/client/petstore/swift4/nonPublicApi/docs/AnotherFakeAPI.md new file mode 100644 index 00000000000..387f5f5bb0c --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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 + internal 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/swift4/nonPublicApi/docs/ApiResponse.md b/samples/client/petstore/swift4/nonPublicApi/docs/ApiResponse.md new file mode 100644 index 00000000000..c6d9768fe9b --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/swift4/nonPublicApi/docs/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..c6fceff5e08 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/ArrayOfNumberOnly.md b/samples/client/petstore/swift4/nonPublicApi/docs/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..f09f8fa6f70 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/ArrayTest.md b/samples/client/petstore/swift4/nonPublicApi/docs/ArrayTest.md new file mode 100644 index 00000000000..bf416b8330c --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Capitalization.md b/samples/client/petstore/swift4/nonPublicApi/docs/Capitalization.md new file mode 100644 index 00000000000..95374216c77 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Cat.md b/samples/client/petstore/swift4/nonPublicApi/docs/Cat.md new file mode 100644 index 00000000000..fb5949b1576 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/CatAllOf.md b/samples/client/petstore/swift4/nonPublicApi/docs/CatAllOf.md new file mode 100644 index 00000000000..79789be61c0 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Category.md b/samples/client/petstore/swift4/nonPublicApi/docs/Category.md new file mode 100644 index 00000000000..5ca5408c0f9 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/ClassModel.md b/samples/client/petstore/swift4/nonPublicApi/docs/ClassModel.md new file mode 100644 index 00000000000..e3912fdf0fd --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Client.md b/samples/client/petstore/swift4/nonPublicApi/docs/Client.md new file mode 100644 index 00000000000..0de1b238c36 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Dog.md b/samples/client/petstore/swift4/nonPublicApi/docs/Dog.md new file mode 100644 index 00000000000..4824786da04 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/DogAllOf.md b/samples/client/petstore/swift4/nonPublicApi/docs/DogAllOf.md new file mode 100644 index 00000000000..9302ef52e93 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/EnumArrays.md b/samples/client/petstore/swift4/nonPublicApi/docs/EnumArrays.md new file mode 100644 index 00000000000..b9a9807d3c8 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/EnumClass.md b/samples/client/petstore/swift4/nonPublicApi/docs/EnumClass.md new file mode 100644 index 00000000000..67f017becd0 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/EnumTest.md b/samples/client/petstore/swift4/nonPublicApi/docs/EnumTest.md new file mode 100644 index 00000000000..bc9b036dd76 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/FakeAPI.md b/samples/client/petstore/swift4/nonPublicApi/docs/FakeAPI.md new file mode 100644 index 00000000000..f9924c14618 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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 + internal 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 = false // 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 + internal 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 + internal 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 + internal 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 + internal 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: [File(sourceURI: "sourceURI_example")]) // 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 + internal 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 + internal 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 + internal 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 + 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, 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 .$) +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 .$] + **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 + internal 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 = false // 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 = false // 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 + internal 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 + internal 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/swift4/nonPublicApi/docs/FakeClassnameTags123API.md b/samples/client/petstore/swift4/nonPublicApi/docs/FakeClassnameTags123API.md new file mode 100644 index 00000000000..4d82fa29a54 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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 + internal 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/swift4/nonPublicApi/docs/File.md b/samples/client/petstore/swift4/nonPublicApi/docs/File.md new file mode 100644 index 00000000000..3edfef17b79 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/FileSchemaTestClass.md b/samples/client/petstore/swift4/nonPublicApi/docs/FileSchemaTestClass.md new file mode 100644 index 00000000000..afdacc60b2c --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/FormatTest.md b/samples/client/petstore/swift4/nonPublicApi/docs/FormatTest.md new file mode 100644 index 00000000000..f74d94f6c46 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/HasOnlyReadOnly.md b/samples/client/petstore/swift4/nonPublicApi/docs/HasOnlyReadOnly.md new file mode 100644 index 00000000000..57b6e3a17e6 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/List.md b/samples/client/petstore/swift4/nonPublicApi/docs/List.md new file mode 100644 index 00000000000..b77718302ed --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/MapTest.md b/samples/client/petstore/swift4/nonPublicApi/docs/MapTest.md new file mode 100644 index 00000000000..56213c4113f --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/swift4/nonPublicApi/docs/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..fcffb8ecdbf --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Model200Response.md b/samples/client/petstore/swift4/nonPublicApi/docs/Model200Response.md new file mode 100644 index 00000000000..5865ea690cc --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Name.md b/samples/client/petstore/swift4/nonPublicApi/docs/Name.md new file mode 100644 index 00000000000..f7b180292cd --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/NumberOnly.md b/samples/client/petstore/swift4/nonPublicApi/docs/NumberOnly.md new file mode 100644 index 00000000000..72bd361168b --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Order.md b/samples/client/petstore/swift4/nonPublicApi/docs/Order.md new file mode 100644 index 00000000000..15487f01175 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/OuterComposite.md b/samples/client/petstore/swift4/nonPublicApi/docs/OuterComposite.md new file mode 100644 index 00000000000..d6b3583bc3f --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/OuterEnum.md b/samples/client/petstore/swift4/nonPublicApi/docs/OuterEnum.md new file mode 100644 index 00000000000..06d413b0168 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Pet.md b/samples/client/petstore/swift4/nonPublicApi/docs/Pet.md new file mode 100644 index 00000000000..5c05f98fad4 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/PetAPI.md b/samples/client/petstore/swift4/nonPublicApi/docs/PetAPI.md new file mode 100644 index 00000000000..ddafde461eb --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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/swift4/nonPublicApi/docs/ReadOnlyFirst.md b/samples/client/petstore/swift4/nonPublicApi/docs/ReadOnlyFirst.md new file mode 100644 index 00000000000..ed537b87598 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Return.md b/samples/client/petstore/swift4/nonPublicApi/docs/Return.md new file mode 100644 index 00000000000..66d17c27c88 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/SpecialModelName.md b/samples/client/petstore/swift4/nonPublicApi/docs/SpecialModelName.md new file mode 100644 index 00000000000..3ec27a38c2a --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/StoreAPI.md b/samples/client/petstore/swift4/nonPublicApi/docs/StoreAPI.md new file mode 100644 index 00000000000..cec8acecb81 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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 + internal 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 + internal 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 + internal 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 + internal 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/swift4/nonPublicApi/docs/StringBooleanMap.md b/samples/client/petstore/swift4/nonPublicApi/docs/StringBooleanMap.md new file mode 100644 index 00000000000..7abf11ec68b --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/Tag.md b/samples/client/petstore/swift4/nonPublicApi/docs/Tag.md new file mode 100644 index 00000000000..ff4ac8aa451 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/TypeHolderDefault.md b/samples/client/petstore/swift4/nonPublicApi/docs/TypeHolderDefault.md new file mode 100644 index 00000000000..5161394bdc3 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/TypeHolderExample.md b/samples/client/petstore/swift4/nonPublicApi/docs/TypeHolderExample.md new file mode 100644 index 00000000000..46d0471cd71 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/User.md b/samples/client/petstore/swift4/nonPublicApi/docs/User.md new file mode 100644 index 00000000000..5a439de0ff9 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/docs/UserAPI.md b/samples/client/petstore/swift4/nonPublicApi/docs/UserAPI.md new file mode 100644 index 00000000000..56fba1b3c9e --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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 + internal 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/swift4/objcCompatible/docs/XmlItem.md b/samples/client/petstore/swift4/nonPublicApi/docs/XmlItem.md similarity index 100% rename from samples/client/petstore/swift4/objcCompatible/docs/XmlItem.md rename to samples/client/petstore/swift4/nonPublicApi/docs/XmlItem.md diff --git a/samples/client/petstore/swift4/nonPublicApi/git_push.sh b/samples/client/petstore/swift4/nonPublicApi/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/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/swift4/nonPublicApi/pom.xml b/samples/client/petstore/swift4/nonPublicApi/pom.xml new file mode 100644 index 00000000000..5caba9cb463 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + io.swagger + Swift4PetstoreClientTests + pom + 1.0-SNAPSHOT + Swift4 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/swift4/nonPublicApi/project.yml b/samples/client/petstore/swift4/nonPublicApi/project.yml new file mode 100644 index 00000000000..148b42517be --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/project.yml @@ -0,0 +1,15 @@ +name: PetstoreClient +targets: + PetstoreClient: + type: framework + platform: iOS + deploymentTarget: "10.0" + sources: [PetstoreClient] + info: + path: ./Info.plist + version: 1.0.0 + settings: + APPLICATION_EXTENSION_API_ONLY: true + scheme: {} + dependencies: + - carthage: Alamofire diff --git a/samples/client/petstore/swift4/nonPublicApi/run_spmbuild.sh b/samples/client/petstore/swift4/nonPublicApi/run_spmbuild.sh new file mode 100755 index 00000000000..1a9f585ad05 --- /dev/null +++ b/samples/client/petstore/swift4/nonPublicApi/run_spmbuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +swift build && exit ${PIPESTATUS[0]} diff --git a/samples/client/petstore/swift4/swift4_test_all.sh b/samples/client/petstore/swift4/swift4_test_all.sh index 4d302a15692..6f093e54039 100755 --- a/samples/client/petstore/swift4/swift4_test_all.sh +++ b/samples/client/petstore/swift4/swift4_test_all.sh @@ -11,6 +11,7 @@ mvn -f $DIRECTORY/rxswiftLibrary/SwaggerClientTests/pom.xml integration-test # spm build mvn -f $DIRECTORY/default/pom.xml integration-test +mvn -f $DIRECTORY/nonPublicApi/pom.xml integration-test mvn -f $DIRECTORY/objcCompatible/pom.xml integration-test mvn -f $DIRECTORY/promisekitLibrary/pom.xml integration-test mvn -f $DIRECTORY/rxswiftLibrary/pom.xml integration-test From a9a131ac51697995505a363254960c06b7779235 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 25 Nov 2019 18:11:10 +0800 Subject: [PATCH 15/96] Add a link to the YouTube playlist. (#4603) --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a5dc22d0df2..08f47e214ea 100644 --- a/README.md +++ b/README.md @@ -699,7 +699,8 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019-11-07 - [API First development with OpenAPI - You should you practise it !?](https://www.youtube.com/watch?v=F9iF3a1Z8Y8) by [Nick Van Hoof](https://www.nickvanhoof.com/) at [Devoxx Belgium 2019](https://devoxx.be/) - 2019-11-08 - [JHipster beyond CRUD - API-First for Enterprises by Enrico Costanzi](https://www.youtube.com/watch?v=m28JFovKQ20) by [Enrico Costanzi](https://twitter.com/enricocostanzi) at [JHipster Conf 2019 in Paris](https://jhipster-conf.github.io/) - 2019-11-11 - [TypeScript REST APIクライアント](https://qiita.com/unhurried/items/7b74f7d3c43545dadd2b) by [@unhurried](https://qiita.com/unhurried) -- 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/) +- 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/) +- 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com) ## [6 - About Us](#table-of-contents) From 006ec182ef54480502c70bd3bf47176f1f2ea293 Mon Sep 17 00:00:00 2001 From: Toby Murray Date: Mon, 25 Nov 2019 09:34:31 -0500 Subject: [PATCH 16/96] [JAVA] Update Gradle in generated Java projects from 2.14.1 to 6.0.1 (#4536) * Update Gradle in generated Java projects from 2.14.1 to 6.0.1 * Upgrade Java 11 native Gradle from 5.5 to 6.0.1 When Java 11 native client library was introduced it was introduced with an overridden version of the Gradle wrapper (5.5 instead of 2.14.1). From looking at that PR, there doesn't appear to be any specific reason for the versions to differ. This removes the only override of the Gradle wrapper so all the Java projects are up to date and shares the same version. --- .../main/resources/Java/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../Java/gradle-wrapper.properties.mustache | 2 +- .../main/resources/Java/gradlew.bat.mustache | 18 +- .../src/main/resources/Java/gradlew.mustache | 51 +++-- .../Java/libraries/native/gradle-wrapper.jar | Bin 55616 -> 0 bytes .../native/gradle-wrapper.properties.mustache | 5 - .../libraries/native/gradlew.bat.mustache | 100 ---------- .../Java/libraries/native/gradlew.mustache | 188 ------------------ .../feign/gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/feign/gradlew | 51 +++-- .../client/petstore/java/feign/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/feign10x/gradlew | 51 +++-- .../client/petstore/java/feign10x/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/google-api-client/gradlew | 51 +++-- .../java/google-api-client/gradlew.bat | 18 +- .../jersey1/gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/jersey1/gradlew | 51 +++-- .../client/petstore/java/jersey1/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/jersey2-java6/gradlew | 51 +++-- .../petstore/java/jersey2-java6/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/jersey2-java8/gradlew | 51 +++-- .../petstore/java/jersey2-java8/gradlew.bat | 18 +- .../jersey2/gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/jersey2/gradlew | 51 +++-- .../client/petstore/java/jersey2/gradlew.bat | 18 +- .../native/gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/native/gradlew | 33 ++- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../java/okhttp-gson-parcelableModel/gradlew | 51 +++-- .../okhttp-gson-parcelableModel/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/okhttp-gson/gradlew | 51 +++-- .../petstore/java/okhttp-gson/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/rest-assured/gradlew | 51 +++-- .../petstore/java/rest-assured/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/resteasy/gradlew | 51 +++-- .../client/petstore/java/resteasy/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../java/resttemplate-withXml/gradlew | 51 +++-- .../java/resttemplate-withXml/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/resttemplate/gradlew | 51 +++-- .../petstore/java/resttemplate/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/retrofit/gradlew | 51 +++-- .../client/petstore/java/retrofit/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/retrofit2-play24/gradlew | 51 +++-- .../java/retrofit2-play24/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/retrofit2-play25/gradlew | 51 +++-- .../java/retrofit2-play25/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/retrofit2-play26/gradlew | 51 +++-- .../java/retrofit2-play26/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/retrofit2/gradlew | 51 +++-- .../petstore/java/retrofit2/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/retrofit2rx/gradlew | 51 +++-- .../petstore/java/retrofit2rx/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/retrofit2rx2/gradlew | 51 +++-- .../petstore/java/retrofit2rx2/gradlew.bat | 18 +- .../vertx/gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/client/petstore/java/vertx/gradlew | 51 +++-- .../client/petstore/java/vertx/gradlew.bat | 18 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 58702 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/webclient/gradlew | 51 +++-- .../petstore/java/webclient/gradlew.bat | 18 +- 99 files changed, 1142 insertions(+), 819 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/native/gradle-wrapper.jar delete mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/native/gradle-wrapper.properties.mustache delete mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/native/gradlew.bat.mustache delete mode 100755 modules/openapi-generator/src/main/resources/Java/libraries/native/gradlew.mustache diff --git a/modules/openapi-generator/src/main/resources/Java/gradle-wrapper.jar b/modules/openapi-generator/src/main/resources/Java/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b 100644 GIT binary patch delta 19358 zcmY(pV{o8d(5{ZQC{`wryj-XMelu)c1G&>snpi*Ij)j z*Zi0s|4~Z|ijYLUP}~Lz0)q1c1cWi+FDYh%JSaLq#>`-1Yvke*tvq4B@C%)Pq1BDK zIQT)#EAf|sl$A{%#~%o_xL*u(%5DKGvKPc@<2VxgFdyi696#%Je!Nf()}g^b>$x(! z5V=e*wLMSI7;FO|o)KLj_pJ?oIzX>>yJO{ukbK!7Fte=+HeCX=D}FQV5FD4Gw&K_n zY(<3u{AM$zj3&h>$KjLHMN4LUa^Cj2Z~-?-%;SU>^;GBsBTn}3O55XXDsz;y5~OAY zSYB7KBRi_r3vTl~W-U3cRKF;~ak&Gk)P0Es$0d*FWU|Vp$;Jy$CG;$sPCeGHsaTiP z4NncIlCZfeRlg)qq1#_qD9S})ZFMOQN=@s4bF>6gFQMf!=ODhvTc$x$+mM?&s#*c7 zQ>Fxy1o%XLzBNFh__2<_7^(y8l9rP}@w?!`?pl~Uvv+MEh(9ffVf~Y`zY}qiwC-7QwQAAK1HlX*=@dA`<_1BGwq_?)Qy1m~v*o zz0;*gj^vo-!38?YFsICVrg8@}*HphDWO7AoonvvLB<3LhQ^osqQ@FtUxh^WHe9(GG zcYvoVY<;B{!5dUbf2hwvQRW9YEC>iRGzbWY5Qr5hT?G*Y2ngAKPxSxqpYefp6*LX( zZvvOqTDm{XG~t1D!crh;j7{pb>d{oQ5cHsSjcW{J#Fh5$r{)E-*4I^Ce9r+bUocPP zD=bY5DelEU!u|tqhm@3YXYb@{!}jB|9_P2f=O?p&!HbkQ2pWt200az{NNOSzxe4y| z_>E8!6RDB9IDCq!?ywKb(O&>#q%#T`(^R)l&8d?}SYEL@#8Iyw3RRhfq?OnNpOf5o zC0yT^ObE_MX=OaJ;3p!3k<_ps=+DsnU^7UwakjQB=0@kV6r8{kR}~L=))&+NHQYJ?031gnbd?2_%unt)+V$ z--Rvd7U-(rby)aBaMZhoV{Y;y z5Ik;Jx=P6x%>ab)vVz<|Uf8P$6OanjWpv*_1&ob>-{TBT9^>c5ssuLUKd4djcUXPp zt7xIyqyw|GG)xZyHGtJ!vnImfg;kcgHknMa-n?bK0!4P#((vu$nYzQ=QTW!9 zxJG4wzX|=MT->&3y_03haK<^0T7qg$oNCBz^7tYzDWH5H?_PCrqkQizNv1>TYQz6` z+-&NIVko21p}xK3*fN|8_l~2-)+HKsBdKPkU-6TF{$RNP_QveWbd9b~a}VN*2fqDZ z^NL}|V)LpkNu&4eOlM(Yw)~ygIb&&tN9B5F5xq74O?-1{TxqEnGb22d&a&>iIn15f z8ot?c0^lB_QggM-1$-vIq1Ow(XuR{kZenQqO#&=`b|w^( zavOMRG)HWj^jZG(!jw4qJ+oB$&G=9)67vR#BntUIb>ym?6uK}9ZH6H}H#v|aAIIa8 z2Rbtj_T@5jgS*sZl16x?I+^oDYcFBm$Op6cLWBPX{}FYUZ%f75D$WsoxGY=Rv&erv z@$yBh+i>)}hI}d`RePv1@hAK|Kfzla{MvxrQ^QZi`NY#Ji2dyOh5JbGdz7%f2*c_R z3brCwmTDQ*lJ(zTB`{CSU^K!p2^&A#ohTtKsQH|aAz|Z*ib0UjutE92pTI|;xyDR4 zy15iif0*uFd#HqbgCy8M-Xc(wn{aS}gMh3+{Wnkl?*s*)V4y_J%#GY^T@%i+34tQD zO%*&f^zThu4!8+OWl5^UX8&e(aOraO#=we;H@yfwxe`}5H$-$_<|dk39v_}Z~F`ExbUbm91h#Mmq{Gn6rt0UBqD|M*gRK& z!WlbhFF%0!M+$rtt0;brE~bEp#Mb@9Y5j~$j3nc$uaVHpX(x+0_L+1)iWwnv=sqt2 z{!_B<$bQj8x5krLQG5$+fMe467lZ-bntoHgm-vg=E+jmi#7l|YKg4MkT|o9qXs7O{ zPce4Ch<DLkQ90Y0vFIFki_EwJ5y``6gEzCw<>uD-l~e{`K59u0#)|utxTPrJ#U?GAKow z1w>?jz&zA)&V}0YFP1%bDo`*U!;*^EXEsPhjP4M18=^f7Gq$v83Bec{m~xnyo2@%y zO|Skthc5O>mZxT5U7v?jz`2166KvfjTntaGS<}r@n$StbscaJ=0L#%L$lNw^FLa#F zQ|)eSE#AzPRK5qi(GfX?zR|cRgriZ1%O4SLWKN;-4WZN62n+&F0&tqle?HRsk$_ok zINsaX*ePwc8Ne|BTI5#xa2j5Yw{ma1K!suf-)X+xR`e4hNsZnxhXiAu`0qwg^ zzpz8^TtYKkqja3m23*FRLyb~*t1#`Q;;&(p*zq=vac}D=L#Ao(CmTggr@-G+pkb2GbsvQOmYv6CH#E;Fqn?IDj1Jg~`lM=yI?L(naC zL@Aa#;Al(hh`&_dosq4=W*z*v`^0~I0gHZ#|JzN%H>>bk0N_b1y5VWG%3hK=|9N7| zVDEfJ$zx<%Q3KxfE@Xa#U*e^fRWIMby2iI$|CAnAbU84=UYP%2H+DWH-{)Tx`>ACW zv1Eiz_V1+rJGr*I;G&zdkZ3lH$O%@E+MRk&)-vM)@)kWlV)Li>D6VpczFT$d6HlXO zWys=#-x5{L5B(5G^{b+B#EX?r03Smb&y| zZQOHjpOJpZD{aYM_ByLQLXoo&qPH`0k$(CMW-@?QNsmdl`Yq4%A2%QJ9lszn)t+hr zF49x$!=o3vY9y+EP)%p5;>NvItCbjQF@{PM{coZw+g4P2b`;~3J zBSZ6#Rg3WlN%c?>f_0aFMXjUAK>exU|85wCtQ?{~L=X@(LJ$z*|F@u^f&U3|Ra!8f zx*Bd@vF2V11tmi!I!`O%tT84M%ecHT1QX$C6Xz>;lFOPb_4`~3^9gKEmf~q%COTUF zzcw)~VM7{2enBHk`qy%y$I7BJxiZu1od{z|pQg`ux#kr$f(2%nO9QKI7fES66gaCl!_7a3+*T7d1 z!1c%dp#7rvFS)s<=tk=Wb_A1xuW80T5I$1s_kFBi9N0f%al30mH5PAvuuslo22i8^ z%27?*V;-{k!|1=+Y9EoKz>FSQX1)ZU01oy?GMZW)gu9HrX!@_Wm^G7G8nw`mYbH~# zU+SaMD!56DfLdrJ2bt+OuF5j5a}YHrB-77x*|xF7+W3y_(=Hg^1Sgijj3@2_caGgF89hk~{S66!W!r-Sle^8}CkoOmxR9QM!AxKGXWdF#R~XfL0V?SY zrLu|1_@AcDvIor(%{4+PE&{Cir-Q}`fD^Zo{mI#AnKW566&dZPg4TEK%~m6>B>d=DvxVvY`B|f9HtOQFR2!rmUTX!+ zPG$*MYb_T!uQsWX%aiL!^u|FI0;oM02^*#hAP&V0_uN>3_S|A{to7DZNMrM(i_ZTO zD=bT@X>pq}@`1g?H|l zYTafd(T1`;>mZd^zql8NI{ttOO_#2-tE_T^dp4BvxSO=jk3)133sYH+ft5OH~VhZlZ z_@6<9Rq;)D@06@?Bu3ejqlj1Si{Nox!`6rC%!*R+_yX$w>AzV{%?|51_{;RQWo5!v zYQld*nMbA^q>0=%ZqZe0i=!AXqbN$N0MZ_Dzlpg?F@4hS^z2v#ei4f{sUp3(s}rf~ zmWA-vJ#DRFwemue{TLSUo@pM+ig9;K)yrkL$#H@}vx~D`+kW?~FJ&_O>de2d_UEJI z?1gCw=-$Lh#hiU!d#-J;>TGI>$cl}il-&6{?G)e2y+dX$GUVxkNn@mzZZsXJs0Il6Zp%pH`pxjxlj?qiX4W3Ku~?2tag+NKKWjN_L(;Vwh;7p_YROFR0OT@+ia}MA zc*+e%>`{)nTqFH#)v&%aRyZ=^X0nc_gW27dWZq00IY!~3NCbjgc*~w>*+^Wwi(Zrj z%?WHQ`|$UPFf&HdD{>)`sdz`lH$nt0H_#Il1VrOB*-wrR{lsgfc4=Hb%$fAmQB4hg zN$sjUUy7hx>hu@c)wXD>$p-N8YdtGDGX?Jc zB|;}f;}@HdrV?YbL8fFQ(oh2F<-6@a_Yw+%e(r*rnM$(+^qnI);CwGUBb(%D8s>a| z4l~Db+%%gZIW@vPWYDx9Ywzj>H9Xd$e=HGi+LV$~rO}8?b`3p_(${mRlwl!qu-CVw z5sOEx2|c#@b#M#JxO`Af>+Y|$07Ag!F`U08#un@^jT|5=wE(+J)`t-IkvT=Wj*I%w ze$v%;GB|_7-2D^)GA4?X`RHPig=yH_O$| zQ*hlwxteS*EzvT_?Xjx6-1st#XI<`luVUlo%BhvT%noNd-608is+MzanEdac?boLE zZnxU2vw?)dvD!pAi^fDv)@uij8moc*?UT$lY3F6}qu%O2*K(OIj!9akE>#&_jXApR znV!Leva@$)AUk|AOZ5xNk#c9alVKI=z$bYJZ)Z;DSST3J+kAaixyu9HMwY~O31>hRQz zH%w$mT2;TDvpd~6m8p8P(@(otxf7Y)1Do+@W9fr$pjqzq*kWomd@|4xt9q@R^ke*( zjCA=ao#8t~MN=?g-bl~b zX1Y)uFPG8Sq2`^u#8H-3KP^KeSOdHKXlWCG(bucCs4KAvUn!I(eyO%dt;4sL%+vJ^ z$PXJ+CYz)z+Z{e*xb|q>k2|9R@F}GvM0&AXn%n6jzY!5A(~~MDj(jI4Hs#u$9sO#O z@unT9UsYp?Miead9$%z7LwL8x+fov-j~!@f?%8^4fS{9vQr9=_YLe7}JNa*Tb@*w+ z!=D(O@+N9*2Qx-)B`s~_2U+5Ohz%A1tKiPQCSuYsJmD>T`-=y9n|>MdlCmxPHNw&@ zC6%rMjsv(f?qH}E4Gn&TW18h-$9tdJJJuECPV%s5))hAFPB&b+f4Da4>IU^5i)_nh z7Ir3=u(sKyetXoKy0E(5ds3BiY!(uB_ZCLYf0s4yxf@^RFj@F%D_ksp+dt_6x_98~ z&X!28)dTRa&L@@~G3LtlK8Scc=d?9=*8Hl#B?RP9*tus~o;S|+{ERORfQ!d9G8-uX$rB2SKLX9l)2D?=nVOj(J3-w^P;v`@ zHFD1tgvBhHh1eaTWX0<>VO*=whJF@FHptT%}P&v>3| zy-@HEI8h0nWfqunGS1;gYqMN3BA=13e`Fh6&9`9D_27LSlRuYgEsI{l;PK5*<;B{} zejAr>JEN!HK?jw#TYbVe!*d+hs&Q>h=h%I;1qrUdHkjag=rc5x88~nmEI*y!8i~8g z4@r!^(q+?@zLhAa?$R-;^Q62kh!EJp_5mq_6c&g&xD5YR@iC=#do?ypd7FBtlU?R^tp&Hh3g z5-ljcm?JEyZA&1iH0B=+Qn1`c3dTmo=PCgcBo_d)nniSq~X$MQw;sUOcJdD}j^Rqr{6ZD*-mNrMUi7c9W z0v4=#@j*HUs#%0y-LI|GnHQ>;W3MPv#lD7v0wg!eo3 z*3ZEunfiNPwq`PkcS>o{L|ee5i0Od;yJ@Kv}*X<7XFF*YnxKmI&&| zm|#cALK4L3#B*L-7N^6P#&H)8q1VSQEr@zJ1Z;MmF>7|2@KD3SjV<>^)ebie4Otu5 zjM@#r2Ql-!58>CTh&o;2iK2foBJ<%{7U-k8C_SvL`!|wN<<_}VxQ|wC(sisx`PO=a z*62E6z~K34Oahp1nEaAicB~8C) zScJ!(-rf18vu7;+*7=B-AVXQ{;QPVHCyfB$k5oQts5t~psC>&Lj^QiWXNGa^BsQei zdNvYv7#jO>s{}!mkVBLbnWK0s!26kiXh&U#`(}pt+8Muw6SJKgW+FgjNZJwK`v#nrcgkWwAa+> z%sbW{=Roan$-e{99%)7qVGg^%-ajUuk6XxTiM?1*7OQoQvoTnU8Oj(wotFo&Y>1LB z+0YsrNbC{eCC!e##fbOloDJlX=lz!d6x$_yM0UO)p*u^pwB$tNR&&F4Pw$+3eh%3q zw^Hk3|LsqUsydT)PSRH#+)~7!UaJ&-WhoAkS^01>FIuEeL6I7;Uu$WJvvohG~szC*Q3S;hUQQpN%7zi_Z-T{yJRjeM2yHxu%=sSr6k>-TYjtA|j=ScjME zP&A#26RY}6He#@EJY;J*cdJVV$o@e3!*MUmVt@9D`;;#+fEKrGNLsW@b@Fdkv_yD- z^OpXt=S7hvjKbvx2ew|`Wi`13rq%baR_^ZlOHAOk^$TIQLbeLnVaYteJbSeEERX)ilQbp?v?BR-Xae2L`ZkF%Z5xp6R|Oz26+_J6)$2{@}1mjO!R<=0uK3EAL$Td9$U zM3i!a%yI*zzhRpr^4Ll`Xe$538;ycLR_Ub}pkj+w#ys8SxW5vgV2TE-l# z%HSBx5@;^uPT7-4!r(PNR7I1obm99fce(|KyzO;6y(t1^6 zCMrny8*{18K8WaB?Nj$xt!CTklmClzi9A*-UV(@v{5xb?znQ9WbR^qe_rTCePHVbaG{Ku}jw9lvw}n-S{`xPB5<`!1@@>qnNW*%#OuouZ zu4Im5f(t4mY5q;gX-|~xUBj5 z2YpPB+yzUn#Z!U<9rGR_clJr{uI_rYiWR>+ z)YRy)$NOq%Xprg7oWcqG#wFpF;6dF8turg%lQbZ=5tC$kG&X#J&rz<-VaVmyGh4_E zcb^7BKvkq{wLaP1ohh4CxYwPh*fxp*YO53x>#cB{qZjI|clP_z$$ZupyR(isF!$$CmECug6wr=smyJz17Wq z1}ESa(^bfJt8vrP>4dGqz)kngrOq{o{N%Ez3yI&0_M#ImfKP_S8R=81ieaT8p@^x) z1GX)Xc-SGXG{*^Fw2Jj$wj+rAkYpfkW}uZ@UNVC<>&=pyF7(LNCLUiRbr+zt=xmYO z#;3{fybSR>8b{Wl8oMvboV@g}HgiOpX&R8!cL5(LR6S|+1ob%~!K5L7#IC`B*Y{!0 zUdj<;EM!pYj2>vRQ~b*kn={tf$Y545N+-0=58ku2!VsiB3mw=P>BabXrx)r8vI z2Uc^UyA{Erj!;2_^=eo=(;|w&5Ux6R$!YWNIU#<3mOOAF z{>sNA>!D5(MEa2~43qN5727QF{--NG=|4g;6fr?PzeHWg7*>49ECGKZszf)anwT)0 zk^99xaCy{Au*XQ!K1VVFZZL|T*QZf&Zs|(uc@`dL^xf{^Ujt0I619l}lkv$%al-`4 zazp-hr6N$tv%Xe~vRJT~N&fe4i_Cy@5@UB|Z_{dHx$#GG+cyIy`M;RXgL3B&FyR&M zKgo34bP~Jp$@dOoxzx2RK{{b|<=EA{NcQT8F*S2^8wIXeiyfS~=CwRQ>^PNEJIw@0 zhSsL&=kLjg`%e|mg)l}A5fa`=hji~XI9unJPv|_AF4I6;_?nyIj69^)+16<9lH;~j z=5A#S@5~;4({-Vm#VwiNlu3D8g~E{my{`{Or4M`(>=mpVHG28DgvIiX040(?M07wo zeDh}Hsr>=>>1eJ>Ie#F-=`crqr{c3pWdQeNlamL7qw_3=HY9VH@k{6d1cc=OUNn#xkO56EUvv+Q z@2~n1x&+X9MPV$<3~gH%#$B4=0byZgJJg@V!Qh2i7l;|e4Xo!EbOGLqc2yEx=Ski< znqoyOw!(A6@4sxi9Ol%kB>2yXo>atsJD78>ZqiXR=gfRfdwg!acR#<&O@AKeg@IP~ z3mzH$ptFzP==_V9k%7(`69r%vlH zjHgi)mt=BmVrnL4tiBnp&Cxgf<0wv*oeF<&Z$Voylf`VB6!GS>tB|EsTsK<1mE2G_ z3B|;zTQXH{ApNbsoen5Sf9x8w^NXC7H=TRW!vshxq~)dGN+O}8IvGRrh{c8Whq)G^PZCvSr;!g`9OSBsYi8o*NSj9Rl6E1HawRG z;fIYQB2MTpEqi6_J={}6B)Tt<-G-)1Td{RnCnr=|7K^+~p#oxM`Nhp#tr1soO^8-= zMld<9W(qaBWR~2kuZ3i??x_EMbu^cOECEU zFhi_6B?QW?R2sr@&J0AuHXCOIsy9-v1i+7tYZMvccL3nY=pwE<+MLGeRfb^yv3hU= z`acRA%{~jy?jJd7H%t^5zA+gy_iI=;Vh{%XDHy&G21z&U5C$XM5Zk?+qOg8Pi3x?rin zrRubHgXMA)W%3y<=VR8=xz;23@@z1{?dpGJA-}M2lnLdY5yF|ENmL(6W!)*6ocm5qB#ZBmCPxyUQhBrWVB+k{%8 zpkkwB)%^>iE>iwz_LYr2&f?K}xzlSp9geuJG#F7>Io<+t*UO2zP|-h#nSly@(u{mj zVOs-rTdk{EzQsvy_eWmyi(Mk`a=L|^C2)%Ep?TX1w+!ZJ!I-+*OVC})6cKDRR3fJ{ zQEZpqVRgwJX4@&5mEo>Q#lhbB-~BtJclT#7)id?>v*trRo%Dq7pK2fXhR9S40Yc$7 z)!mBnvF#ZQ(fqj3Mb#AdMC*)g*N#k3&RWoD7iPm;*H;ELf-dj)Z^Ch(`KjQ4-axb2 zGx9MlMMC0^JA2%wa_Yi=Dhh*UX9zoj7NTQ8Xg(cOX%|9I;GiIS9Mg2F9E=R=UBaUiJei|k? zqc>h8g`=0n061nWiKyOE*@C9I1FD+kq=+qHD#mey8=MY+!9|r7wWC2GfN*lAAw6?Xz1{y=BC3nbBYl`-<#F({^vG)K^rgjAG3_XlJW2;52VLj)rohnkkz z&_`EL)Q0ZWHP2*a@|$N z|ILO+);R*RO&WZ+AAHRVvq=fFT>`Tii`q>@I>|3p>W6!23}cUZ4md@wgd)}v=H=0KG+jiUjujTm5zPWQhW0-%^Y?pO6C;l;t1e z-37<0NAz(aq~`q|;_N`h-7w$T_naOUs(b&mra0RO-V$Ox?|^7s3@qfMGWH6^I};*Q zAAnf>K+k`EvL{t21^zQFUcsKEpruayAmNU-CEdA&`*$Gdl97{;eITpC$k{&OpuVD^ zm4rw+1Yvko>yqXfu8Igq>~RB~xq==`q|IygP)rq=$V1nNQ}joST8Kh-ugDGa6U37m zn?bh>IIEt1eG&a{wF06B?#dVJKT94G1O)Vd^l2mpXh6!|#ns5xR>acG#O8lIi=@O& zg#|_I;hY9HT3Uh~QL%3Dw0eZXeG#;LY|`*K@CRdam@R^FBlPx|#;i9YuYnK>)MyHQ z?_DA@-x;gb;nV=LRiEkg?BizvhZ(EykI!4UURXjL$pW$g;n4nkcqG&I!UDPxvmZE> zCz^m6leNIM%g}_l9uvGB!QJzQGww3n2uAE_zktU^F=MkB@(pg)s2Hv8)l#MO39o*% z`spnVFQtPCR=od@<<(o9&<5@N+bb60nBa;mAfpq@&Y@K zr_#}zmTWw+s5}aXX(9*PER`!G` ziW3P10fzfbaW6)lH`q%~*Gsg<0~kF?ch9WLoAl_ug$D&<=9j2w_#H&GXixP?nYhbE zDUF!{f=qOC@~}Y`9|Xxk2#o;n`{;S+;e?kYDs5AV2>fKtuiiN|3MW(vl!$L+9Ad3K%i` zxj(otW`7KLp)fQmJSYtE4>d0`#<5Yl+bO*G(yC@LCo4V0^+30(2skw*sa~oz?SJJ< zJ{p2+uxm>tZ8IOpn!qjSl9KY&wnP+YmUoIhu2Xg6cXy3?AN5iv11Gy zFi?oYAXm*sT0eIn#j33T!;fZ12{zUprRSqG=YvoDXjqzcdS;)SY6@IX;b8xxF_Ka$ zq2|U^5aF0w*dX^tl?dzY)Q>^Abw#0|bx;B6h7E^0$-KRv^@A;2;?;{{=1zrsCix%t z{A7~(76{Mi$h&8EzZpwcufp-2Fb-cIFcMk#ot~p`FeIQ)!g@&ZqD)+Qqe94de=9Z5 zICCVezx$s|IUZY*1gr6GCEz}^L1U#Z;}TJ;LyB+h+o>+TOx>x!t4)-1w$FpJvQt9d zsgz#xe(EM5x4VELAVSFbdTP4-(HO`{t9xCd*8dxV^F=cyMcnF$dgGwPZKKi=7@e`W z!?f!6D^H61lf!XGMI=!aE5$l9L+_g$ix9`1Jw-t&+E686pVTb}ZmscRE65(Hm+_hj z`aqmRJH?6qRh&cO8^LxAv-=7Q$m}}2k0Gx$yztf=W>EPAQ!u&Vj0plvZUyC+P!SGd=ww~N8a?Av%h^|5;*Z~tmhGm=hT=B${NRJ zar?ckD)O2dPsFW~*u#^$Lp5#K@E34Xhq+PI8RVuX80gbiJF!W`Il@AKd(jez3RbIH z%fu~pBKbiPokz30+V0kF{n!x=Yo)39s>N`TAtNmREDs|pTox?mEd3jD@84|{5|}<` z-V`2Ql|mM{x)>2>OW~vDo0=6y%6!Nb|N76_Ny)Cqgj!bd1CNKfu590N=iko}^jIH@ z@><8(wv~dkJHkZpMC4!q5mu49lfbg(1(7=Cy71O~0hes6Go}9s6Jccw+D?A-oriRi zZPc7-X=>ihhDInpLrQs}aw?Oxg#yJ07Z-CW#ax!gmpZiK4Uu(9AU}!nQ70q|W7W%Q zR1$8fpuyU%n|P7rx|ZBAzh$((wSPNAhe<03dY}^rOo8rX%B&nvd1y_4M-b)l4RPv(yA_j$?jfFVDsS zyV$_NAk=7QANI_yVlqBl+zc*D`YzQps7)SI&D``xPuqkEX8{W+>`tJ!XIKrYZ$h&- zTckV4(LrivZAbuzU%0%1N@qs0B?Mj;jKjq&uLeJJDTI7~ZfMi^1vn z>1j;0uMea*XBG&#WYrlMcK-R)kh)cPaf*BlHxeLEhmc|o;OV3b`yBZXq3rF;h8FX! ztH?5`RxjE*jFC7fQ*88L9@uF}zSzR(3^R-{#ECtUIF>0rO z_5MEfH01*<5%kfba8cP(EVGcxUUaB)`Op#=qRgZ?!LSCP388yUc~sL(CucON?V#2} zdrRpcj2%Kq=kYcOQ1AYV;gppP5XyT~8r$%0@C3bt&2!9BAXl(mKd>nCEy8kdJx91E z9{eR@)5U$(V3Gss8qujMh0V!I`hJ`y68FU$*V6zdy7T$9urT#^EU9XuXej(y|MZeI zuORghu?{a(vnS7cIuN9~m3IkX4ImnqN3_>iov{`g!A3HV=(3|ZG^fpW$1pHy-`FSG z6N(jbrWX%97mKEczGr-smN@j%apos4;*6UmcYSw?3mrGe^(c$5r%=SV8HRha6o`?i;K@I@e@)p<-k2*Q zm%eam$JUMF%6m&-(xhkRU1&a&zKZ8bA4;WrN(4(ExcKwtAzbsMxAW|1+!RZsQ|^{l zUQ)}|wOpg6u@=Z_>?jw%w>4g&K17l{?ihfOnxqt>GG79NnmYtve(O<2p?7#A_kwZG z+bKn26_H@ysk>Lm#giw&yZm!E5DLQ11k*1*zoHzDZ$XE^(7M|*i0g$-b?ehx^cn7 zoU#vW+3~6Kq7#@Uoiu)I8&_>y+eKjKUntD$+=nHBa( z7-U<7w5f%=g5|IP6qxj>^l)(`c_+H}5^$X;Y|Qjap_4fVpVbpOseBi0XF^B>=}$EH zp}c0|<)8^XQz=E(pV}-CV0z2$V~2g>q?iG}Wl2%66jq8>*p%o}wYDIYvXTIZ`~BBB zRR#oUJ8G3D$F-ElF`Bx`JJ=O)ES)0#9+)J6f%&C%T;V1GRkRY`PMqQ@m+QeX8NF~je^gRhEz0}ZrM}Jq}2?8%UsWwd&LP^_) z&#GToJ+WYmbze%S{9i5OM1Qcp2Z)L%*J~tIUP-0gzA=bmPtOC?y2@MP(r`Fkq@%v; zUiQ$E1d0_@zY=TytHqZW_I!ZSrp53hUQPzQKswXwf@qt%MrT_3J;CZB#TU$i zguKBQf3ZVe2y}}P6Yzc|FZgSQd!=gn6mM_WfMV0sL!$H`Q>3S;MctLqmuWAgc*k*S z?r<4~E_>;Nz*3K-G(6OQ12$3-yc2gZ?K)hi`|exBo0utJtdsN0>d~7)^&?ltpv3ll zJVeW(f}qKH8lyl%#xIfH{iCyfHjos+g+=raOop8Ew&WVv z9X32eVes7O)eqXS*^e(v`pYmkpPQy^W7Hd(*+Ps1a}`+TJjB}Q;n!Hr4V7AV$lt=> z29XrAa=X`2HfGz*MDG(mbx`5qD&z&cJwPbk?lw7-Jg3zq;!9KMqgXND2AtV7PJ^Ap zl@T>Wf6|{*0er9TVkA=-o9jK3nK%y6)mgV zBTu?aCb#hWtt4UIaneFUEX2)8o1`Ts`x&`DrZA%ypj~XMe@=kK6g*qU0ZxmmSt*+H z{O4Hmd5zgq(X!&t&YUFS+oCcaoO~+;kP9b??tno|kzAWL%xE#C<4`*@33M*qF3ned zh8Xl+R;O8)nZibEVl)T@c|zI))|lwdsLp@y-tL9>1YsAPl@>H!1{4JXQjluPMJxR# zu!(*efK9xYM)4Ift8P@#)Hvslgjf2z4Mn)v5oh30fPPV9<50zppUXldIRb&__MqvZR}t7v?L`d#8JHi zVOJde)23%Gl=vsZq%^DBr5mj$SEu*c0CQb@35Gc% z!_nUm*)9in{bwx;V(I|1UZ5YgC1cTb{wLwqG!zu)n^Z_vqTY(wS9>O?$Z46p^7C9T z(4YUi5FPWH)WK*>0Jrhq+Ad3D!DysAi8`be7XcIw#T?i8$bxA*K5GbvLVI8}S$(!B zMRT@jIo-L`fwPe-lwJr*oVnnulu%D;X%J+MC~IN+4JdAKSf1IHe@Bq>INv-1?Y*(D zVeh)wz&Y%XE&r0%(!vC1UdzFPL=OidfV)I^MA(rbw33`Hy;$h(G&ytPa&z99A;01j zSMnh5_2Ks$XzPm=$0xG7vymO~Wg(GJ!`$pWPdlM1nic$}KPBVlpC$XsP8gdTeuwjc zW8=x#G&pDRtCHSv23$3bMX7=cJ(o?9uvw9A7KLiwb4Xkj)En2?)V3?#=f}-!01Jw* zT9=C3-Q#(Eh=8pcUOT4dywEUhFa3Pt5uy{yq4-p!jCW`1aq8{JFI_R2VDu_C{0h(N z*DoBFuArC-1S%G`GWU#F4-Y{iMII`H$-Vl?`l!%+yWkZ$w$yacXk=Yais%x0wvc`% z)!>*C%+!J01S)x((L%XIkR^2*B_5t9AbKO*+OMML z{C^6$@^~oMFFw7NF_z5DmN9mPk?o>I*G_i1vQBnpxUkIj(RpfD6o3#o#db+-{)M|UR zXV*!s$nJfNQ0HJ~P@_XdVLtO}>>-`gnJKq)Ll~;OH_pDh{owq>*{+r4M}dVR_~plt z#JlVr@eAYe6$sy;9~Ck$t(}P{%bB|IB0Nr+WsCVyaI1Z7HXP{71`WU;Bvk9*rZrXm z(+W(zs2>)|Dpvngk>n`cacNQdc1P*MS%e(2nOKLpeX1qZtpbSV9(NTO4oHo+7G!?7 zKNUrO^dK`m(3nA+p}FN-plKDLZz6^iBTD%B?S6INnU0BiwGn}}nugg(!@A&M+5`v^TxJ;cpKMz?kF^7Gj`dd4Ti_B_;gvv`tZ2f}n&Ag9)_BhM#Z8rQD zTt*{fcPe%`#C__8#usiz!aCmn$|QSWXyv=*n?ly{Ynr&}AcaI4&Y z1B|Njo)Fav18Nh)&pGtAl9?3cGmYz`yMNO_k9WCDR=EUg#X-L*bZK{^yF--Cs;bJYo}9Y z2FLC9Ne_wnR{7R-(hUmaHKZLWbOWO+MoJcwaBlAKk4hh@6ux=mW5Z7+wfaR2LsGQe z1>qIGq*Y;?yOUn#twQT&lpwX_>f4F8UY7_CTIe5Rrm2#c7w6DK#y;O>n{dU~S4fTX zyDmgY_MNvsQ2*rM{8=p&lh?S`Y**4$UHpKAjp_?l1E@~@^^82irZRJ1GTrmpR*mnxAu zy3QG?zFgCD?xo4D(QDO}k>2L4x*?*nP0?H#vf-nL^vO)duIt;WpT%b=Q0X9t%8zu&HIghPx=c?9wJFL zah82D37cCfPPDRTyy!UXWql#Rx@5jII&$eDVrsC(u2k<$j#Kj8^tzX!N~{z7g4r^6 zw67qE8J|A|T2D4GBi*Pi1?x|IN%KiHZ3<#C>B#m`YV}1cx65>G%Ab+(qzC5HvifJH z7U*3fu6wA?yosStSy8-%@;@3+SYOPxHTF_4vmdh>66Xa@ztWHP%jy%ER@|Y=Q91J# zzeNyB|K!|%a$iK{kWb~(wCK5)>F(}S8&}Uebh2l#qCyB>rMy&RSt;}ahxAgW-z4Z* zqo=tv=%$E9YiQ|PA9Ft^d1z4DvR+$J`rshps^C?R{$+$<>tdRy%MKC6NaCT8h1c)u z^c!dlUcrecc1_*^BbPO~3GdN4Z*mrG`4-eB$4MA4w`;iM^w#P#z~_3 z2#I{saJv&pa4z5o$7=|29iy%c^8q9u{~&^DB*`Z+g^}u`kXp!B|$Yo@VO0*{k~QMzxLiDdh9K|O+_C5?<+T8yjc{x?M?ZX&Bjvt z7;ai2foZ!2Wa7kTC9U|`7g^Abf&Ot}i}arhfPS0ZV6`0wvD`LAdXSS38>%}?g7W7$ zh(KhsbI(m7@4!un1P&ci*sbV=e_npu6dsa5Ou(Lvn9|q?=dVPMl_3AW;0E~}I*>mZ z40jxc02%B&p#^N2I7li2hT`D%Qw5ksgC-^h>Wl(mXR%<7X#^2|1xB4tP-8S(;!ffR zj7}WHcM)dgfnb*=^l<~~0ZJDRqQ%2d2^dBTfH9c8p2${G?>2*GlGre<`zVx=!iEAp zM<7<(7wI(#pxlE70mfwA344PS{K gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 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/modules/openapi-generator/src/main/resources/Java/libraries/native/gradlew.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/gradlew.mustache deleted file mode 100755 index 8e25e6c19d5..00000000000 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/gradlew.mustache +++ /dev/null @@ -1,188 +0,0 @@ -#!/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 -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - 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" "-Xms64m"' - -# 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/java/feign/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/java/feign/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b 100644 GIT binary patch delta 19358 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 gi|X0BE&rYTd7Zfqxa|GnRTZ+!>V{XEk%Q#I#Q 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 Date: Tue, 26 Nov 2019 10:32:38 +0800 Subject: [PATCH 17/96] Add a link to B9lab blog post (#4608) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 08f47e214ea..6b6ce564e3c 100644 --- a/README.md +++ b/README.md @@ -701,6 +701,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019-11-11 - [TypeScript REST APIクライアント](https://qiita.com/unhurried/items/7b74f7d3c43545dadd2b) by [@unhurried](https://qiita.com/unhurried) - 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/) - 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com) +- 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/) ## [6 - About Us](#table-of-contents) From 2d22ae90fc3d375a6ec16348afe3ec115bfb64a0 Mon Sep 17 00:00:00 2001 From: Marcel Ramos Date: Mon, 25 Nov 2019 21:38:56 -0500 Subject: [PATCH 18/96] [BUG][R] Fix documentation in R package (#4580) * wip: fix documentation tags * update model.mustache * update template for documentation * update mustache templates * update mustache templates * run ./bin/r-petstore and update R pkg docs --- .../src/main/resources/r/api.mustache | 8 ++++---- .../src/main/resources/r/model.mustache | 2 +- samples/client/petstore/R/R/category.R | 4 ++-- samples/client/petstore/R/R/model_api_response.R | 6 +++--- samples/client/petstore/R/R/order.R | 12 ++++++------ samples/client/petstore/R/R/pet.R | 12 ++++++------ samples/client/petstore/R/R/pet_api.R | 12 ++++++------ samples/client/petstore/R/R/store_api.R | 6 +++--- samples/client/petstore/R/R/tag.R | 4 ++-- samples/client/petstore/R/R/user.R | 16 ++++++++-------- samples/client/petstore/R/R/user_api.R | 10 +++++----- 11 files changed, 46 insertions(+), 46 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/r/api.mustache b/modules/openapi-generator/src/main/resources/r/api.mustache index 0fc38a78916..faae7a57b7f 100644 --- a/modules/openapi-generator/src/main/resources/r/api.mustache +++ b/modules/openapi-generator/src/main/resources/r/api.mustache @@ -26,7 +26,7 @@ #' \item \emph{ @param } {{paramName}} list( {{dataType}} ) {{/isPrimitiveType}} {{^isPrimitiveType}} -#' \item \emph{ @param } {{paramName}} list( \link[{{packageName}}:{{baseType}}]{ {{dataType}} } ) +#' \item \emph{ @param } {{paramName}} list( \link{{=<% %>=}}{<%dataType%>}<%={{ }}=%> ) {{/isPrimitiveType}} {{/items}} {{/isListContainer}} @@ -35,7 +35,7 @@ #' \item \emph{ @param } {{paramName}} named list( {{dataType}} ) {{/isPrimitiveType}} {{^isPrimitiveType}} -#' \item \emph{ @param } {{paramName}} named list( \link[{{packageName}}:{{baseType}}]{ {{dataType}} } ) +#' \item \emph{ @param } {{paramName}} named list( \link{{=<% %>=}}{<%dataType%>}<%={{ }}=%> ) {{/isPrimitiveType}} {{/isMapContainer}} {{/isContainer}} @@ -44,14 +44,14 @@ #' \item \emph{ @param } {{paramName}} {{dataType}} {{/isPrimitiveType}} {{^isPrimitiveType}} -#' \item \emph{ @param } {{paramName}} \link[{{packageName}}:{{baseType}}]{ {{dataType}} } +#' \item \emph{ @param } {{paramName}} \link{{=<% %>=}}{<%dataType%>}<%={{ }}=%> {{/isPrimitiveType}} {{/isContainer}} {{/isEnum}} {{/allParams}} {{#returnType}} {{^returnTypeIsPrimitive}} -#' \item \emph{ @returnType } \link[{{packageName}}:{{returnBaseType}}]{ {{#returnContainer}}{{#isListContainer}}list({{returnBaseType}}){{/isListContainer}}{{#isMapContainer}}named list({{returnBaseType}}){{/isMapContainer}}{{/returnContainer}}{{^returnContainer}}{{returnType}}{{/returnContainer}} } \cr +#' \item \emph{ @returnType } {{#returnContainer}}{{#isListContainer}}list( {{/isListContainer}}{{#isMapContainer}}named list( {{/isMapContainer}}{{/returnContainer}}\link{{=<% %>=}}{<%#returnContainer%><%={{ }}=%>{{returnBaseType}}{{/returnContainer}}{{^returnContainer}}{{returnType}}{{=<% %>=}}<%/returnContainer%>}<%={{ }}=%>{{#returnContainer}}{{#isListContainer}} ){{/isListContainer}}{{#isMapContainer}} ){{/isMapContainer}}{{/returnContainer}} \cr {{/returnTypeIsPrimitive}} {{/returnType}} #' diff --git a/modules/openapi-generator/src/main/resources/r/model.mustache b/modules/openapi-generator/src/main/resources/r/model.mustache index ee20e432e74..04594e28a00 100644 --- a/modules/openapi-generator/src/main/resources/r/model.mustache +++ b/modules/openapi-generator/src/main/resources/r/model.mustache @@ -6,7 +6,7 @@ #' @description {{classname}} Class #' @format An \code{R6Class} generator object {{#vars}} -#' @field {{baseName}} {{title}} {{^isPrimitiveType}} \link[{{packageName}}:{{complexType}}]{ {{/isPrimitiveType}} {{#isContainer}} {{#isListContainer}}list({{#items}}{{dataType}}{{/items}}){{/isListContainer}}{{#isMapContainer}}named list({{#items}}{{dataType}}{{/items}}){{/isMapContainer}} {{/isContainer}}{{^isContainer}}{{dataType}}{{/isContainer}} {{^isPrimitiveType}} } {{/isPrimitiveType}} {{^required}}[optional]{{/required}} +#' @field {{baseName}} {{title}} {{#isContainer}}{{#isListContainer}}list( {{/isListContainer}}{{#isMapContainer}}named list( {{/isMapContainer}}{{/isContainer}}{{^isPrimitiveType}}\link{{=<% %>=}}{<%/isPrimitiveType%><%={{ }}=%>{{#isContainer}}{{#items}}{{dataType}}{{/items}}{{/isContainer}}{{^isContainer}}{{dataType}}{{/isContainer}}{{=<% %>=}}<%^isPrimitiveType%>}<%={{ }}=%>{{/isPrimitiveType}}{{#isContainer}}{{#isListContainer}} ){{/isListContainer}}{{#isMapContainer}} ){{/isMapContainer}}{{/isContainer}} {{^required}}[optional]{{/required}} #' {{/vars}} #' diff --git a/samples/client/petstore/R/R/category.R b/samples/client/petstore/R/R/category.R index 05d5d77cce3..6ff2f1510cc 100644 --- a/samples/client/petstore/R/R/category.R +++ b/samples/client/petstore/R/R/category.R @@ -10,9 +10,9 @@ #' @title Category #' @description Category Class #' @format An \code{R6Class} generator object -#' @field id integer [optional] +#' @field id integer [optional] #' -#' @field name character [optional] +#' @field name character [optional] #' #' #' @importFrom 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 747dcc550a5..ddf573164b7 100644 --- a/samples/client/petstore/R/R/model_api_response.R +++ b/samples/client/petstore/R/R/model_api_response.R @@ -10,11 +10,11 @@ #' @title ModelApiResponse #' @description ModelApiResponse Class #' @format An \code{R6Class} generator object -#' @field code integer [optional] +#' @field code integer [optional] #' -#' @field type character [optional] +#' @field type character [optional] #' -#' @field message character [optional] +#' @field message character [optional] #' #' #' @importFrom R6 R6Class diff --git a/samples/client/petstore/R/R/order.R b/samples/client/petstore/R/R/order.R index 4629dcfb715..a5acac3bfff 100644 --- a/samples/client/petstore/R/R/order.R +++ b/samples/client/petstore/R/R/order.R @@ -10,17 +10,17 @@ #' @title Order #' @description Order Class #' @format An \code{R6Class} generator object -#' @field id integer [optional] +#' @field id integer [optional] #' -#' @field petId integer [optional] +#' @field petId integer [optional] #' -#' @field quantity integer [optional] +#' @field quantity integer [optional] #' -#' @field shipDate character [optional] +#' @field shipDate character [optional] #' -#' @field status character [optional] +#' @field status character [optional] #' -#' @field complete character [optional] +#' @field complete character [optional] #' #' #' @importFrom R6 R6Class diff --git a/samples/client/petstore/R/R/pet.R b/samples/client/petstore/R/R/pet.R index 1b2f6161dd8..307a5ed9704 100644 --- a/samples/client/petstore/R/R/pet.R +++ b/samples/client/petstore/R/R/pet.R @@ -10,17 +10,17 @@ #' @title Pet #' @description Pet Class #' @format An \code{R6Class} generator object -#' @field id integer [optional] +#' @field id integer [optional] #' -#' @field category \link[petstore:Category]{ Category } [optional] +#' @field category \link{Category} [optional] #' -#' @field name character +#' @field name character #' -#' @field photoUrls list(character) +#' @field photoUrls list( character ) #' -#' @field tags \link[petstore:Tag]{ list(Tag) } [optional] +#' @field tags list( \link{Tag} ) [optional] #' -#' @field status character [optional] +#' @field status character [optional] #' #' #' @importFrom R6 R6Class diff --git a/samples/client/petstore/R/R/pet_api.R b/samples/client/petstore/R/R/pet_api.R index 7b038534f04..e0ad8275d82 100644 --- a/samples/client/petstore/R/R/pet_api.R +++ b/samples/client/petstore/R/R/pet_api.R @@ -18,7 +18,7 @@ #' #' #' \itemize{ -#' \item \emph{ @param } body \link[petstore:Pet]{ Pet } +#' \item \emph{ @param } body \link{Pet} #' #' #' \item status code : 405 | Invalid input @@ -52,7 +52,7 @@ #' #' \itemize{ #' \item \emph{ @param } status Enum < [available, pending, sold] > -#' \item \emph{ @returnType } \link[petstore:Pet]{ list(Pet) } \cr +#' \item \emph{ @returnType } list( \link{Pet} ) \cr #' #' #' \item status code : 200 | successful operation @@ -76,7 +76,7 @@ #' #' \itemize{ #' \item \emph{ @param } tags list( character ) -#' \item \emph{ @returnType } \link[petstore:Pet]{ list(Pet) } \cr +#' \item \emph{ @returnType } list( \link{Pet} ) \cr #' #' #' \item status code : 200 | successful operation @@ -100,7 +100,7 @@ #' #' \itemize{ #' \item \emph{ @param } pet.id integer -#' \item \emph{ @returnType } \link[petstore:Pet]{ Pet } \cr +#' \item \emph{ @returnType } \link{Pet} \cr #' #' #' \item status code : 200 | successful operation @@ -130,7 +130,7 @@ #' #' #' \itemize{ -#' \item \emph{ @param } body \link[petstore:Pet]{ Pet } +#' \item \emph{ @param } body \link{Pet} #' #' #' \item status code : 400 | Invalid ID supplied @@ -181,7 +181,7 @@ #' \item \emph{ @param } pet.id integer #' \item \emph{ @param } additional.metadata character #' \item \emph{ @param } file data.frame -#' \item \emph{ @returnType } \link[petstore:ApiResponse]{ ModelApiResponse } \cr +#' \item \emph{ @returnType } \link{ModelApiResponse} \cr #' #' #' \item status code : 200 | successful operation diff --git a/samples/client/petstore/R/R/store_api.R b/samples/client/petstore/R/R/store_api.R index d46e165c71b..2205c3796d1 100644 --- a/samples/client/petstore/R/R/store_api.R +++ b/samples/client/petstore/R/R/store_api.R @@ -57,7 +57,7 @@ #' #' \itemize{ #' \item \emph{ @param } order.id integer -#' \item \emph{ @returnType } \link[petstore:Order]{ Order } \cr +#' \item \emph{ @returnType } \link{Order} \cr #' #' #' \item status code : 200 | successful operation @@ -87,8 +87,8 @@ #' #' #' \itemize{ -#' \item \emph{ @param } body \link[petstore:Order]{ Order } -#' \item \emph{ @returnType } \link[petstore:Order]{ Order } \cr +#' \item \emph{ @param } body \link{Order} +#' \item \emph{ @returnType } \link{Order} \cr #' #' #' \item status code : 200 | successful operation diff --git a/samples/client/petstore/R/R/tag.R b/samples/client/petstore/R/R/tag.R index 7e60cb50c82..5644807f5c6 100644 --- a/samples/client/petstore/R/R/tag.R +++ b/samples/client/petstore/R/R/tag.R @@ -10,9 +10,9 @@ #' @title Tag #' @description Tag Class #' @format An \code{R6Class} generator object -#' @field id integer [optional] +#' @field id integer [optional] #' -#' @field name character [optional] +#' @field name character [optional] #' #' #' @importFrom R6 R6Class diff --git a/samples/client/petstore/R/R/user.R b/samples/client/petstore/R/R/user.R index a3967c84c93..2afd3de04c6 100644 --- a/samples/client/petstore/R/R/user.R +++ b/samples/client/petstore/R/R/user.R @@ -10,21 +10,21 @@ #' @title User #' @description User Class #' @format An \code{R6Class} generator object -#' @field id integer [optional] +#' @field id integer [optional] #' -#' @field username character [optional] +#' @field username character [optional] #' -#' @field firstName character [optional] +#' @field firstName character [optional] #' -#' @field lastName character [optional] +#' @field lastName character [optional] #' -#' @field email character [optional] +#' @field email character [optional] #' -#' @field password character [optional] +#' @field password character [optional] #' -#' @field phone character [optional] +#' @field phone character [optional] #' -#' @field userStatus integer [optional] +#' @field userStatus integer [optional] #' #' #' @importFrom R6 R6Class diff --git a/samples/client/petstore/R/R/user_api.R b/samples/client/petstore/R/R/user_api.R index 8eb742c6036..7fbcd73848b 100644 --- a/samples/client/petstore/R/R/user_api.R +++ b/samples/client/petstore/R/R/user_api.R @@ -18,7 +18,7 @@ #' This can only be done by the logged in user. #' #' \itemize{ -#' \item \emph{ @param } body \link[petstore:User]{ User } +#' \item \emph{ @param } body \link{User} #' #' #' \item status code : 0 | successful operation @@ -34,7 +34,7 @@ #' #' #' \itemize{ -#' \item \emph{ @param } body list( \link[petstore:User]{ User } ) +#' \item \emph{ @param } body list( \link{User} ) #' #' #' \item status code : 0 | successful operation @@ -50,7 +50,7 @@ #' #' #' \itemize{ -#' \item \emph{ @param } body list( \link[petstore:User]{ User } ) +#' \item \emph{ @param } body list( \link{User} ) #' #' #' \item status code : 0 | successful operation @@ -90,7 +90,7 @@ #' #' \itemize{ #' \item \emph{ @param } username character -#' \item \emph{ @returnType } \link[petstore:User]{ User } \cr +#' \item \emph{ @returnType } \link{User} \cr #' #' #' \item status code : 200 | successful operation @@ -162,7 +162,7 @@ #' #' \itemize{ #' \item \emph{ @param } username character -#' \item \emph{ @param } body \link[petstore:User]{ User } +#' \item \emph{ @param } body \link{User} #' #' #' \item status code : 400 | Invalid user supplied From 2f268129822bbf5fb7f8359e431cb0bb44656874 Mon Sep 17 00:00:00 2001 From: seijin Date: Tue, 26 Nov 2019 12:56:17 +0900 Subject: [PATCH 19/96] [Swift] Add option parameter to select response queue (#4591) * Add queue parameter to API * Apply queue to response function argument * Update petstore sample * Update all sample projects Run ./bin/swift4-all.sh then remove unrelated diff. * Refactor variable name Rename queue to apiResponseQueue, because apiResponseQueue is more clear for explaining the context. --- .../src/main/resources/swift4/APIs.mustache | 1 + .../swift4/AlamofireImplementations.mustache | 16 ++++++++-------- .../PetstoreClient/Classes/OpenAPIs/APIs.swift | 1 + .../OpenAPIs/AlamofireImplementations.swift | 16 ++++++++-------- .../PetstoreClient/Classes/OpenAPIs/APIs.swift | 1 + .../OpenAPIs/AlamofireImplementations.swift | 16 ++++++++-------- .../PetstoreClient/Classes/OpenAPIs/APIs.swift | 1 + .../OpenAPIs/AlamofireImplementations.swift | 16 ++++++++-------- .../PetstoreClient/Classes/OpenAPIs/APIs.swift | 1 + .../OpenAPIs/AlamofireImplementations.swift | 16 ++++++++-------- .../PetstoreClient/Classes/OpenAPIs/APIs.swift | 1 + .../OpenAPIs/AlamofireImplementations.swift | 16 ++++++++-------- .../TestClient/Classes/OpenAPIs/APIs.swift | 1 + .../OpenAPIs/AlamofireImplementations.swift | 16 ++++++++-------- 14 files changed, 63 insertions(+), 56 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift4/APIs.mustache b/modules/openapi-generator/src/main/resources/swift4/APIs.mustache index c523102bca6..0c3f78b057c 100644 --- a/modules/openapi-generator/src/main/resources/swift4/APIs.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/APIs.mustache @@ -11,6 +11,7 @@ import Foundation {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var credential: URLCredential? {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var customHeaders: [String:String] = [:] {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var apiResponseQueue: DispatchQueue = .main } {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class RequestBuilder { diff --git a/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache index ee3d462a457..d0750a5fd00 100644 --- a/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/AlamofireImplementations.mustache @@ -157,7 +157,7 @@ private var managerStore = SynchronizedDictionary) in + validatedRequest.responseData(queue: {{projectName}}API.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs.swift index 9e4312f685d..832282d224f 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,6 +11,7 @@ open class PetstoreClientAPI { public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main } open class RequestBuilder { diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index 60ce28c66a2..1d54e695608 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -156,7 +156,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) case is URL.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() do { @@ -226,7 +226,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -245,7 +245,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -358,7 +358,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -378,7 +378,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -397,7 +397,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Data.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -417,7 +417,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift index 9e4312f685d..832282d224f 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,6 +11,7 @@ open class PetstoreClientAPI { public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main } open class RequestBuilder { diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index 60ce28c66a2..1d54e695608 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -156,7 +156,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) case is URL.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() do { @@ -226,7 +226,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -245,7 +245,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -358,7 +358,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -378,7 +378,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -397,7 +397,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Data.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -417,7 +417,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 9e4312f685d..832282d224f 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,6 +11,7 @@ open class PetstoreClientAPI { public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main } open class RequestBuilder { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index 60ce28c66a2..1d54e695608 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -156,7 +156,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) case is URL.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() do { @@ -226,7 +226,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -245,7 +245,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -358,7 +358,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -378,7 +378,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -397,7 +397,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Data.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -417,7 +417,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 9e4312f685d..832282d224f 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,6 +11,7 @@ open class PetstoreClientAPI { public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main } open class RequestBuilder { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index 60ce28c66a2..1d54e695608 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -156,7 +156,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) case is URL.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() do { @@ -226,7 +226,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -245,7 +245,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -358,7 +358,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -378,7 +378,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -397,7 +397,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Data.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -417,7 +417,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs.swift index 9e4312f685d..832282d224f 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,6 +11,7 @@ open class PetstoreClientAPI { public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main } open class RequestBuilder { diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index 60ce28c66a2..1d54e695608 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -156,7 +156,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) case is URL.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() do { @@ -226,7 +226,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -245,7 +245,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -358,7 +358,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -378,7 +378,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -397,7 +397,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Data.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -417,7 +417,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + validatedRequest.responseData(queue: PetstoreClientAPI.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { diff --git a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs.swift b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs.swift index e60b6154004..b8c1ec2d40d 100644 --- a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs.swift @@ -11,6 +11,7 @@ open class TestClientAPI { public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main } open class RequestBuilder { diff --git a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/AlamofireImplementations.swift index 60ce28c66a2..1487a4730f7 100644 --- a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -156,7 +156,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: TestClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) case is URL.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: TestClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() do { @@ -226,7 +226,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: TestClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -245,7 +245,7 @@ open class AlamofireRequestBuilder: RequestBuilder { ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: TestClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -358,7 +358,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch T.self { case is String.Type: - validatedRequest.responseString(completionHandler: { (stringResponse) in + validatedRequest.responseString(queue: TestClientAPI.apiResponseQueue, completionHandler: { (stringResponse) in cleanupRequest() if stringResponse.result.isFailure { @@ -378,7 +378,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Void.Type: - validatedRequest.responseData(completionHandler: { (voidResponse) in + validatedRequest.responseData(queue: TestClientAPI.apiResponseQueue, completionHandler: { (voidResponse) in cleanupRequest() if voidResponse.result.isFailure { @@ -397,7 +397,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) case is Data.Type: - validatedRequest.responseData(completionHandler: { (dataResponse) in + validatedRequest.responseData(queue: TestClientAPI.apiResponseQueue, completionHandler: { (dataResponse) in cleanupRequest() if dataResponse.result.isFailure { @@ -417,7 +417,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild ) }) default: - validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + validatedRequest.responseData(queue: TestClientAPI.apiResponseQueue, completionHandler: { (dataResponse: DataResponse) in cleanupRequest() guard dataResponse.result.isSuccess else { From 6bf5741fd150e82aaf1512f0048647f83128f27f Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Tue, 26 Nov 2019 09:01:26 +0000 Subject: [PATCH 20/96] [swift] Introduce result type (#4511) * [swift] introduce result type as response library * iOS - run petstore samples * [swift4] add result sample to testing pipeline * [swift] update docs with result type * [swift] update result visibility * [swift] update docs --- bin/swift4-petstore-all.sh | 1 + bin/swift4-petstore-result.json | 7 + bin/swift4-petstore-result.sh | 42 + docs/generators/swift4.md | 2 +- .../codegen/languages/Swift4Codegen.java | 11 +- .../main/resources/swift4/Extensions.mustache | 3 +- .../src/main/resources/swift4/Result.mustache | 17 + .../src/main/resources/swift4/api.mustache | 30 +- .../Classes/OpenAPIs/APIHelper.swift | 6 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 1 - .../Classes/OpenAPIs/APIs/FakeAPI.swift | 1 - .../APIs/FakeClassnameTags123API.swift | 1 - .../Classes/OpenAPIs/APIs/PetAPI.swift | 1 - .../Classes/OpenAPIs/APIs/StoreAPI.swift | 1 - .../Classes/OpenAPIs/APIs/UserAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - .../OpenAPIs/APIs/AnotherFakeAPI.swift | 1 - .../Classes/OpenAPIs/APIs/FakeAPI.swift | 17 +- .../APIs/FakeClassnameTags123API.swift | 1 - .../Classes/OpenAPIs/APIs/PetAPI.swift | 1 - .../Classes/OpenAPIs/APIs/StoreAPI.swift | 1 - .../Classes/OpenAPIs/APIs/UserAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - .../swift4/nonPublicApi/docs/FakeAPI.md | 16 +- .../Classes/OpenAPIs/APIHelper.swift | 6 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 1 - .../Classes/OpenAPIs/APIs/FakeAPI.swift | 1 - .../APIs/FakeClassnameTags123API.swift | 1 - .../Classes/OpenAPIs/APIs/PetAPI.swift | 1 - .../Classes/OpenAPIs/APIs/StoreAPI.swift | 1 - .../Classes/OpenAPIs/APIs/UserAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - .../swift4/promisekitLibrary/Package.swift | 6 +- .../Classes/OpenAPIs/APIHelper.swift | 6 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 1 - .../Classes/OpenAPIs/APIs/FakeAPI.swift | 1 - .../APIs/FakeClassnameTags123API.swift | 1 - .../Classes/OpenAPIs/APIs/PetAPI.swift | 1 - .../Classes/OpenAPIs/APIs/StoreAPI.swift | 1 - .../Classes/OpenAPIs/APIs/UserAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - .../petstore/swift4/resultLibrary/.gitignore | 63 ++ .../resultLibrary/.openapi-generator-ignore | 23 + .../resultLibrary/.openapi-generator/VERSION | 1 + .../contents.xcworkspacedata | 7 + .../petstore/swift4/resultLibrary/Cartfile | 1 + .../petstore/swift4/resultLibrary/Info.plist | 22 + .../swift4/resultLibrary/Package.resolved | 16 + .../swift4/resultLibrary/Package.swift | 27 + .../resultLibrary/PetstoreClient.podspec | 14 + .../PetstoreClient.xcodeproj/project.pbxproj | 580 +++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/PetstoreClient.xcscheme | 99 +++ .../Classes/OpenAPIs/APIHelper.swift | 70 ++ .../Classes/OpenAPIs/APIs.swift | 61 ++ .../OpenAPIs/APIs/AnotherFakeAPI.swift | 59 ++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 786 ++++++++++++++++++ .../APIs/FakeClassnameTags123API.swift | 62 ++ .../Classes/OpenAPIs/APIs/PetAPI.swift | 545 ++++++++++++ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 210 +++++ .../Classes/OpenAPIs/APIs/UserAPI.swift | 419 ++++++++++ .../OpenAPIs/AlamofireImplementations.swift | 450 ++++++++++ .../Classes/OpenAPIs/CodableHelper.swift | 71 ++ .../Classes/OpenAPIs/Configuration.swift | 15 + .../Classes/OpenAPIs/Extensions.swift | 176 ++++ .../OpenAPIs/JSONEncodableEncoding.swift | 54 ++ .../Classes/OpenAPIs/JSONEncodingHelper.swift | 43 + .../Classes/OpenAPIs/Models.swift | 36 + .../Models/AdditionalPropertiesClass.swift | 25 + .../Classes/OpenAPIs/Models/Animal.swift | 20 + .../Classes/OpenAPIs/Models/AnimalFarm.swift | 10 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 22 + .../Models/ArrayOfArrayOfNumberOnly.swift | 22 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 22 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 28 + .../OpenAPIs/Models/Capitalization.swift | 38 + .../Classes/OpenAPIs/Models/Cat.swift | 22 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 18 + .../Classes/OpenAPIs/Models/Category.swift | 20 + .../Classes/OpenAPIs/Models/ClassModel.swift | 20 + .../Classes/OpenAPIs/Models/Client.swift | 18 + .../Classes/OpenAPIs/Models/Dog.swift | 22 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 18 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 33 + .../Classes/OpenAPIs/Models/EnumClass.swift | 14 + .../Classes/OpenAPIs/Models/EnumTest.swift | 52 ++ .../Classes/OpenAPIs/Models/File.swift | 21 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 20 + .../Classes/OpenAPIs/Models/FormatTest.swift | 42 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 20 + .../Classes/OpenAPIs/Models/List.swift | 22 + .../Classes/OpenAPIs/Models/MapTest.swift | 35 + ...opertiesAndAdditionalPropertiesClass.swift | 22 + .../OpenAPIs/Models/Model200Response.swift | 27 + .../Classes/OpenAPIs/Models/Name.swift | 33 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 22 + .../Classes/OpenAPIs/Models/Order.swift | 34 + .../OpenAPIs/Models/OuterComposite.swift | 28 + .../Classes/OpenAPIs/Models/OuterEnum.swift | 14 + .../Classes/OpenAPIs/Models/Pet.swift | 34 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 20 + .../Classes/OpenAPIs/Models/Return.swift | 24 + .../OpenAPIs/Models/SpecialModelName.swift | 22 + .../OpenAPIs/Models/StringBooleanMap.swift | 45 + .../Classes/OpenAPIs/Models/Tag.swift | 20 + .../OpenAPIs/Models/TypeHolderDefault.swift | 34 + .../OpenAPIs/Models/TypeHolderExample.swift | 34 + .../Classes/OpenAPIs/Models/User.swift | 33 + .../Classes/OpenAPIs/Result.swift | 17 + .../petstore/swift4/resultLibrary/README.md | 141 ++++ .../docs/AdditionalPropertiesClass.md | 11 + .../swift4/resultLibrary/docs/Animal.md | 11 + .../swift4/resultLibrary/docs/AnimalFarm.md | 9 + .../resultLibrary/docs/AnotherFakeAPI.md | 59 ++ .../swift4/resultLibrary/docs/ApiResponse.md | 12 + .../docs/ArrayOfArrayOfNumberOnly.md | 10 + .../resultLibrary/docs/ArrayOfNumberOnly.md | 10 + .../swift4/resultLibrary/docs/ArrayTest.md | 12 + .../resultLibrary/docs/Capitalization.md | 15 + .../petstore/swift4/resultLibrary/docs/Cat.md | 10 + .../swift4/resultLibrary/docs/CatAllOf.md | 10 + .../swift4/resultLibrary/docs/Category.md | 11 + .../swift4/resultLibrary/docs/ClassModel.md | 10 + .../swift4/resultLibrary/docs/Client.md | 10 + .../petstore/swift4/resultLibrary/docs/Dog.md | 10 + .../swift4/resultLibrary/docs/DogAllOf.md | 10 + .../swift4/resultLibrary/docs/EnumArrays.md | 11 + .../swift4/resultLibrary/docs/EnumClass.md | 9 + .../swift4/resultLibrary/docs/EnumTest.md | 14 + .../swift4/resultLibrary/docs/FakeAPI.md | 662 +++++++++++++++ .../docs/FakeClassnameTags123API.md | 59 ++ .../swift4/resultLibrary/docs/File.md | 10 + .../resultLibrary/docs/FileSchemaTestClass.md | 11 + .../swift4/resultLibrary/docs/FormatTest.md | 22 + .../resultLibrary/docs/HasOnlyReadOnly.md | 11 + .../swift4/resultLibrary/docs/List.md | 10 + .../swift4/resultLibrary/docs/MapTest.md | 13 + ...dPropertiesAndAdditionalPropertiesClass.md | 12 + .../resultLibrary/docs/Model200Response.md | 11 + .../swift4/resultLibrary/docs/Name.md | 13 + .../swift4/resultLibrary/docs/NumberOnly.md | 10 + .../swift4/resultLibrary/docs/Order.md | 15 + .../resultLibrary/docs/OuterComposite.md | 12 + .../swift4/resultLibrary/docs/OuterEnum.md | 9 + .../petstore/swift4/resultLibrary/docs/Pet.md | 15 + .../swift4/resultLibrary/docs/PetAPI.md | 469 +++++++++++ .../resultLibrary/docs/ReadOnlyFirst.md | 11 + .../swift4/resultLibrary/docs/Return.md | 10 + .../resultLibrary/docs/SpecialModelName.md | 10 + .../swift4/resultLibrary/docs/StoreAPI.md | 206 +++++ .../resultLibrary/docs/StringBooleanMap.md | 9 + .../petstore/swift4/resultLibrary/docs/Tag.md | 11 + .../resultLibrary/docs/TypeHolderDefault.md | 14 + .../resultLibrary/docs/TypeHolderExample.md | 14 + .../swift4/resultLibrary/docs/User.md | 17 + .../swift4/resultLibrary/docs/UserAPI.md | 406 +++++++++ .../petstore/swift4/resultLibrary/git_push.sh | 58 ++ .../petstore/swift4/resultLibrary/pom.xml | 43 + .../petstore/swift4/resultLibrary/project.yml | 15 + .../swift4/resultLibrary/run_spmbuild.sh | 3 + .../Classes/OpenAPIs/APIHelper.swift | 6 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 1 - .../Classes/OpenAPIs/APIs/FakeAPI.swift | 1 - .../APIs/FakeClassnameTags123API.swift | 1 - .../Classes/OpenAPIs/APIs/PetAPI.swift | 1 - .../Classes/OpenAPIs/APIs/StoreAPI.swift | 1 - .../Classes/OpenAPIs/APIs/UserAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - .../client/petstore/swift4/swift4_test_all.sh | 1 + .../Classes/OpenAPIs/APIHelper.swift | 6 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 1 - .../Classes/OpenAPIs/APIs/FakeAPI.swift | 1 - .../APIs/FakeClassnameTags123API.swift | 1 - .../Classes/OpenAPIs/APIs/PetAPI.swift | 1 - .../Classes/OpenAPIs/APIs/StoreAPI.swift | 1 - .../Classes/OpenAPIs/APIs/UserAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - .../Classes/OpenAPIs/APIHelper.swift | 6 +- .../Classes/OpenAPIs/APIs/Swift4TestAPI.swift | 1 - .../Classes/OpenAPIs/Extensions.swift | 1 - 180 files changed, 7695 insertions(+), 87 deletions(-) create mode 100644 bin/swift4-petstore-result.json create mode 100755 bin/swift4-petstore-result.sh create mode 100644 modules/openapi-generator/src/main/resources/swift4/Result.mustache create mode 100644 samples/client/petstore/swift4/resultLibrary/.gitignore create mode 100644 samples/client/petstore/swift4/resultLibrary/.openapi-generator-ignore create mode 100644 samples/client/petstore/swift4/resultLibrary/.openapi-generator/VERSION create mode 100644 samples/client/petstore/swift4/resultLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 samples/client/petstore/swift4/resultLibrary/Cartfile create mode 100644 samples/client/petstore/swift4/resultLibrary/Info.plist create mode 100644 samples/client/petstore/swift4/resultLibrary/Package.resolved create mode 100644 samples/client/petstore/swift4/resultLibrary/Package.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient.podspec create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.pbxproj create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Result.swift create mode 100644 samples/client/petstore/swift4/resultLibrary/README.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/AdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Animal.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/AnimalFarm.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/AnotherFakeAPI.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/ApiResponse.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/ArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/ArrayTest.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Capitalization.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Cat.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/CatAllOf.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Category.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/ClassModel.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Client.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Dog.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/DogAllOf.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/EnumArrays.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/EnumClass.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/EnumTest.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/FakeAPI.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/FakeClassnameTags123API.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/File.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/FileSchemaTestClass.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/FormatTest.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/HasOnlyReadOnly.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/List.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/MapTest.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Model200Response.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Name.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/NumberOnly.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Order.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/OuterComposite.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/OuterEnum.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Pet.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/PetAPI.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/ReadOnlyFirst.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Return.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/SpecialModelName.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/StoreAPI.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/StringBooleanMap.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/Tag.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/TypeHolderDefault.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/TypeHolderExample.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/User.md create mode 100644 samples/client/petstore/swift4/resultLibrary/docs/UserAPI.md create mode 100644 samples/client/petstore/swift4/resultLibrary/git_push.sh create mode 100644 samples/client/petstore/swift4/resultLibrary/pom.xml create mode 100644 samples/client/petstore/swift4/resultLibrary/project.yml create mode 100755 samples/client/petstore/swift4/resultLibrary/run_spmbuild.sh diff --git a/bin/swift4-petstore-all.sh b/bin/swift4-petstore-all.sh index 24697b4fa95..167a7a68481 100755 --- a/bin/swift4-petstore-all.sh +++ b/bin/swift4-petstore-all.sh @@ -2,6 +2,7 @@ ./bin/swift4-petstore.sh ./bin/swift4-petstore-promisekit.sh +./bin/swift4-petstore-result.sh ./bin/swift4-petstore-rxswift.sh ./bin/swift4-petstore-objcCompatible.sh ./bin/swift4-petstore-unwrapRequired.sh diff --git a/bin/swift4-petstore-result.json b/bin/swift4-petstore-result.json new file mode 100644 index 00000000000..31543386786 --- /dev/null +++ b/bin/swift4-petstore-result.json @@ -0,0 +1,7 @@ +{ + "podSummary": "PetstoreClient", + "podHomepage": "https://github.com/openapitools/openapi-generator", + "podAuthors": "", + "projectName": "PetstoreClient", + "responseAs": "Result" +} diff --git a/bin/swift4-petstore-result.sh b/bin/swift4-petstore-result.sh new file mode 100755 index 00000000000..a5ba0470034 --- /dev/null +++ b/bin/swift4-petstore-result.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -t modules/openapi-generator/src/main/resources/swift4 -i modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml -g swift4 -c ./bin/swift4-petstore-result.json -o samples/client/petstore/swift4/resultLibrary --generate-alias-as-model $@" + +java $JAVA_OPTS -jar $executable $ags + +if type "xcodegen" > /dev/null 2>&1; then + cd samples/client/petstore/swift4/resultLibrary + xcodegen generate +fi + +if type "swiftlint" > /dev/null 2>&1; then + cd samples/client/petstore/swift4/resultLibrary + swiftlint autocorrect +fi \ No newline at end of file diff --git a/docs/generators/swift4.md b/docs/generators/swift4.md index c61fff90d8d..5abbc3658cf 100644 --- a/docs/generators/swift4.md +++ b/docs/generators/swift4.md @@ -10,7 +10,7 @@ sidebar_label: swift4 |allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |projectName|Project name in Xcode| |null| -|responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift are available.| |null| +|responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result are available.| |null| |nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)| |null| |unwrapRequired|Treat 'required' properties in response as non-optional (which would crash the app if api returns null as opposed to required option specified in json schema| |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/Swift4Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java index d80c9eaa4f5..03d7ed690bf 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 @@ -57,7 +57,8 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { public static final String LENIENT_TYPE_CAST = "lenientTypeCast"; protected static final String LIBRARY_PROMISE_KIT = "PromiseKit"; protected static final String LIBRARY_RX_SWIFT = "RxSwift"; - protected static final String[] RESPONSE_LIBRARIES = {LIBRARY_PROMISE_KIT, LIBRARY_RX_SWIFT}; + protected static final String LIBRARY_RESULT = "Result"; + protected static final String[] RESPONSE_LIBRARIES = {LIBRARY_PROMISE_KIT, LIBRARY_RX_SWIFT, LIBRARY_RESULT}; protected String projectName = "OpenAPIClient"; protected boolean nonPublicApi = false; protected boolean unwrapRequired; @@ -376,6 +377,9 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { if (ArrayUtils.contains(responseAs, LIBRARY_RX_SWIFT)) { additionalProperties.put("useRxSwift", true); } + if (ArrayUtils.contains(responseAs, LIBRARY_RESULT)) { + additionalProperties.put("useResult", true); + } // Setup swiftUseApiNamespace option, which makes all the API // classes inner-class of {{projectName}}API @@ -429,6 +433,11 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("JSONEncodingHelper.mustache", sourceFolder, "JSONEncodingHelper.swift")); + if (ArrayUtils.contains(responseAs, LIBRARY_RESULT)) { + supportingFiles.add(new SupportingFile("Result.mustache", + sourceFolder, + "Result.swift")); + } supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); diff --git a/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache index 3ad31bf941c..c694cc4cfcf 100644 --- a/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache @@ -4,8 +4,7 @@ // https://openapi-generator.tech // -import Foundation -import Alamofire{{#usePromiseKit}} +import Foundation{{#usePromiseKit}} import PromiseKit{{/usePromiseKit}} extension Bool: JSONEncodable { diff --git a/modules/openapi-generator/src/main/resources/swift4/Result.mustache b/modules/openapi-generator/src/main/resources/swift4/Result.mustache new file mode 100644 index 00000000000..e4216be5509 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/swift4/Result.mustache @@ -0,0 +1,17 @@ +// +// Result.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +#if swift(<5) + +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum Result { + case success(Value) + case failure(Error) +} + +#endif diff --git a/modules/openapi-generator/src/main/resources/swift4/api.mustache b/modules/openapi-generator/src/main/resources/swift4/api.mustache index 9b920ef8cea..18eab9425a6 100644 --- a/modules/openapi-generator/src/main/resources/swift4/api.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/api.mustache @@ -5,8 +5,7 @@ // https://openapi-generator.tech // -import Foundation -import Alamofire{{#usePromiseKit}} +import Foundation{{#usePromiseKit}} import PromiseKit{{/usePromiseKit}}{{#useRxSwift}} import RxSwift{{/useRxSwift}} @@ -116,6 +115,33 @@ extension {{projectName}}API { } } {{/useRxSwift}} +{{#useResult}} + /** + {{#summary}} + {{{summary}}} + {{/summary}}{{#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}} + - parameter completion: completion handler to receive the result + */ + open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}completion: @escaping ((_ result: Result<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) { + {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + {{#returnType}} + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + {{/returnType}} + {{^returnType}} + } else { + completion(.success(())) + } + {{/returnType}} + } + } +{{/useResult}} /** {{#summary}} diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 75dea243957..20007009680 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { return source.reduce(into: [String: String]()) { (result, item) in - if let collection = item.value as? Array { + 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)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? Array { + if let collection = source as? [Any?] { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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? Array { + if let collection = item.value as? [Any?] { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 30b346de0e1..02e24286e3c 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class AnotherFakeAPI { /** diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index e2b1c0d9c58..a313a2f7779 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class FakeAPI { /** diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 6bfa09016f5..060d434fbf2 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class FakeClassnameTags123API { /** diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 39525475748..f10127cdb8c 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class PetAPI { /** diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 98ff7b54742..d5f627df52a 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class StoreAPI { /** diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 24d0d35e9dd..3d2fdaee92f 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class UserAPI { /** diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 2fa32b9e0f3..b223c143e0f 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 70d98b03d27..9126bafa69c 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire internal class AnotherFakeAPI { /** diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 10ee354a4ca..c793f330e41 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire internal class FakeAPI { /** @@ -379,13 +378,13 @@ internal class FakeAPI { 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 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, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { @@ -403,13 +402,13 @@ internal class FakeAPI { - 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 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 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 .$) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .-efg) + - 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 */ 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 { diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 90fe7cf0a80..e4c221d8cb4 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire internal class FakeClassnameTags123API { /** diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 7eaffbe4f37..2e03efdebe7 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire internal class PetAPI { /** diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index bf27df25775..cfd546b9095 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire internal class StoreAPI { /** diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index bdb3265ad2d..76067cbd42a 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire internal class UserAPI { /** diff --git a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 4aa9eb446f0..84a3afa480d 100644 --- a/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } diff --git a/samples/client/petstore/swift4/nonPublicApi/docs/FakeAPI.md b/samples/client/petstore/swift4/nonPublicApi/docs/FakeAPI.md index f9924c14618..29181bd6456 100644 --- a/samples/client/petstore/swift4/nonPublicApi/docs/FakeAPI.md +++ b/samples/client/petstore/swift4/nonPublicApi/docs/FakeAPI.md @@ -453,13 +453,13 @@ To test enum parameters 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 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 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 .$) -let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .-efg) +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 @@ -479,13 +479,13 @@ FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHea 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] + **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] + **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 .$] - **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .-efg] + **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 diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 75dea243957..20007009680 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { return source.reduce(into: [String: String]()) { (result, item) in - if let collection = item.value as? Array { + 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)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? Array { + if let collection = source as? [Any?] { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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? Array { + if let collection = item.value as? [Any?] { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 30b346de0e1..02e24286e3c 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class AnotherFakeAPI { /** diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index e2b1c0d9c58..a313a2f7779 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class FakeAPI { /** diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 6bfa09016f5..060d434fbf2 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class FakeClassnameTags123API { /** diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 39525475748..f10127cdb8c 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class PetAPI { /** diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 98ff7b54742..d5f627df52a 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class StoreAPI { /** diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 24d0d35e9dd..3d2fdaee92f 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class UserAPI { /** diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 2fa32b9e0f3..b223c143e0f 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } diff --git a/samples/client/petstore/swift4/promisekitLibrary/Package.swift b/samples/client/petstore/swift4/promisekitLibrary/Package.swift index 7ba5c67b456..fbf22f5f823 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/Package.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/Package.swift @@ -9,12 +9,12 @@ let package = Package( // Products define the executables and libraries produced by a package, and make them visible to other packages. .library( name: "PetstoreClient", - targets: ["PetstoreClient"]) + targets: ["PetstoreClient"]), ], dependencies: [ // Dependencies declare other packages that this package depends on. .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.0"), - .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.11.0") + .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.11.0"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. @@ -23,6 +23,6 @@ let package = Package( name: "PetstoreClient", dependencies: ["Alamofire", "PromiseKit"], path: "PetstoreClient/Classes" - ) + ), ] ) diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 75dea243957..20007009680 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { return source.reduce(into: [String: String]()) { (result, item) in - if let collection = item.value as? Array { + 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)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? Array { + if let collection = source as? [Any?] { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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? Array { + if let collection = item.value as? [Any?] { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 7aa5c9c5415..5b75a4da29f 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import PromiseKit open class AnotherFakeAPI { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 106fcd274be..8200c6f3041 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import PromiseKit open class FakeAPI { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 309f70b47cf..574ec49021b 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import PromiseKit open class FakeClassnameTags123API { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 29f579c9614..5dec2bac9dd 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import PromiseKit open class PetAPI { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 41eb3f85acb..685827cebe6 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import PromiseKit open class StoreAPI { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 40c2b88f21d..48e69b873dd 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import PromiseKit open class UserAPI { diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 2365ab6057d..811edd70f41 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire import PromiseKit extension Bool: JSONEncodable { diff --git a/samples/client/petstore/swift4/resultLibrary/.gitignore b/samples/client/petstore/swift4/resultLibrary/.gitignore new file mode 100644 index 00000000000..5e5d5cebcf4 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/.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/swift4/resultLibrary/.openapi-generator-ignore b/samples/client/petstore/swift4/resultLibrary/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/.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/swift4/resultLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift4/resultLibrary/.openapi-generator/VERSION new file mode 100644 index 00000000000..e4955748d3e --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.2.2-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift4/resultLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift4/resultLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift4/resultLibrary/Cartfile b/samples/client/petstore/swift4/resultLibrary/Cartfile new file mode 100644 index 00000000000..86748c63d90 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/Cartfile @@ -0,0 +1 @@ +github "Alamofire/Alamofire" ~> 4.9.0 diff --git a/samples/client/petstore/swift4/resultLibrary/Info.plist b/samples/client/petstore/swift4/resultLibrary/Info.plist new file mode 100644 index 00000000000..323e5ecfc42 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/samples/client/petstore/swift4/resultLibrary/Package.resolved b/samples/client/petstore/swift4/resultLibrary/Package.resolved new file mode 100644 index 00000000000..ca6137050eb --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "747c8db8d57b68d5e35275f10c92d55f982adbd4", + "version": "4.9.1" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift4/resultLibrary/Package.swift b/samples/client/petstore/swift4/resultLibrary/Package.swift new file mode 100644 index 00000000000..e5c5f0f33b8 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version:4.2 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "PetstoreClient", + 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/Alamofire/Alamofire.git", from: "4.9.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: ["Alamofire"], + path: "PetstoreClient/Classes" + ) + ] +) diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient.podspec b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.podspec new file mode 100644 index 00000000000..a6c9a1f3d45 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.podspec @@ -0,0 +1,14 @@ +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.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 'Alamofire', '~> 4.9.0' +end diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..49e6ca81fd8 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.pbxproj @@ -0,0 +1,580 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 0299339D13C3571C4C57368A /* ApiResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8E7B833748B4F0C7CDA90C6 /* ApiResponse.swift */; }; + 081C0B80A989B1AAF2665121 /* MapTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7986861626C2B1CB49AD7000 /* MapTest.swift */; }; + 0C1E4C682F2D0AF7D9E431EE /* Dog.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6C3E1129526A353B963EFD7 /* Dog.swift */; }; + 0E6932F1C55BA6880693C478 /* Order.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B2E9EF856E89FEAA359A3A /* Order.swift */; }; + 1E6C7C7F271A802DF8099330 /* APIHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 897716962D472FE162B723CB /* APIHelper.swift */; }; + 22FA6CA58E58550DE36AE750 /* JSONEncodableEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9791B840B8D6EAA35343B00F /* JSONEncodableEncoding.swift */; }; + 248F2F0F29E8FDAE9CAD64C5 /* AdditionalPropertiesClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 396DEF3156BA0D12D0FC5C3C /* AdditionalPropertiesClass.swift */; }; + 269E3103C458C78EA5726EE2 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C298FC8929DCB369053F11 /* Extensions.swift */; }; + 294CDFA409BC369C0FDC5FB3 /* SpecialModelName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 386FD590658E90509C121118 /* SpecialModelName.swift */; }; + 2B441CDFFFDDB343C04F5375 /* Animal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95568E7C35F119EB4A12B498 /* Animal.swift */; }; + 2C29D5B60E00DDA3878F1BDE /* Pet.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFEB4C6C257B3BB3CEA36D1 /* Pet.swift */; }; + 31DFF71D8CCCA0D2D2F8AC90 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5565A447062C7B8F695F451 /* User.swift */; }; + 34C26979F4678B5B579D26E8 /* FakeClassnameTags123API.swift in Sources */ = {isa = PBXBuildFile; fileRef = B42354B407EC173BEB54E042 /* FakeClassnameTags123API.swift */; }; + 3691B017D3AA18404A563C67 /* ArrayOfNumberOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = B65BB72353DA24536A9049BE /* ArrayOfNumberOnly.swift */; }; + 37DEADD6CD0496690725B8A7 /* Name.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AD994DFAA0DA93C188A4DBA /* Name.swift */; }; + 40E3027D2E38D8329C6AB01F /* APIs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37DF825B8F3BADA2B2537D17 /* APIs.swift */; }; + 40E46046D2B16D1A672A08E3 /* AlamofireImplementations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A201508DF2B697D65F2631 /* AlamofireImplementations.swift */; }; + 418DB36F23C53C6E2C3CDE39 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A235FA3FDFB086CC69CDE83D /* Alamofire.framework */; }; + 41A491E9B577C510F927D126 /* OuterEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = C15008AABC804EB6FB4CDAC6 /* OuterEnum.swift */; }; + 45B3B29D7A62049F824751F8 /* AnimalFarm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D22BE01748F51106DE02332 /* AnimalFarm.swift */; }; + 4A344DF7ECE721B4BBEDCB4A /* CatAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD0F94F512DFBC09F9CC79A /* CatAllOf.swift */; }; + 4B4BE77747413A9188CDABD2 /* ArrayOfArrayOfNumberOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B1B8B838B5D9D312F2002EB /* ArrayOfArrayOfNumberOnly.swift */; }; + 555DEA47352B42E49082922B /* NumberOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8E0B16084741FCB82389F58 /* NumberOnly.swift */; }; + 5695497F5DBF6C08842755A3 /* TypeHolderDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC76F6D4D2AA8084B7EB50E /* TypeHolderDefault.swift */; }; + 61322FC4325F1A4FF24ACA48 /* EnumArrays.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10503995D9EFD031A2EFB576 /* EnumArrays.swift */; }; + 64C48E3658CF53EBE8AF82F9 /* UserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8D5F382979854D47F18DB1 /* UserAPI.swift */; }; + 6B638A04B34C82B2091D6EDD /* FormatTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3156CE41C001C80379B84BDB /* FormatTest.swift */; }; + 6FBD978F4D1ED92E7071FFBB /* CodableHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A6F6BB2152ACEE1416D44A /* CodableHelper.swift */; }; + 72547ECFB451A509409311EE /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28A444949BBC254798C3B3DD /* Configuration.swift */; }; + 72CE544C52BB33778D1B89B8 /* DogAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21A69C8402A60E01116ABBD /* DogAllOf.swift */; }; + 7441BBA84C31E06400338F89 /* ClassModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C30827D8EAF8EA684E7BCEA /* ClassModel.swift */; }; + 7588B7E2960253174ADCCF16 /* JSONEncodingHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D710108A69DD8A5297F926 /* JSONEncodingHelper.swift */; }; + 86DE714469BE8BA28AFF710F /* HasOnlyReadOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7FBC641752D2E13B150973 /* HasOnlyReadOnly.swift */; }; + 913B0BA470D8357FF8A2FFD3 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099A5E845AF5E1409204325B /* Result.swift */; }; + 914F4D1FCB17773C067C4E68 /* ReadOnlyFirst.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FD42727E001E799E458C292 /* ReadOnlyFirst.swift */; }; + 922BDADAB291907A7FD14314 /* OuterComposite.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E0AD8F60A91F72C7687560 /* OuterComposite.swift */; }; + 97F7B85BF07A325EEBF92C93 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3933D3B2A3AC4577094D0C23 /* File.swift */; }; + 9CA19AA4483F6EB50270A81E /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A6070F581E611FF44AFD40A /* List.swift */; }; + 9CF06ACDA32CB0C3E74E435C /* Model200Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82A2C3DC2235F0114C2B08E5 /* Model200Response.swift */; }; + 9DA1C6F8B4D6C8595F28C098 /* EnumTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD60AEA646791E0EDE885DE1 /* EnumTest.swift */; }; + A6E50CC6845FE58D8C236253 /* Return.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81447828475F76C5CF4F08A /* Return.swift */; }; + A6E5A5629495DB0ED672B06F /* PetAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A019F500E546A3292CE716A /* PetAPI.swift */; }; + A85E190556818FFA79896E92 /* ArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1A0379CDFC55705AE76C998 /* ArrayTest.swift */; }; + ACF3037926301D4D6E848745 /* EnumClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B2C97AE6ACA1E5FB88F5BAA /* EnumClass.swift */; }; + AD594BFB99E31A5E07579237 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = A913A57E72D723632E9A718F /* Client.swift */; }; + B301DB1B80F37C757550AA17 /* MixedPropertiesAndAdditionalPropertiesClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD714C7CC59BDD18DE8DF4E /* MixedPropertiesAndAdditionalPropertiesClass.swift */; }; + B3E35FE2773D4A8BA15CFA88 /* Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2896F8BFD1AA2965C8A3015 /* Tag.swift */; }; + BB1F3C6D50B8F0A8CC4F1749 /* Capitalization.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B38FA00A494D13F4C382A3 /* Capitalization.swift */; }; + CA9B9B19882EA044EAD0B359 /* AnotherFakeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF24D2714B9C4CF14146E88 /* AnotherFakeAPI.swift */; }; + CB68ABDBAADAF6B8D7B93A5D /* StoreAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53274D99BBDE1B79BF3521C /* StoreAPI.swift */; }; + D3BAB7C7A607392CA838C580 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8699F7966F748ED026A6FB4C /* Models.swift */; }; + D95A5F83AAA7D5C95A29AB83 /* Cat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 212AA914B7F1793A4E32C119 /* Cat.swift */; }; + DDBD4C0FBA3CD6A4DA3DF376 /* FakeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E00950725DC44436C5E238C /* FakeAPI.swift */; }; + DDF1D589267D56D9BED3C6E5 /* FileSchemaTestClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B3666552AA854DAF9C480A3 /* FileSchemaTestClass.swift */; }; + E8A58C6414E88AF3EAE45B69 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F2985D01F8D60A4B1925C69 /* Category.swift */; }; + EDFC6C5121A43997014049CB /* StringBooleanMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B4DEBABEFE140768CFB70B /* StringBooleanMap.swift */; }; + FECA2E8C9D0BDFEC459E8996 /* TypeHolderExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19B65C66C97F082718DDD703 /* TypeHolderExample.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 02A6F6BB2152ACEE1416D44A /* CodableHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableHelper.swift; sourceTree = ""; }; + 099A5E845AF5E1409204325B /* Result.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = ""; }; + 10503995D9EFD031A2EFB576 /* EnumArrays.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumArrays.swift; sourceTree = ""; }; + 164AD6EC9C4CCF634D7C4590 /* PetstoreClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PetstoreClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 19B65C66C97F082718DDD703 /* TypeHolderExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeHolderExample.swift; sourceTree = ""; }; + 212AA914B7F1793A4E32C119 /* Cat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cat.swift; sourceTree = ""; }; + 27B2E9EF856E89FEAA359A3A /* Order.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Order.swift; sourceTree = ""; }; + 28A444949BBC254798C3B3DD /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; }; + 3156CE41C001C80379B84BDB /* FormatTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormatTest.swift; sourceTree = ""; }; + 35D710108A69DD8A5297F926 /* JSONEncodingHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONEncodingHelper.swift; sourceTree = ""; }; + 37DF825B8F3BADA2B2537D17 /* APIs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIs.swift; sourceTree = ""; }; + 386FD590658E90509C121118 /* SpecialModelName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpecialModelName.swift; sourceTree = ""; }; + 3933D3B2A3AC4577094D0C23 /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; + 396DEF3156BA0D12D0FC5C3C /* AdditionalPropertiesClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdditionalPropertiesClass.swift; sourceTree = ""; }; + 3AD0F94F512DFBC09F9CC79A /* CatAllOf.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatAllOf.swift; sourceTree = ""; }; + 3C30827D8EAF8EA684E7BCEA /* ClassModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClassModel.swift; sourceTree = ""; }; + 47B4DEBABEFE140768CFB70B /* StringBooleanMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringBooleanMap.swift; sourceTree = ""; }; + 4B2C97AE6ACA1E5FB88F5BAA /* EnumClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumClass.swift; sourceTree = ""; }; + 4B3666552AA854DAF9C480A3 /* FileSchemaTestClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileSchemaTestClass.swift; sourceTree = ""; }; + 4C7FBC641752D2E13B150973 /* HasOnlyReadOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HasOnlyReadOnly.swift; sourceTree = ""; }; + 5AD994DFAA0DA93C188A4DBA /* Name.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Name.swift; sourceTree = ""; }; + 6E00950725DC44436C5E238C /* FakeAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeAPI.swift; sourceTree = ""; }; + 6F2985D01F8D60A4B1925C69 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = ""; }; + 6FD42727E001E799E458C292 /* ReadOnlyFirst.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadOnlyFirst.swift; sourceTree = ""; }; + 7986861626C2B1CB49AD7000 /* MapTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTest.swift; sourceTree = ""; }; + 7A6070F581E611FF44AFD40A /* List.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = List.swift; sourceTree = ""; }; + 7B1B8B838B5D9D312F2002EB /* ArrayOfArrayOfNumberOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrayOfArrayOfNumberOnly.swift; sourceTree = ""; }; + 7C8D5F382979854D47F18DB1 /* UserAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAPI.swift; sourceTree = ""; }; + 82A2C3DC2235F0114C2B08E5 /* Model200Response.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Model200Response.swift; sourceTree = ""; }; + 84A201508DF2B697D65F2631 /* AlamofireImplementations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlamofireImplementations.swift; sourceTree = ""; }; + 8699F7966F748ED026A6FB4C /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = ""; }; + 897716962D472FE162B723CB /* APIHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIHelper.swift; sourceTree = ""; }; + 8D22BE01748F51106DE02332 /* AnimalFarm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimalFarm.swift; sourceTree = ""; }; + 95568E7C35F119EB4A12B498 /* Animal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Animal.swift; sourceTree = ""; }; + 9791B840B8D6EAA35343B00F /* JSONEncodableEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONEncodableEncoding.swift; sourceTree = ""; }; + 9A019F500E546A3292CE716A /* PetAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PetAPI.swift; sourceTree = ""; }; + 9AD714C7CC59BDD18DE8DF4E /* MixedPropertiesAndAdditionalPropertiesClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MixedPropertiesAndAdditionalPropertiesClass.swift; sourceTree = ""; }; + 9DF24D2714B9C4CF14146E88 /* AnotherFakeAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnotherFakeAPI.swift; sourceTree = ""; }; + A21A69C8402A60E01116ABBD /* DogAllOf.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DogAllOf.swift; sourceTree = ""; }; + A235FA3FDFB086CC69CDE83D /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; }; + A53274D99BBDE1B79BF3521C /* StoreAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreAPI.swift; sourceTree = ""; }; + A7B38FA00A494D13F4C382A3 /* Capitalization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Capitalization.swift; sourceTree = ""; }; + A8E7B833748B4F0C7CDA90C6 /* ApiResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiResponse.swift; sourceTree = ""; }; + A913A57E72D723632E9A718F /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = ""; }; + B2896F8BFD1AA2965C8A3015 /* Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tag.swift; sourceTree = ""; }; + B42354B407EC173BEB54E042 /* FakeClassnameTags123API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeClassnameTags123API.swift; sourceTree = ""; }; + B65BB72353DA24536A9049BE /* ArrayOfNumberOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrayOfNumberOnly.swift; sourceTree = ""; }; + B8C298FC8929DCB369053F11 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + B8E0B16084741FCB82389F58 /* NumberOnly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberOnly.swift; sourceTree = ""; }; + C15008AABC804EB6FB4CDAC6 /* OuterEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OuterEnum.swift; sourceTree = ""; }; + C6C3E1129526A353B963EFD7 /* Dog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dog.swift; sourceTree = ""; }; + C81447828475F76C5CF4F08A /* Return.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Return.swift; sourceTree = ""; }; + E5565A447062C7B8F695F451 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + EBC76F6D4D2AA8084B7EB50E /* TypeHolderDefault.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeHolderDefault.swift; sourceTree = ""; }; + ECFEB4C6C257B3BB3CEA36D1 /* Pet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pet.swift; sourceTree = ""; }; + F1A0379CDFC55705AE76C998 /* ArrayTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrayTest.swift; sourceTree = ""; }; + F4E0AD8F60A91F72C7687560 /* OuterComposite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OuterComposite.swift; sourceTree = ""; }; + FD60AEA646791E0EDE885DE1 /* EnumTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumTest.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D1990C2A394CCF025EF98A2F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 418DB36F23C53C6E2C3CDE39 /* Alamofire.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1E464C0937FE0D3A7A0FE29A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7861EE241895128F64DD7873 /* Carthage */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4FBDCF1330A9AB9122780DB3 /* Models */ = { + isa = PBXGroup; + children = ( + 396DEF3156BA0D12D0FC5C3C /* AdditionalPropertiesClass.swift */, + 95568E7C35F119EB4A12B498 /* Animal.swift */, + 8D22BE01748F51106DE02332 /* AnimalFarm.swift */, + A8E7B833748B4F0C7CDA90C6 /* ApiResponse.swift */, + 7B1B8B838B5D9D312F2002EB /* ArrayOfArrayOfNumberOnly.swift */, + B65BB72353DA24536A9049BE /* ArrayOfNumberOnly.swift */, + F1A0379CDFC55705AE76C998 /* ArrayTest.swift */, + A7B38FA00A494D13F4C382A3 /* Capitalization.swift */, + 212AA914B7F1793A4E32C119 /* Cat.swift */, + 3AD0F94F512DFBC09F9CC79A /* CatAllOf.swift */, + 6F2985D01F8D60A4B1925C69 /* Category.swift */, + 3C30827D8EAF8EA684E7BCEA /* ClassModel.swift */, + A913A57E72D723632E9A718F /* Client.swift */, + C6C3E1129526A353B963EFD7 /* Dog.swift */, + A21A69C8402A60E01116ABBD /* DogAllOf.swift */, + 10503995D9EFD031A2EFB576 /* EnumArrays.swift */, + 4B2C97AE6ACA1E5FB88F5BAA /* EnumClass.swift */, + FD60AEA646791E0EDE885DE1 /* EnumTest.swift */, + 3933D3B2A3AC4577094D0C23 /* File.swift */, + 4B3666552AA854DAF9C480A3 /* FileSchemaTestClass.swift */, + 3156CE41C001C80379B84BDB /* FormatTest.swift */, + 4C7FBC641752D2E13B150973 /* HasOnlyReadOnly.swift */, + 7A6070F581E611FF44AFD40A /* List.swift */, + 7986861626C2B1CB49AD7000 /* MapTest.swift */, + 9AD714C7CC59BDD18DE8DF4E /* MixedPropertiesAndAdditionalPropertiesClass.swift */, + 82A2C3DC2235F0114C2B08E5 /* Model200Response.swift */, + 5AD994DFAA0DA93C188A4DBA /* Name.swift */, + B8E0B16084741FCB82389F58 /* NumberOnly.swift */, + 27B2E9EF856E89FEAA359A3A /* Order.swift */, + F4E0AD8F60A91F72C7687560 /* OuterComposite.swift */, + C15008AABC804EB6FB4CDAC6 /* OuterEnum.swift */, + ECFEB4C6C257B3BB3CEA36D1 /* Pet.swift */, + 6FD42727E001E799E458C292 /* ReadOnlyFirst.swift */, + C81447828475F76C5CF4F08A /* Return.swift */, + 386FD590658E90509C121118 /* SpecialModelName.swift */, + 47B4DEBABEFE140768CFB70B /* StringBooleanMap.swift */, + B2896F8BFD1AA2965C8A3015 /* Tag.swift */, + EBC76F6D4D2AA8084B7EB50E /* TypeHolderDefault.swift */, + 19B65C66C97F082718DDD703 /* TypeHolderExample.swift */, + E5565A447062C7B8F695F451 /* User.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5FBA6AE5F64CD737F88B4565 = { + isa = PBXGroup; + children = ( + 9B364C01750D7AA4F983B9E7 /* PetstoreClient */, + 1E464C0937FE0D3A7A0FE29A /* Frameworks */, + 857F0DEA1890CE66D6DAD556 /* Products */, + ); + sourceTree = ""; + }; + 67BF3478113E6B4DF1C4E04F /* OpenAPIs */ = { + isa = PBXGroup; + children = ( + 84A201508DF2B697D65F2631 /* AlamofireImplementations.swift */, + 897716962D472FE162B723CB /* APIHelper.swift */, + 37DF825B8F3BADA2B2537D17 /* APIs.swift */, + 02A6F6BB2152ACEE1416D44A /* CodableHelper.swift */, + 28A444949BBC254798C3B3DD /* Configuration.swift */, + B8C298FC8929DCB369053F11 /* Extensions.swift */, + 9791B840B8D6EAA35343B00F /* JSONEncodableEncoding.swift */, + 35D710108A69DD8A5297F926 /* JSONEncodingHelper.swift */, + 8699F7966F748ED026A6FB4C /* Models.swift */, + 099A5E845AF5E1409204325B /* Result.swift */, + F956D0CCAE23BCFD1C7BDD5D /* APIs */, + 4FBDCF1330A9AB9122780DB3 /* Models */, + ); + path = OpenAPIs; + sourceTree = ""; + }; + 7861EE241895128F64DD7873 /* Carthage */ = { + isa = PBXGroup; + children = ( + A012205B41CB71A62B86EECD /* iOS */, + ); + name = Carthage; + path = Carthage/Build; + sourceTree = ""; + }; + 857F0DEA1890CE66D6DAD556 /* Products */ = { + isa = PBXGroup; + children = ( + 164AD6EC9C4CCF634D7C4590 /* PetstoreClient.framework */, + ); + name = Products; + sourceTree = ""; + }; + 9B364C01750D7AA4F983B9E7 /* PetstoreClient */ = { + isa = PBXGroup; + children = ( + EF4C81BDD734856ED5023B77 /* Classes */, + ); + path = PetstoreClient; + sourceTree = ""; + }; + A012205B41CB71A62B86EECD /* iOS */ = { + isa = PBXGroup; + children = ( + A235FA3FDFB086CC69CDE83D /* Alamofire.framework */, + ); + path = iOS; + sourceTree = ""; + }; + EF4C81BDD734856ED5023B77 /* Classes */ = { + isa = PBXGroup; + children = ( + 67BF3478113E6B4DF1C4E04F /* OpenAPIs */, + ); + path = Classes; + sourceTree = ""; + }; + F956D0CCAE23BCFD1C7BDD5D /* APIs */ = { + isa = PBXGroup; + children = ( + 9DF24D2714B9C4CF14146E88 /* AnotherFakeAPI.swift */, + 6E00950725DC44436C5E238C /* FakeAPI.swift */, + B42354B407EC173BEB54E042 /* FakeClassnameTags123API.swift */, + 9A019F500E546A3292CE716A /* PetAPI.swift */, + A53274D99BBDE1B79BF3521C /* StoreAPI.swift */, + 7C8D5F382979854D47F18DB1 /* UserAPI.swift */, + ); + path = APIs; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C1282C2230015E0D204BEAED /* PetstoreClient */ = { + isa = PBXNativeTarget; + buildConfigurationList = B46EDEB1A7F0D78FE6394544 /* Build configuration list for PBXNativeTarget "PetstoreClient" */; + buildPhases = ( + E539708354CE60FE486F81ED /* Sources */, + D1990C2A394CCF025EF98A2F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PetstoreClient; + productName = PetstoreClient; + productReference = 164AD6EC9C4CCF634D7C4590 /* PetstoreClient.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + E7D276EE2369D8C455513C2E /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + }; + buildConfigurationList = ECAB17FF35111B5E14DAAC08 /* Build configuration list for PBXProject "PetstoreClient" */; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = 5FBA6AE5F64CD737F88B4565; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C1282C2230015E0D204BEAED /* PetstoreClient */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + E539708354CE60FE486F81ED /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E6C7C7F271A802DF8099330 /* APIHelper.swift in Sources */, + 40E3027D2E38D8329C6AB01F /* APIs.swift in Sources */, + 248F2F0F29E8FDAE9CAD64C5 /* AdditionalPropertiesClass.swift in Sources */, + 40E46046D2B16D1A672A08E3 /* AlamofireImplementations.swift in Sources */, + 2B441CDFFFDDB343C04F5375 /* Animal.swift in Sources */, + 45B3B29D7A62049F824751F8 /* AnimalFarm.swift in Sources */, + CA9B9B19882EA044EAD0B359 /* AnotherFakeAPI.swift in Sources */, + 0299339D13C3571C4C57368A /* ApiResponse.swift in Sources */, + 4B4BE77747413A9188CDABD2 /* ArrayOfArrayOfNumberOnly.swift in Sources */, + 3691B017D3AA18404A563C67 /* ArrayOfNumberOnly.swift in Sources */, + A85E190556818FFA79896E92 /* ArrayTest.swift in Sources */, + BB1F3C6D50B8F0A8CC4F1749 /* Capitalization.swift in Sources */, + D95A5F83AAA7D5C95A29AB83 /* Cat.swift in Sources */, + 4A344DF7ECE721B4BBEDCB4A /* CatAllOf.swift in Sources */, + E8A58C6414E88AF3EAE45B69 /* Category.swift in Sources */, + 7441BBA84C31E06400338F89 /* ClassModel.swift in Sources */, + AD594BFB99E31A5E07579237 /* Client.swift in Sources */, + 6FBD978F4D1ED92E7071FFBB /* CodableHelper.swift in Sources */, + 72547ECFB451A509409311EE /* Configuration.swift in Sources */, + 0C1E4C682F2D0AF7D9E431EE /* Dog.swift in Sources */, + 72CE544C52BB33778D1B89B8 /* DogAllOf.swift in Sources */, + 61322FC4325F1A4FF24ACA48 /* EnumArrays.swift in Sources */, + ACF3037926301D4D6E848745 /* EnumClass.swift in Sources */, + 9DA1C6F8B4D6C8595F28C098 /* EnumTest.swift in Sources */, + 269E3103C458C78EA5726EE2 /* Extensions.swift in Sources */, + DDBD4C0FBA3CD6A4DA3DF376 /* FakeAPI.swift in Sources */, + 34C26979F4678B5B579D26E8 /* FakeClassnameTags123API.swift in Sources */, + 97F7B85BF07A325EEBF92C93 /* File.swift in Sources */, + DDF1D589267D56D9BED3C6E5 /* FileSchemaTestClass.swift in Sources */, + 6B638A04B34C82B2091D6EDD /* FormatTest.swift in Sources */, + 86DE714469BE8BA28AFF710F /* HasOnlyReadOnly.swift in Sources */, + 22FA6CA58E58550DE36AE750 /* JSONEncodableEncoding.swift in Sources */, + 7588B7E2960253174ADCCF16 /* JSONEncodingHelper.swift in Sources */, + 9CA19AA4483F6EB50270A81E /* List.swift in Sources */, + 081C0B80A989B1AAF2665121 /* MapTest.swift in Sources */, + B301DB1B80F37C757550AA17 /* MixedPropertiesAndAdditionalPropertiesClass.swift in Sources */, + 9CF06ACDA32CB0C3E74E435C /* Model200Response.swift in Sources */, + D3BAB7C7A607392CA838C580 /* Models.swift in Sources */, + 37DEADD6CD0496690725B8A7 /* Name.swift in Sources */, + 555DEA47352B42E49082922B /* NumberOnly.swift in Sources */, + 0E6932F1C55BA6880693C478 /* Order.swift in Sources */, + 922BDADAB291907A7FD14314 /* OuterComposite.swift in Sources */, + 41A491E9B577C510F927D126 /* OuterEnum.swift in Sources */, + 2C29D5B60E00DDA3878F1BDE /* Pet.swift in Sources */, + A6E5A5629495DB0ED672B06F /* PetAPI.swift in Sources */, + 914F4D1FCB17773C067C4E68 /* ReadOnlyFirst.swift in Sources */, + 913B0BA470D8357FF8A2FFD3 /* Result.swift in Sources */, + A6E50CC6845FE58D8C236253 /* Return.swift in Sources */, + 294CDFA409BC369C0FDC5FB3 /* SpecialModelName.swift in Sources */, + CB68ABDBAADAF6B8D7B93A5D /* StoreAPI.swift in Sources */, + EDFC6C5121A43997014049CB /* StringBooleanMap.swift in Sources */, + B3E35FE2773D4A8BA15CFA88 /* Tag.swift in Sources */, + 5695497F5DBF6C08842755A3 /* TypeHolderDefault.swift in Sources */, + FECA2E8C9D0BDFEC459E8996 /* TypeHolderExample.swift in Sources */, + 31DFF71D8CCCA0D2D2F8AC90 /* User.swift in Sources */, + 64C48E3658CF53EBE8AF82F9 /* UserAPI.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3B2C02AFB91CB5C82766ED5C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + A9EB0A02B94C427CBACFEC7C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + DD3EEB93949E9EBA4437E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + F81D4E5FECD46E9AA6DD2C29 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B46EDEB1A7F0D78FE6394544 /* Build configuration list for PBXNativeTarget "PetstoreClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD3EEB93949E9EBA4437E9CD /* Debug */, + 3B2C02AFB91CB5C82766ED5C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ""; + }; + ECAB17FF35111B5E14DAAC08 /* Build configuration list for PBXProject "PetstoreClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A9EB0A02B94C427CBACFEC7C /* Debug */, + F81D4E5FECD46E9AA6DD2C29 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = E7D276EE2369D8C455513C2E /* Project object */; +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme new file mode 100644 index 00000000000..26d510552bb --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient.xcodeproj/xcshareddata/xcschemes/PetstoreClient.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift new file mode 100644 index 00000000000..20007009680 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -0,0 +1,70 @@ +// 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?] { + let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") + 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/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift new file mode 100644 index 00000000000..9e4312f685d --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -0,0 +1,61 @@ +// 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 = AlamofireRequestBuilderFactory() +} + +open class RequestBuilder { + var credential: URLCredential? + var headers: [String: String] + public let parameters: [String: Any]? + public let isBody: Bool + public let method: String + public let URLString: String + + /// Optional block to obtain a reference to the request's progress instance when available. + public var onProgressReady: ((Progress) -> Void)? + + required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { + self.method = method + self.URLString = URLString + self.parameters = parameters + self.isBody = isBody + self.headers = headers + + addHeaders(PetstoreClientAPI.customHeaders) + } + + open func addHeaders(_ aHeaders: [String: String]) { + for (header, value) in aHeaders { + headers[header] = value + } + } + + open func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { } + + public func addHeader(name: String, value: String) -> Self { + if !value.isEmpty { + headers[name] = value + } + return self + } + + open func addCredential() -> Self { + self.credential = PetstoreClientAPI.credential + return self + } +} + +public protocol RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type + func getBuilder() -> RequestBuilder.Type +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift new file mode 100644 index 00000000000..fb4bb8cfdb4 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -0,0 +1,59 @@ +// +// 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 completion: completion handler to receive the data and the error objects + */ + open class func call123testSpecialTags(body: Client, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + call123testSpecialTagsWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + To test special tags + + - parameter body: (body) client model + - parameter completion: completion handler to receive the result + */ + open class func call123testSpecialTags(body: Client, completion: @escaping ((_ result: Result) -> Void)) { + call123testSpecialTagsWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift new file mode 100644 index 00000000000..adfc6341ece --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -0,0 +1,786 @@ +// +// 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 completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterBooleanSerialize(body: Bool? = nil, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + + - parameter body: (body) Input boolean as post body (optional) + - parameter completion: completion handler to receive the result + */ + open class func fakeOuterBooleanSerialize(body: Bool? = nil, completion: @escaping ((_ result: Result) -> Void)) { + fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + - 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) Input composite as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + + - parameter body: (body) Input composite as post body (optional) + - parameter completion: completion handler to receive the result + */ + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, completion: @escaping ((_ result: Result) -> Void)) { + fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + - 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) Input number as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterNumberSerialize(body: Double? = nil, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + fakeOuterNumberSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + + - parameter body: (body) Input number as post body (optional) + - parameter completion: completion handler to receive the result + */ + open class func fakeOuterNumberSerialize(body: Double? = nil, completion: @escaping ((_ result: Result) -> Void)) { + fakeOuterNumberSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + - 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) Input string as post body (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterStringSerialize(body: String? = nil, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + fakeOuterStringSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + + - parameter body: (body) Input string as post body (optional) + - parameter completion: completion handler to receive the result + */ + open class func fakeOuterStringSerialize(body: String? = nil, completion: @escaping ((_ result: Result) -> Void)) { + fakeOuterStringSerializeWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + - 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter body: (body) + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testBodyWithFileSchema(body: FileSchemaTestClass, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testBodyWithFileSchemaWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + + - parameter body: (body) + - parameter completion: completion handler to receive the result + */ + open class func testBodyWithFileSchema(body: FileSchemaTestClass, completion: @escaping ((_ result: Result) -> Void)) { + testBodyWithFileSchemaWithRequestBuilder(body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + - 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + + - parameter query: (query) + - parameter body: (body) + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testBodyWithQueryParams(query: String, body: User, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + + - parameter query: (query) + - parameter body: (body) + - parameter completion: completion handler to receive the result + */ + open class func testBodyWithQueryParams(query: String, body: User, completion: @escaping ((_ result: Result) -> Void)) { + testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + - 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 url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "query": query + ]) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + To test \"client\" model + + - parameter body: (body) client model + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testClientModel(body: Client, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + testClientModelWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + To test \"client\" model + + - parameter body: (body) client model + - parameter completion: completion handler to receive the result + */ + open class func testClientModel(body: Client, completion: @escaping ((_ result: Result) -> Void)) { + testClientModelWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + 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 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, 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 { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + 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 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, completion: @escaping ((_ result: 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 { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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, + "float": float, + "double": double, + "string": string, + "pattern_without_delimiter": patternWithoutDelimiter, + "byte": byte, + "binary": binary, + "date": date?.encodeToJSON(), + "dateTime": dateTime?.encodeToJSON(), + "password": password, + "callback": callback + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + * enum for parameter enumHeaderStringArray + */ + public enum EnumHeaderStringArray_testEnumParameters: String { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumHeaderString + */ + public enum EnumHeaderString_testEnumParameters: String { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryStringArray + */ + public enum EnumQueryStringArray_testEnumParameters: String { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumQueryString + */ + public enum EnumQueryString_testEnumParameters: String { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryInteger + */ + public enum EnumQueryInteger_testEnumParameters: Int { + case _1 = 1 + case number2 = -2 + } + + /** + * enum for parameter enumQueryDouble + */ + public enum EnumQueryDouble_testEnumParameters: Double { + case _11 = 1.1 + case number12 = -1.2 + } + + /** + * enum for parameter enumFormStringArray + */ + public enum EnumFormStringArray_testEnumParameters: String { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumFormString + */ + public enum EnumFormString_testEnumParameters: String { + 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 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, 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 { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + 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 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, completion: @escaping ((_ result: Result) -> Void)) { + testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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, + "enum_form_string": enumFormString?.rawValue + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + var url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "enum_query_string_array": enumQueryStringArray, + "enum_query_string": enumQueryString?.rawValue, + "enum_query_integer": enumQueryInteger?.rawValue, + "enum_query_double": enumQueryDouble?.rawValue + ]) + let nillableHeaders: [String: Any?] = [ + "enum_header_string_array": enumHeaderStringArray, + "enum_header_string": enumHeaderString?.rawValue + ] + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, 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 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, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + 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 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, completion: @escaping ((_ result: Result) -> Void)) { + testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + url?.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, + "boolean_group": booleanGroup + ] + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) + } + + /** + test inline additionalProperties + + - parameter param: (body) request body + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + test inline additionalProperties + + - parameter param: (body) request body + - parameter completion: completion handler to receive the result + */ + open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping ((_ result: Result) -> Void)) { + testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + test json serialization of form data + + - parameter param: (form) field1 + - parameter param2: (form) field2 + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testJsonFormData(param: String, param2: String, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + test json serialization of form data + + - parameter param: (form) field1 + - parameter param2: (form) field2 + - parameter completion: completion handler to receive the result + */ + open class func testJsonFormData(param: String, param2: String, completion: @escaping ((_ result: Result) -> Void)) { + testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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, + "param2": param2 + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift new file mode 100644 index 00000000000..09c9696dec6 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -0,0 +1,62 @@ +// +// 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 completion: completion handler to receive the data and the error objects + */ + open class func testClassname(body: Client, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + testClassnameWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + To test class name in snake case + + - parameter body: (body) client model + - parameter completion: completion handler to receive the result + */ + open class func testClassname(body: Client, completion: @escaping ((_ result: Result) -> Void)) { + testClassnameWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift new file mode 100644 index 00000000000..c8f66b41e87 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -0,0 +1,545 @@ +// +// 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 completion: completion handler to receive the data and the error objects + */ + open class func addPet(body: Pet, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + addPetWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Add a new pet to the store + + - parameter body: (body) Pet object that needs to be added to the store + - parameter completion: completion handler to receive the result + */ + open class func addPet(body: Pet, completion: @escaping ((_ result: Result) -> Void)) { + addPetWithRequestBuilder(body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Deletes a pet + + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - parameter completion: completion handler to receive the data and the error objects + */ + open class func deletePet(petId: Int64, apiKey: String? = nil, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Deletes a pet + + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - parameter completion: completion handler to receive the result + */ + open class func deletePet(petId: Int64, apiKey: String? = nil, completion: @escaping ((_ result: Result) -> Void)) { + deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + let nillableHeaders: [String: Any?] = [ + "api_key": apiKey + ] + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) + } + + /** + * enum for parameter status + */ + public enum Status_findPetsByStatus: String { + 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 completion: completion handler to receive the data and the error objects + */ + open class func findPetsByStatus(status: [String], completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + findPetsByStatusWithRequestBuilder(status: status).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Finds Pets by status + + - parameter status: (query) Status values that need to be considered for filter + - parameter completion: completion handler to receive the result + */ + open class func findPetsByStatus(status: [String], completion: @escaping ((_ result: Result<[Pet], Error>) -> Void)) { + findPetsByStatusWithRequestBuilder(status: status).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "status": status + ]) + + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Finds Pets by tags + + - parameter tags: (query) Tags to filter by + - parameter completion: completion handler to receive the data and the error objects + */ + open class func findPetsByTags(tags: [String], completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + findPetsByTagsWithRequestBuilder(tags: tags).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Finds Pets by tags + + - parameter tags: (query) Tags to filter by + - parameter completion: completion handler to receive the result + */ + open class func findPetsByTags(tags: [String], completion: @escaping ((_ result: Result<[Pet], Error>) -> Void)) { + findPetsByTagsWithRequestBuilder(tags: tags).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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]> + */ + open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { + let path = "/pet/findByTags" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "tags": tags + ]) + + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Find pet by ID + + - parameter petId: (path) ID of pet to return + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getPetById(petId: Int64, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + getPetByIdWithRequestBuilder(petId: petId).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Find pet by ID + + - parameter petId: (path) ID of pet to return + - parameter completion: completion handler to receive the result + */ + open class func getPetById(petId: Int64, completion: @escaping ((_ result: Result) -> Void)) { + getPetByIdWithRequestBuilder(petId: petId).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Update an existing pet + + - parameter body: (body) Pet object that needs to be added to the store + - parameter completion: completion handler to receive the data and the error objects + */ + open class func updatePet(body: Pet, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updatePetWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Update an existing pet + + - parameter body: (body) Pet object that needs to be added to the store + - parameter completion: completion handler to receive the result + */ + open class func updatePet(body: Pet, completion: @escaping ((_ result: Result) -> Void)) { + updatePetWithRequestBuilder(body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + 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 completion: completion handler to receive the result + */ + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, completion: @escaping ((_ result: Result) -> Void)) { + updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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, + "status": status + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + 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 completion: completion handler to receive the result + */ + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, completion: @escaping ((_ result: Result) -> Void)) { + uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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, + "file": file + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + 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 completion: completion handler to receive the data and the error objects + */ + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + 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 completion: completion handler to receive the result + */ + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, completion: @escaping ((_ result: Result) -> Void)) { + uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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, + "requiredFile": requiredFile + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift new file mode 100644 index 00000000000..62ae519105c --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -0,0 +1,210 @@ +// +// 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 completion: completion handler to receive the data and the error objects + */ + open class func deleteOrder(orderId: String, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deleteOrderWithRequestBuilder(orderId: orderId).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Delete purchase order by ID + + - parameter orderId: (path) ID of the order that needs to be deleted + - parameter completion: completion handler to receive the result + */ + open class func deleteOrder(orderId: String, completion: @escaping ((_ result: Result) -> Void)) { + deleteOrderWithRequestBuilder(orderId: orderId).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Returns pet inventories by status + + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getInventory(completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + getInventoryWithRequestBuilder().execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Returns pet inventories by status + + - parameter completion: completion handler to receive the result + */ + open class func getInventory(completion: @escaping ((_ result: Result<[String: Int], Error>) -> Void)) { + getInventoryWithRequestBuilder().execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Find purchase order by ID + + - parameter orderId: (path) ID of pet that needs to be fetched + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getOrderById(orderId: Int64, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + getOrderByIdWithRequestBuilder(orderId: orderId).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Find purchase order by ID + + - parameter orderId: (path) ID of pet that needs to be fetched + - parameter completion: completion handler to receive the result + */ + open class func getOrderById(orderId: Int64, completion: @escaping ((_ result: Result) -> Void)) { + getOrderByIdWithRequestBuilder(orderId: orderId).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Place an order for a pet + + - parameter body: (body) order placed for purchasing the pet + - parameter completion: completion handler to receive the data and the error objects + */ + open class func placeOrder(body: Order, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + placeOrderWithRequestBuilder(body: body).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Place an order for a pet + + - parameter body: (body) order placed for purchasing the pet + - parameter completion: completion handler to receive the result + */ + open class func placeOrder(body: Order, completion: @escaping ((_ result: Result) -> Void)) { + placeOrderWithRequestBuilder(body: body).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift new file mode 100644 index 00000000000..d0971feb2c1 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -0,0 +1,419 @@ +// +// UserAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class UserAPI { + /** + Create user + + - parameter body: (body) Created user object + - parameter completion: completion handler to receive the data and the error objects + */ + open class func createUser(body: User, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUserWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Create user + + - parameter body: (body) Created user object + - parameter completion: completion handler to receive the result + */ + open class func createUser(body: User, completion: @escaping ((_ result: Result) -> Void)) { + createUserWithRequestBuilder(body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter completion: completion handler to receive the data and the error objects + */ + open class func createUsersWithArrayInput(body: [User], completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUsersWithArrayInputWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter completion: completion handler to receive the result + */ + open class func createUsersWithArrayInput(body: [User], completion: @escaping ((_ result: Result) -> Void)) { + createUsersWithArrayInputWithRequestBuilder(body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter completion: completion handler to receive the data and the error objects + */ + open class func createUsersWithListInput(body: [User], completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUsersWithListInputWithRequestBuilder(body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter completion: completion handler to receive the result + */ + open class func createUsersWithListInput(body: [User], completion: @escaping ((_ result: Result) -> Void)) { + createUsersWithListInputWithRequestBuilder(body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + + /** + Delete user + + - parameter username: (path) The name that needs to be deleted + - parameter completion: completion handler to receive the data and the error objects + */ + open class func deleteUser(username: String, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deleteUserWithRequestBuilder(username: username).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Delete user + + - parameter username: (path) The name that needs to be deleted + - parameter completion: completion handler to receive the result + */ + open class func deleteUser(username: String, completion: @escaping ((_ result: Result) -> Void)) { + deleteUserWithRequestBuilder(username: username).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Get user by user name + + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getUserByName(username: String, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + getUserByNameWithRequestBuilder(username: username).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Get user by user name + + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - parameter completion: completion handler to receive the result + */ + open class func getUserByName(username: String, completion: @escaping ((_ result: Result) -> Void)) { + getUserByNameWithRequestBuilder(username: username).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Logs user into the system + + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - parameter completion: completion handler to receive the data and the error objects + */ + open class func loginUser(username: String, password: String, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + loginUserWithRequestBuilder(username: username, password: password).execute { (response, error) -> Void in + completion(response?.body, error) + } + } + /** + Logs user into the system + + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - parameter completion: completion handler to receive the result + */ + open class func loginUser(username: String, password: String, completion: @escaping ((_ result: Result) -> Void)) { + loginUserWithRequestBuilder(username: username, password: password).execute { (response, error) -> Void in + if let error = error { + completion(.failure(error)) + } else if let response = response { + completion(.success(response.body!)) + } else { + fatalError() + } + } + } + + /** + 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 url = URLComponents(string: URLString) + url?.queryItems = APIHelper.mapValuesToQueryItems([ + "username": username, + "password": password + ]) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Logs out current logged in user session + + - parameter completion: completion handler to receive the data and the error objects + */ + open class func logoutUser(completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + logoutUserWithRequestBuilder().execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Logs out current logged in user session + + - parameter completion: completion handler to receive the result + */ + open class func logoutUser(completion: @escaping ((_ result: Result) -> Void)) { + logoutUserWithRequestBuilder().execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) + } + + /** + Updated user + + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - parameter completion: completion handler to receive the data and the error objects + */ + open class func updateUser(username: String, body: User, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updateUserWithRequestBuilder(username: username, body: body).execute { (_, error) -> Void in + if error == nil { + completion((), error) + } else { + completion(nil, error) + } + } + } + /** + Updated user + + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - parameter completion: completion handler to receive the result + */ + open class func updateUser(username: String, body: User, completion: @escaping ((_ result: Result) -> Void)) { + updateUserWithRequestBuilder(username: username, body: body).execute { (_, error) -> Void in + if let error = error { + completion(.failure(error)) + } else { + completion(.success(())) + } + } + } + + /** + 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 url = URLComponents(string: URLString) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift new file mode 100644 index 00000000000..60ce28c66a2 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -0,0 +1,450 @@ +// AlamofireImplementations.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +class AlamofireRequestBuilderFactory: RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type { + return AlamofireRequestBuilder.self + } + + func getBuilder() -> RequestBuilder.Type { + return AlamofireDecodableRequestBuilder.self + } +} + +private 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 + ) + + public 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 + } + } + } + } + +// Store manager to retain its reference +private var managerStore = SynchronizedDictionary() + +open class AlamofireRequestBuilder: RequestBuilder { + required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { + super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) + } + + /** + May be overridden by a subclass if you want to control the session + configuration. + */ + open func createSessionManager() -> Alamofire.SessionManager { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = buildHeaders() + return Alamofire.SessionManager(configuration: configuration) + } + + /** + May be overridden by a subclass if you want to custom request constructor. + */ + open func createURLRequest() -> URLRequest? { + let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() + guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil } + return try? encoding.encode(originalRequest, with: parameters) + } + + /** + 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 request + configuration (e.g. to override the cache policy). + */ + open func makeRequest(manager: SessionManager, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) -> DataRequest { + return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: headers) + } + + override open func execute(_ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + let managerId: String = UUID().uuidString + // Create a new manager for each request to customize its request header + let manager = createSessionManager() + managerStore[managerId] = manager + + let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() + + let xMethod = Alamofire.HTTPMethod(rawValue: method) + let fileKeys = parameters == nil ? [] : parameters!.filter { $1 is NSURL } + .map { $0.0 } + + if fileKeys.count > 0 { + manager.upload(multipartFormData: { mpForm in + for (k, v) in self.parameters! { + switch v { + case let fileURL as URL: + if let mimeType = self.contentTypeForFormPart(fileURL: fileURL) { + mpForm.append(fileURL, withName: k, fileName: fileURL.lastPathComponent, mimeType: mimeType) + } else { + mpForm.append(fileURL, withName: k) + } + case let string as String: + mpForm.append(string.data(using: String.Encoding.utf8)!, withName: k) + case let number as NSNumber: + mpForm.append(number.stringValue.data(using: String.Encoding.utf8)!, withName: k) + default: + fatalError("Unprocessable value \(v) with key \(k)") + } + } + }, to: URLString, method: xMethod!, headers: nil, encodingCompletion: { encodingResult in + switch encodingResult { + case .success(let upload, _, _): + if let onProgressReady = self.onProgressReady { + onProgressReady(upload.uploadProgress) + } + self.processRequest(request: upload, managerId, completion) + case .failure(let encodingError): + completion(nil, ErrorResponse.error(415, nil, encodingError)) + } + }) + } else { + let request = makeRequest(manager: manager, method: xMethod!, encoding: encoding, headers: headers) + if let onProgressReady = self.onProgressReady { + onProgressReady(request.progress) + } + processRequest(request: request, managerId, completion) + } + + } + + fileprivate func processRequest(request: DataRequest, _ managerId: String, _ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + if let credential = self.credential { + request.authenticate(usingCredential: credential) + } + + let cleanupRequest = { + managerStore[managerId] = nil + } + + let validatedRequest = request.validate() + + switch T.self { + case is String.Type: + validatedRequest.responseString(completionHandler: { (stringResponse) in + cleanupRequest() + + if stringResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.result.error!) + ) + return + } + + completion( + Response( + response: stringResponse.response!, + body: ((stringResponse.result.value ?? "") as! T) + ), + nil + ) + }) + case is URL.Type: + validatedRequest.responseData(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 documentsDirectory = fileManager.urls(for: .documentDirectory, 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)") + } + + 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( + Response( + response: dataResponse.response!, + body: (filePath as! T) + ), + nil + ) + + } catch let requestParserError as DownloadException { + completion(nil, ErrorResponse.error(400, dataResponse.data, requestParserError)) + } catch let error { + completion(nil, ErrorResponse.error(400, dataResponse.data, error)) + } + return + }) + case is Void.Type: + validatedRequest.responseData(completionHandler: { (voidResponse) in + cleanupRequest() + + if voidResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.result.error!) + ) + return + } + + completion( + Response( + response: voidResponse.response!, + body: nil), + nil + ) + }) + default: + validatedRequest.responseData(completionHandler: { (dataResponse) in + cleanupRequest() + + if dataResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!) + ) + return + } + + completion( + Response( + response: dataResponse.response!, + body: (dataResponse.data as! T) + ), + nil + ) + }) + } + } + + open func buildHeaders() -> [String: String] { + var httpHeaders = SessionManager.defaultHTTPHeaders + for (key, value) in self.headers { + 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 + } + +} + +private enum DownloadException: Error { + case responseDataMissing + case responseFailed + case requestMissing + case requestMissingPath + case requestMissingURL +} + +public enum AlamofireDecodableRequestBuilderError: Error { + case emptyDataResponse + case nilHTTPResponse + case jsonDecoding(DecodingError) + case generalError(Error) +} + +open class AlamofireDecodableRequestBuilder: AlamofireRequestBuilder { + + override fileprivate func processRequest(request: DataRequest, _ managerId: String, _ completion: @escaping (_ response: Response?, _ error: Error?) -> Void) { + if let credential = self.credential { + request.authenticate(usingCredential: credential) + } + + let cleanupRequest = { + managerStore[managerId] = nil + } + + let validatedRequest = request.validate() + + switch T.self { + case is String.Type: + validatedRequest.responseString(completionHandler: { (stringResponse) in + cleanupRequest() + + if stringResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.result.error!) + ) + return + } + + completion( + Response( + response: stringResponse.response!, + body: ((stringResponse.result.value ?? "") as! T) + ), + nil + ) + }) + case is Void.Type: + validatedRequest.responseData(completionHandler: { (voidResponse) in + cleanupRequest() + + if voidResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.result.error!) + ) + return + } + + completion( + Response( + response: voidResponse.response!, + body: nil), + nil + ) + }) + case is Data.Type: + validatedRequest.responseData(completionHandler: { (dataResponse) in + cleanupRequest() + + if dataResponse.result.isFailure { + completion( + nil, + ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!) + ) + return + } + + completion( + Response( + response: dataResponse.response!, + body: (dataResponse.data as! T) + ), + nil + ) + }) + default: + validatedRequest.responseData(completionHandler: { (dataResponse: DataResponse) in + cleanupRequest() + + guard dataResponse.result.isSuccess else { + completion(nil, ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!)) + return + } + + guard let data = dataResponse.data, !data.isEmpty else { + completion(nil, ErrorResponse.error(-1, nil, AlamofireDecodableRequestBuilderError.emptyDataResponse)) + return + } + + guard let httpResponse = dataResponse.response else { + completion(nil, ErrorResponse.error(-2, nil, AlamofireDecodableRequestBuilderError.nilHTTPResponse)) + return + } + + var responseObj: Response? + + let decodeResult: (decodableObj: T?, error: Error?) = CodableHelper.decode(T.self, from: data) + if decodeResult.error == nil { + responseObj = Response(response: httpResponse, body: decodeResult.decodableObj) + } + + completion(responseObj, decodeResult.error) + }) + } + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift new file mode 100644 index 00000000000..0a333db0d10 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift @@ -0,0 +1,71 @@ +// +// CodableHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public typealias EncodeResult = (data: Data?, error: Error?) + +open class CodableHelper { + + public static var dateformatter: DateFormatter? + + open class func decode(_ type: T.Type, from data: Data) -> (decodableObj: T?, error: Error?) where T: Decodable { + var returnedDecodable: T? + var returnedError: Error? + + let decoder = JSONDecoder() + if let df = self.dateformatter { + decoder.dateDecodingStrategy = .formatted(df) + } else { + decoder.dataDecodingStrategy = .base64 + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = Configuration.dateFormat + decoder.dateDecodingStrategy = .formatted(formatter) + } + + do { + returnedDecodable = try decoder.decode(type, from: data) + } catch { + returnedError = error + } + + return (returnedDecodable, returnedError) + } + + open class func encode(_ value: T, prettyPrint: Bool = false) -> EncodeResult where T: Encodable { + var returnedData: Data? + var returnedError: Error? + + let encoder = JSONEncoder() + if prettyPrint { + encoder.outputFormatting = .prettyPrinted + } + if let df = self.dateformatter { + encoder.dateEncodingStrategy = .formatted(df) + } else { + encoder.dataEncodingStrategy = .base64 + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = Configuration.dateFormat + encoder.dateEncodingStrategy = .formatted(formatter) + } + + do { + returnedData = try encoder.encode(value) + } catch { + returnedError = error + } + + return (returnedData, returnedError) + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift new file mode 100644 index 00000000000..e1ecb39726e --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -0,0 +1,15 @@ +// 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. + public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift new file mode 100644 index 00000000000..b223c143e0f --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -0,0 +1,176 @@ +// Extensions.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +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 } +} + +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 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()) + } +} + +private let dateFormatter: DateFormatter = { + if let formatter = CodableHelper.dateformatter { + return formatter + } else { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = Configuration.dateFormat + return formatter + } +}() + +extension Date: JSONEncodable { + func encodeToJSON() -> Any { + return dateFormatter.string(from: self) as Any + } +} + +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 + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift new file mode 100644 index 00000000000..fb76bbed26f --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodableEncoding.swift @@ -0,0 +1,54 @@ +// +// JSONDataEncoding.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +public struct JSONDataEncoding: ParameterEncoding { + + // 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: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + var urlRequest = try urlRequest.asURLRequest() + + 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?) -> Parameters? { + var returnedParams: Parameters? + if let jsonData = jsonData, !jsonData.isEmpty { + var params = Parameters() + params[jsonDataKey] = jsonData + returnedParams = params + } + return returnedParams + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift new file mode 100644 index 00000000000..7bd1267e95f --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift @@ -0,0 +1,43 @@ +// +// JSONEncodingHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Alamofire + +open class JSONEncodingHelper { + + open class func encodingParameters(forEncodableObject encodableObj: T?) -> Parameters? { + var params: Parameters? + + // Encode the Encodable object + if let encodableObj = encodableObj { + let encodeResult = CodableHelper.encode(encodableObj, prettyPrint: true) + if encodeResult.error == nil { + params = JSONDataEncoding.encodingParameters(jsonData: encodeResult.data) + } + } + + return params + } + + open class func encodingParameters(forEncodableObject encodableObj: Any?) -> Parameters? { + var params: Parameters? + + if let encodableObj = encodableObj { + do { + let data = try JSONSerialization.data(withJSONObject: encodableObj, options: .prettyPrinted) + params = JSONDataEncoding.encodingParameters(jsonData: data) + } catch { + print(error) + return nil + } + } + + return params + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift new file mode 100644 index 00000000000..25161165865 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -0,0 +1,36 @@ +// 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?, 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 case let (key, value) as (String, String) in rawHeader { + header[key] = value + } + self.init(statusCode: response.statusCode, header: header, body: body) + } +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift new file mode 100644 index 00000000000..83a06951ccd --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -0,0 +1,25 @@ +// +// AdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct AdditionalPropertiesClass: Codable { + + public var mapString: [String: String]? + public var mapMapString: [String: [String: String]]? + + public init(mapString: [String: String]?, mapMapString: [String: [String: String]]?) { + self.mapString = mapString + self.mapMapString = mapMapString + } + + public enum CodingKeys: String, CodingKey { + case mapString = "map_string" + case mapMapString = "map_map_string" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift new file mode 100644 index 00000000000..5ed9f31e2a3 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -0,0 +1,20 @@ +// +// Animal.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Animal: Codable { + + public var className: String + public var color: String? = "red" + + public init(className: String, color: String?) { + self.className = className + self.color = color + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift new file mode 100644 index 00000000000..e09b0e9efdc --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -0,0 +1,10 @@ +// +// AnimalFarm.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift new file mode 100644 index 00000000000..ec270da8907 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -0,0 +1,22 @@ +// +// ApiResponse.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct ApiResponse: Codable { + + public var code: Int? + public var type: String? + public var message: String? + + public init(code: Int?, type: String?, message: String?) { + self.code = code + self.type = type + self.message = message + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift new file mode 100644 index 00000000000..3843287630b --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -0,0 +1,22 @@ +// +// ArrayOfArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct ArrayOfArrayOfNumberOnly: Codable { + + public var arrayArrayNumber: [[Double]]? + + public init(arrayArrayNumber: [[Double]]?) { + self.arrayArrayNumber = arrayArrayNumber + } + + public enum CodingKeys: String, CodingKey { + case arrayArrayNumber = "ArrayArrayNumber" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift new file mode 100644 index 00000000000..f8b198e81f5 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -0,0 +1,22 @@ +// +// ArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct ArrayOfNumberOnly: Codable { + + public var arrayNumber: [Double]? + + public init(arrayNumber: [Double]?) { + self.arrayNumber = arrayNumber + } + + public enum CodingKeys: String, CodingKey { + case arrayNumber = "ArrayNumber" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift new file mode 100644 index 00000000000..67f7f7e5151 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -0,0 +1,28 @@ +// +// ArrayTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct ArrayTest: Codable { + + public var arrayOfString: [String]? + public var arrayArrayOfInteger: [[Int64]]? + public var arrayArrayOfModel: [[ReadOnlyFirst]]? + + public init(arrayOfString: [String]?, arrayArrayOfInteger: [[Int64]]?, arrayArrayOfModel: [[ReadOnlyFirst]]?) { + self.arrayOfString = arrayOfString + self.arrayArrayOfInteger = arrayArrayOfInteger + self.arrayArrayOfModel = arrayArrayOfModel + } + + public enum CodingKeys: String, CodingKey { + case arrayOfString = "array_of_string" + case arrayArrayOfInteger = "array_array_of_integer" + case arrayArrayOfModel = "array_array_of_model" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift new file mode 100644 index 00000000000..d576b50b1c9 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -0,0 +1,38 @@ +// +// Capitalization.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +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?, capitalCamel: String?, smallSnake: String?, capitalSnake: String?, sCAETHFlowPoints: String?, ATT_NAME: String?) { + 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 { + case smallCamel + case capitalCamel = "CapitalCamel" + case smallSnake = "small_Snake" + case capitalSnake = "Capital_Snake" + case sCAETHFlowPoints = "SCA_ETH_Flow_Points" + case ATT_NAME + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift new file mode 100644 index 00000000000..7ab887f3113 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -0,0 +1,22 @@ +// +// Cat.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Cat: Codable { + + public var className: String + public var color: String? = "red" + public var declawed: Bool? + + public init(className: String, color: String?, declawed: Bool?) { + self.className = className + self.color = color + self.declawed = declawed + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift new file mode 100644 index 00000000000..a51ad0dffab --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -0,0 +1,18 @@ +// +// CatAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct CatAllOf: Codable { + + public var declawed: Bool? + + public init(declawed: Bool?) { + self.declawed = declawed + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift new file mode 100644 index 00000000000..eb8f7e5e197 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -0,0 +1,20 @@ +// +// Category.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Category: Codable { + + public var id: Int64? + public var name: String = "default-name" + + public init(id: Int64?, name: String) { + self.id = id + self.name = name + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift new file mode 100644 index 00000000000..28cb30ce7b4 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -0,0 +1,20 @@ +// +// ClassModel.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing model with \"_class\" property */ + +public struct ClassModel: Codable { + + public var _class: String? + + public init(_class: String?) { + self._class = _class + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift new file mode 100644 index 00000000000..00245ca3728 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -0,0 +1,18 @@ +// +// Client.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Client: Codable { + + public var client: String? + + public init(client: String?) { + self.client = client + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift new file mode 100644 index 00000000000..492c1228008 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -0,0 +1,22 @@ +// +// Dog.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Dog: Codable { + + public var className: String + public var color: String? = "red" + public var breed: String? + + public init(className: String, color: String?, breed: String?) { + self.className = className + self.color = color + self.breed = breed + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift new file mode 100644 index 00000000000..7786f8acc5a --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -0,0 +1,18 @@ +// +// DogAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct DogAllOf: Codable { + + public var breed: String? + + public init(breed: String?) { + self.breed = breed + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift new file mode 100644 index 00000000000..5034ff0b8c6 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -0,0 +1,33 @@ +// +// EnumArrays.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct EnumArrays: Codable { + + public enum JustSymbol: String, Codable { + case greaterThanOrEqualTo = ">=" + case dollar = "$" + } + public enum ArrayEnum: String, Codable { + case fish = "fish" + case crab = "crab" + } + public var justSymbol: JustSymbol? + public var arrayEnum: [ArrayEnum]? + + public init(justSymbol: JustSymbol?, arrayEnum: [ArrayEnum]?) { + self.justSymbol = justSymbol + self.arrayEnum = arrayEnum + } + + public enum CodingKeys: String, CodingKey { + case justSymbol = "just_symbol" + case arrayEnum = "array_enum" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift new file mode 100644 index 00000000000..3c1dfcac577 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -0,0 +1,14 @@ +// +// EnumClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public enum EnumClass: String, Codable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift new file mode 100644 index 00000000000..6db9b34d183 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -0,0 +1,52 @@ +// +// EnumTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct EnumTest: Codable { + + public enum EnumString: String, Codable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + public enum EnumStringRequired: String, Codable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + public enum EnumInteger: Int, Codable { + case _1 = 1 + case number1 = -1 + } + public enum EnumNumber: Double, Codable { + 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?, enumStringRequired: EnumStringRequired, enumInteger: EnumInteger?, enumNumber: EnumNumber?, outerEnum: OuterEnum?) { + self.enumString = enumString + self.enumStringRequired = enumStringRequired + self.enumInteger = enumInteger + self.enumNumber = enumNumber + self.outerEnum = outerEnum + } + + public enum CodingKeys: String, CodingKey { + case enumString = "enum_string" + case enumStringRequired = "enum_string_required" + case enumInteger = "enum_integer" + case enumNumber = "enum_number" + case outerEnum + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift new file mode 100644 index 00000000000..ea3520f053d --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -0,0 +1,21 @@ +// +// File.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Must be named `File` for test. */ + +public struct File: Codable { + + /** Test capitalization */ + public var sourceURI: String? + + public init(sourceURI: String?) { + self.sourceURI = sourceURI + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift new file mode 100644 index 00000000000..532f1457939 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -0,0 +1,20 @@ +// +// FileSchemaTestClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct FileSchemaTestClass: Codable { + + public var file: File? + public var files: [File]? + + public init(file: File?, files: [File]?) { + self.file = file + self.files = files + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift new file mode 100644 index 00000000000..20bd6d103b3 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -0,0 +1,42 @@ +// +// FormatTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +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?, int32: Int?, int64: Int64?, number: Double, float: Float?, double: Double?, string: String?, byte: Data, binary: URL?, date: Date, dateTime: Date?, uuid: UUID?, 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 + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift new file mode 100644 index 00000000000..906ddb06fb1 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -0,0 +1,20 @@ +// +// HasOnlyReadOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct HasOnlyReadOnly: Codable { + + public var bar: String? + public var foo: String? + + public init(bar: String?, foo: String?) { + self.bar = bar + self.foo = foo + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift new file mode 100644 index 00000000000..08d59953873 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -0,0 +1,22 @@ +// +// List.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct List: Codable { + + public var _123list: String? + + public init(_123list: String?) { + self._123list = _123list + } + + public enum CodingKeys: String, CodingKey { + case _123list = "123-list" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift new file mode 100644 index 00000000000..3a10a7dfcaf --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -0,0 +1,35 @@ +// +// MapTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct MapTest: Codable { + + public enum MapOfEnumString: String, Codable { + 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]]?, mapOfEnumString: [String: String]?, directMap: [String: Bool]?, indirectMap: StringBooleanMap?) { + self.mapMapOfString = mapMapOfString + self.mapOfEnumString = mapOfEnumString + self.directMap = directMap + self.indirectMap = indirectMap + } + + public enum CodingKeys: String, CodingKey { + case mapMapOfString = "map_map_of_string" + case mapOfEnumString = "map_of_enum_string" + case directMap = "direct_map" + case indirectMap = "indirect_map" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift new file mode 100644 index 00000000000..c3deb2f2893 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -0,0 +1,22 @@ +// +// MixedPropertiesAndAdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct MixedPropertiesAndAdditionalPropertiesClass: Codable { + + public var uuid: UUID? + public var dateTime: Date? + public var map: [String: Animal]? + + public init(uuid: UUID?, dateTime: Date?, map: [String: Animal]?) { + self.uuid = uuid + self.dateTime = dateTime + self.map = map + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift new file mode 100644 index 00000000000..7ed6aad907b --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -0,0 +1,27 @@ +// +// Model200Response.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing model name starting with number */ + +public struct Model200Response: Codable { + + public var name: Int? + public var _class: String? + + public init(name: Int?, _class: String?) { + self.name = name + self._class = _class + } + + public enum CodingKeys: String, CodingKey { + case name + case _class = "class" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift new file mode 100644 index 00000000000..ce9ffe4fb38 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -0,0 +1,33 @@ +// +// Name.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** 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?, property: String?, _123number: Int?) { + self.name = name + self.snakeCase = snakeCase + self.property = property + self._123number = _123number + } + + public enum CodingKeys: String, CodingKey { + case name + case snakeCase = "snake_case" + case property + case _123number = "123Number" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift new file mode 100644 index 00000000000..abd2269e8e7 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -0,0 +1,22 @@ +// +// NumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct NumberOnly: Codable { + + public var justNumber: Double? + + public init(justNumber: Double?) { + self.justNumber = justNumber + } + + public enum CodingKeys: String, CodingKey { + case justNumber = "JustNumber" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift new file mode 100644 index 00000000000..a6e1b1d2e5e --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -0,0 +1,34 @@ +// +// Order.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Order: Codable { + + public enum Status: String, Codable { + 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?, petId: Int64?, quantity: Int?, shipDate: Date?, status: Status?, complete: Bool?) { + self.id = id + self.petId = petId + self.quantity = quantity + self.shipDate = shipDate + self.status = status + self.complete = complete + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift new file mode 100644 index 00000000000..49aec001c5d --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -0,0 +1,28 @@ +// +// OuterComposite.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct OuterComposite: Codable { + + public var myNumber: Double? + public var myString: String? + public var myBoolean: Bool? + + public init(myNumber: Double?, myString: String?, myBoolean: Bool?) { + self.myNumber = myNumber + self.myString = myString + self.myBoolean = myBoolean + } + + public enum CodingKeys: String, CodingKey { + case myNumber = "my_number" + case myString = "my_string" + case myBoolean = "my_boolean" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift new file mode 100644 index 00000000000..9f80fc95ecf --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -0,0 +1,14 @@ +// +// OuterEnum.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public enum OuterEnum: String, Codable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift new file mode 100644 index 00000000000..af60a550bb1 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -0,0 +1,34 @@ +// +// Pet.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Pet: Codable { + + public enum Status: String, Codable { + 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?, category: Category?, name: String, photoUrls: [String], tags: [Tag]?, status: Status?) { + self.id = id + self.category = category + self.name = name + self.photoUrls = photoUrls + self.tags = tags + self.status = status + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift new file mode 100644 index 00000000000..0acd21fd100 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -0,0 +1,20 @@ +// +// ReadOnlyFirst.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct ReadOnlyFirst: Codable { + + public var bar: String? + public var baz: String? + + public init(bar: String?, baz: String?) { + self.bar = bar + self.baz = baz + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift new file mode 100644 index 00000000000..076082af842 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -0,0 +1,24 @@ +// +// Return.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +/** Model for testing reserved words */ + +public struct Return: Codable { + + public var _return: Int? + + public init(_return: Int?) { + self._return = _return + } + + public enum CodingKeys: String, CodingKey { + case _return = "return" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift new file mode 100644 index 00000000000..e79fc45c0e9 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -0,0 +1,22 @@ +// +// SpecialModelName.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct SpecialModelName: Codable { + + public var specialPropertyName: Int64? + + public init(specialPropertyName: Int64?) { + self.specialPropertyName = specialPropertyName + } + + public enum CodingKeys: String, CodingKey { + case specialPropertyName = "$special[property.name]" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift new file mode 100644 index 00000000000..3f1237fee47 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -0,0 +1,45 @@ +// +// StringBooleanMap.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct StringBooleanMap: Codable { + + 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: String.self) + + try container.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/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift new file mode 100644 index 00000000000..4dd8a9a9f5a --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -0,0 +1,20 @@ +// +// Tag.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct Tag: Codable { + + public var id: Int64? + public var name: String? + + public init(id: Int64?, name: String?) { + self.id = id + self.name = name + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift new file mode 100644 index 00000000000..bf0006e1a26 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -0,0 +1,34 @@ +// +// TypeHolderDefault.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +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, 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 { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift new file mode 100644 index 00000000000..602a2a6d185 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -0,0 +1,34 @@ +// +// TypeHolderExample.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +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 { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift new file mode 100644 index 00000000000..79f271ed735 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -0,0 +1,33 @@ +// +// User.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +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?, username: String?, firstName: String?, lastName: String?, email: String?, password: String?, phone: String?, userStatus: Int?) { + self.id = id + self.username = username + self.firstName = firstName + self.lastName = lastName + self.email = email + self.password = password + self.phone = phone + self.userStatus = userStatus + } + +} diff --git a/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Result.swift b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Result.swift new file mode 100644 index 00000000000..06477859ae1 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/PetstoreClient/Classes/OpenAPIs/Result.swift @@ -0,0 +1,17 @@ +// +// Result.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +#if swift(<5) + +public enum Result { + case success(Value) + case failure(Error) +} + +#endif diff --git a/samples/client/petstore/swift4/resultLibrary/README.md b/samples/client/petstore/swift4/resultLibrary/README.md new file mode 100644 index 00000000000..0711eb87054 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/README.md @@ -0,0 +1,141 @@ +# Swift4 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 from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: +- Build package: org.openapitools.codegen.languages.Swift4Codegen + +## 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/swift4/resultLibrary/docs/AdditionalPropertiesClass.md b/samples/client/petstore/swift4/resultLibrary/docs/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..e22d28be1de --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Animal.md b/samples/client/petstore/swift4/resultLibrary/docs/Animal.md new file mode 100644 index 00000000000..69c601455cd --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/AnimalFarm.md b/samples/client/petstore/swift4/resultLibrary/docs/AnimalFarm.md new file mode 100644 index 00000000000..df6bab21dae --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/AnotherFakeAPI.md b/samples/client/petstore/swift4/resultLibrary/docs/AnotherFakeAPI.md new file mode 100644 index 00000000000..aead5f1f980 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/ApiResponse.md b/samples/client/petstore/swift4/resultLibrary/docs/ApiResponse.md new file mode 100644 index 00000000000..c6d9768fe9b --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/swift4/resultLibrary/docs/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..c6fceff5e08 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/ArrayOfNumberOnly.md b/samples/client/petstore/swift4/resultLibrary/docs/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..f09f8fa6f70 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/ArrayTest.md b/samples/client/petstore/swift4/resultLibrary/docs/ArrayTest.md new file mode 100644 index 00000000000..bf416b8330c --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Capitalization.md b/samples/client/petstore/swift4/resultLibrary/docs/Capitalization.md new file mode 100644 index 00000000000..95374216c77 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Cat.md b/samples/client/petstore/swift4/resultLibrary/docs/Cat.md new file mode 100644 index 00000000000..fb5949b1576 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/CatAllOf.md b/samples/client/petstore/swift4/resultLibrary/docs/CatAllOf.md new file mode 100644 index 00000000000..79789be61c0 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Category.md b/samples/client/petstore/swift4/resultLibrary/docs/Category.md new file mode 100644 index 00000000000..5ca5408c0f9 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/ClassModel.md b/samples/client/petstore/swift4/resultLibrary/docs/ClassModel.md new file mode 100644 index 00000000000..e3912fdf0fd --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Client.md b/samples/client/petstore/swift4/resultLibrary/docs/Client.md new file mode 100644 index 00000000000..0de1b238c36 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Dog.md b/samples/client/petstore/swift4/resultLibrary/docs/Dog.md new file mode 100644 index 00000000000..4824786da04 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/DogAllOf.md b/samples/client/petstore/swift4/resultLibrary/docs/DogAllOf.md new file mode 100644 index 00000000000..9302ef52e93 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/EnumArrays.md b/samples/client/petstore/swift4/resultLibrary/docs/EnumArrays.md new file mode 100644 index 00000000000..b9a9807d3c8 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/EnumClass.md b/samples/client/petstore/swift4/resultLibrary/docs/EnumClass.md new file mode 100644 index 00000000000..67f017becd0 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/EnumTest.md b/samples/client/petstore/swift4/resultLibrary/docs/EnumTest.md new file mode 100644 index 00000000000..bc9b036dd76 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/FakeAPI.md b/samples/client/petstore/swift4/resultLibrary/docs/FakeAPI.md new file mode 100644 index 00000000000..49d4d3fb6a1 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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 = false // 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: [File(sourceURI: "sourceURI_example")]) // 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 = false // 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 = false // 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/swift4/resultLibrary/docs/FakeClassnameTags123API.md b/samples/client/petstore/swift4/resultLibrary/docs/FakeClassnameTags123API.md new file mode 100644 index 00000000000..9f24b46edbc --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/File.md b/samples/client/petstore/swift4/resultLibrary/docs/File.md new file mode 100644 index 00000000000..3edfef17b79 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/FileSchemaTestClass.md b/samples/client/petstore/swift4/resultLibrary/docs/FileSchemaTestClass.md new file mode 100644 index 00000000000..afdacc60b2c --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/FormatTest.md b/samples/client/petstore/swift4/resultLibrary/docs/FormatTest.md new file mode 100644 index 00000000000..f74d94f6c46 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/HasOnlyReadOnly.md b/samples/client/petstore/swift4/resultLibrary/docs/HasOnlyReadOnly.md new file mode 100644 index 00000000000..57b6e3a17e6 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/List.md b/samples/client/petstore/swift4/resultLibrary/docs/List.md new file mode 100644 index 00000000000..b77718302ed --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/MapTest.md b/samples/client/petstore/swift4/resultLibrary/docs/MapTest.md new file mode 100644 index 00000000000..56213c4113f --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/swift4/resultLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..fcffb8ecdbf --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Model200Response.md b/samples/client/petstore/swift4/resultLibrary/docs/Model200Response.md new file mode 100644 index 00000000000..5865ea690cc --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Name.md b/samples/client/petstore/swift4/resultLibrary/docs/Name.md new file mode 100644 index 00000000000..f7b180292cd --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/NumberOnly.md b/samples/client/petstore/swift4/resultLibrary/docs/NumberOnly.md new file mode 100644 index 00000000000..72bd361168b --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Order.md b/samples/client/petstore/swift4/resultLibrary/docs/Order.md new file mode 100644 index 00000000000..15487f01175 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/OuterComposite.md b/samples/client/petstore/swift4/resultLibrary/docs/OuterComposite.md new file mode 100644 index 00000000000..d6b3583bc3f --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/OuterEnum.md b/samples/client/petstore/swift4/resultLibrary/docs/OuterEnum.md new file mode 100644 index 00000000000..06d413b0168 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Pet.md b/samples/client/petstore/swift4/resultLibrary/docs/Pet.md new file mode 100644 index 00000000000..5c05f98fad4 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/PetAPI.md b/samples/client/petstore/swift4/resultLibrary/docs/PetAPI.md new file mode 100644 index 00000000000..27efe083347 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/ReadOnlyFirst.md b/samples/client/petstore/swift4/resultLibrary/docs/ReadOnlyFirst.md new file mode 100644 index 00000000000..ed537b87598 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Return.md b/samples/client/petstore/swift4/resultLibrary/docs/Return.md new file mode 100644 index 00000000000..66d17c27c88 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/SpecialModelName.md b/samples/client/petstore/swift4/resultLibrary/docs/SpecialModelName.md new file mode 100644 index 00000000000..3ec27a38c2a --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/StoreAPI.md b/samples/client/petstore/swift4/resultLibrary/docs/StoreAPI.md new file mode 100644 index 00000000000..36365ca5199 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/StringBooleanMap.md b/samples/client/petstore/swift4/resultLibrary/docs/StringBooleanMap.md new file mode 100644 index 00000000000..7abf11ec68b --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/Tag.md b/samples/client/petstore/swift4/resultLibrary/docs/Tag.md new file mode 100644 index 00000000000..ff4ac8aa451 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/TypeHolderDefault.md b/samples/client/petstore/swift4/resultLibrary/docs/TypeHolderDefault.md new file mode 100644 index 00000000000..5161394bdc3 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/TypeHolderExample.md b/samples/client/petstore/swift4/resultLibrary/docs/TypeHolderExample.md new file mode 100644 index 00000000000..46d0471cd71 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/User.md b/samples/client/petstore/swift4/resultLibrary/docs/User.md new file mode 100644 index 00000000000..5a439de0ff9 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/docs/UserAPI.md b/samples/client/petstore/swift4/resultLibrary/docs/UserAPI.md new file mode 100644 index 00000000000..380813bc68c --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/git_push.sh b/samples/client/petstore/swift4/resultLibrary/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/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/swift4/resultLibrary/pom.xml b/samples/client/petstore/swift4/resultLibrary/pom.xml new file mode 100644 index 00000000000..5caba9cb463 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + io.swagger + Swift4PetstoreClientTests + pom + 1.0-SNAPSHOT + Swift4 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/swift4/resultLibrary/project.yml b/samples/client/petstore/swift4/resultLibrary/project.yml new file mode 100644 index 00000000000..148b42517be --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/project.yml @@ -0,0 +1,15 @@ +name: PetstoreClient +targets: + PetstoreClient: + type: framework + platform: iOS + deploymentTarget: "10.0" + sources: [PetstoreClient] + info: + path: ./Info.plist + version: 1.0.0 + settings: + APPLICATION_EXTENSION_API_ONLY: true + scheme: {} + dependencies: + - carthage: Alamofire diff --git a/samples/client/petstore/swift4/resultLibrary/run_spmbuild.sh b/samples/client/petstore/swift4/resultLibrary/run_spmbuild.sh new file mode 100755 index 00000000000..1a9f585ad05 --- /dev/null +++ b/samples/client/petstore/swift4/resultLibrary/run_spmbuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +swift build && exit ${PIPESTATUS[0]} diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 75dea243957..20007009680 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { return source.reduce(into: [String: String]()) { (result, item) in - if let collection = item.value as? Array { + 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)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? Array { + if let collection = source as? [Any?] { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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? Array { + if let collection = item.value as? [Any?] { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 0d88a4bad98..819fc85beda 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import RxSwift open class AnotherFakeAPI { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 8c8b4ae5f6e..f7c5a4e7629 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import RxSwift open class FakeAPI { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index a4e7d073c9a..c34ace880ce 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import RxSwift open class FakeClassnameTags123API { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 8231330d1c8..aca2de27a13 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import RxSwift open class PetAPI { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index b0e3d380fca..c03311277b9 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import RxSwift open class StoreAPI { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index a50f0f0e9bf..08c8f824240 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire import RxSwift open class UserAPI { diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 2fa32b9e0f3..b223c143e0f 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } diff --git a/samples/client/petstore/swift4/swift4_test_all.sh b/samples/client/petstore/swift4/swift4_test_all.sh index 6f093e54039..68a2475c71b 100755 --- a/samples/client/petstore/swift4/swift4_test_all.sh +++ b/samples/client/petstore/swift4/swift4_test_all.sh @@ -14,5 +14,6 @@ mvn -f $DIRECTORY/default/pom.xml integration-test mvn -f $DIRECTORY/nonPublicApi/pom.xml integration-test mvn -f $DIRECTORY/objcCompatible/pom.xml integration-test mvn -f $DIRECTORY/promisekitLibrary/pom.xml integration-test +mvn -f $DIRECTORY/resultLibrary/pom.xml integration-test mvn -f $DIRECTORY/rxswiftLibrary/pom.xml integration-test mvn -f $DIRECTORY/unwrapRequired/pom.xml integration-test diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift index 75dea243957..20007009680 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { return source.reduce(into: [String: String]()) { (result, item) in - if let collection = item.value as? Array { + 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)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? Array { + if let collection = source as? [Any?] { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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? Array { + if let collection = item.value as? [Any?] { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 30b346de0e1..02e24286e3c 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class AnotherFakeAPI { /** diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index e2b1c0d9c58..a313a2f7779 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class FakeAPI { /** diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 6bfa09016f5..060d434fbf2 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class FakeClassnameTags123API { /** diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 39525475748..f10127cdb8c 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class PetAPI { /** diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 98ff7b54742..d5f627df52a 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class StoreAPI { /** diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 24d0d35e9dd..3d2fdaee92f 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class UserAPI { /** diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 2fa32b9e0f3..b223c143e0f 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } diff --git a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIHelper.swift index 75dea243957..20007009680 100644 --- a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIHelper.swift +++ b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIHelper.swift @@ -22,7 +22,7 @@ public struct APIHelper { public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { return source.reduce(into: [String: String]()) { (result, item) in - if let collection = item.value as? Array { + 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)" @@ -46,7 +46,7 @@ public struct APIHelper { } public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? Array { + if let collection = source as? [Any?] { return collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") } return source @@ -54,7 +54,7 @@ public struct APIHelper { 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? Array { + if let collection = item.value as? [Any?] { let value = collection.filter({ $0 != nil }).map({"\($0!)"}).joined(separator: ",") result.append(URLQueryItem(name: item.key, value: value)) } else if let value = item.value { diff --git a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs/Swift4TestAPI.swift b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs/Swift4TestAPI.swift index a775c2aaaac..4eb3cd23281 100644 --- a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs/Swift4TestAPI.swift +++ b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/APIs/Swift4TestAPI.swift @@ -6,7 +6,6 @@ // import Foundation -import Alamofire open class Swift4TestAPI { /** diff --git a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/Extensions.swift b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/Extensions.swift index 2fa32b9e0f3..b223c143e0f 100644 --- a/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/test/swift4/default/TestClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,6 @@ // import Foundation -import Alamofire extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } From 37a8b56a2b61f8909589a4a1eabfdd32a5911260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Tue, 26 Nov 2019 11:15:16 +0100 Subject: [PATCH 21/96] [jaxrs-spec][quarkus] update to 1.0.0.FINAL (#4609) --- .../quarkus/Dockerfile.native.mustache | 2 +- .../spec/libraries/quarkus/pom.mustache | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/Dockerfile.native.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/Dockerfile.native.mustache index 17f7a60973a..b1821fac4c5 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/Dockerfile.native.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/Dockerfile.native.mustache @@ -3,7 +3,7 @@ # # Before building the docker image run: # -# mvn package -Pnative -Dnative-image.docker-build=true +# mvn package -Pnative -Dquarkus.native.container-build=true # # Then, build the image with: # diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache index 4ea71205974..5b6e6b45425 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache @@ -7,21 +7,24 @@ {{artifactId}} {{artifactVersion}} - UTF-8 - 2.22.0 - true - 0.27.0 3.8.1 + true 1.8 - UTF-8 1.8 + UTF-8 + UTF-8 + 1.0.0.Final + quarkus-universe-bom + io.quarkus + 1.0.0.Final + 2.22.1 - io.quarkus - quarkus-bom - ${quarkus.version} + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} pom import @@ -71,7 +74,7 @@ io.quarkus quarkus-maven-plugin - ${quarkus.version} + ${quarkus-plugin.version} From c104821d6e39048678915f99b6c3fb18b47f6bf3 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 26 Nov 2019 18:33:59 +0800 Subject: [PATCH 22/96] Add GetMyuide logo (#4611) * add getmyguide logo * fix typo --- website/dynamic/users.yml | 5 +++++ website/static/img/companies/getyourguide.png | Bin 0 -> 5555 bytes 2 files changed, 5 insertions(+) create mode 100644 website/static/img/companies/getyourguide.png diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index 8369879ca6d..53b0e228f8a 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -133,6 +133,11 @@ image: "img/companies/gantner.png" infoLink: "https://www.gantner.com/" pinned: false +- + caption: "GetYourGuide" + image: "img/companies/getyourguide.png" + infoLink: "https://www.getyourguide.com/" + pinned: false - caption: "GMO Pepabo" image: "img/companies/pepabo.png" diff --git a/website/static/img/companies/getyourguide.png b/website/static/img/companies/getyourguide.png new file mode 100644 index 0000000000000000000000000000000000000000..0239eee16ac8a161e5ffa35be203b4e3ba505f4b GIT binary patch literal 5555 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 BLfZfU literal 0 HcmV?d00001 From cd6986d9be788051cc5754f9f4418cd48e83df66 Mon Sep 17 00:00:00 2001 From: Martin Delille Date: Wed, 27 Nov 2019 07:08:26 +0100 Subject: [PATCH 23/96] Add openapi-generator executable to docker container (#4610) --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 6264997fd61..4aff7bed6fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,6 +27,7 @@ RUN mvn -am -pl "modules/openapi-generator-cli" package # This exists at the end of the file to benefit from cached layers when modifying docker-entrypoint.sh. COPY docker-entrypoint.sh /usr/local/bin/ +RUN ln -s /usr/local/bin/docker-entrypoint.sh /usr/local/bin/openapi-generator ENTRYPOINT ["docker-entrypoint.sh"] From 89911685183810ca7d466dffab8d07936354a7f2 Mon Sep 17 00:00:00 2001 From: Martin Delille Date: Wed, 27 Nov 2019 08:37:24 +0100 Subject: [PATCH 24/96] [C++] [Qt5] Clang format Code (#4444) * HttpFileElement * HttpRequest * Add .clang-format * cpp-qt5-client: fix warning reordering member initialization * api * enum * licenseInfo * model * object * helper * test * QString::arg start from %1 (not from %0) * fixup! model --- .../HttpFileElement.cpp.mustache | 72 ++- .../cpp-qt5-client/HttpFileElement.h.mustache | 7 +- .../cpp-qt5-client/HttpRequest.cpp.mustache | 159 +++--- .../cpp-qt5-client/HttpRequest.h.mustache | 24 +- .../cpp-qt5-client/api-body.mustache | 167 +++---- .../cpp-qt5-client/api-header.mustache | 37 +- .../resources/cpp-qt5-client/enum.mustache | 17 +- .../cpp-qt5-client/helpers-body.mustache | 207 +++----- .../cpp-qt5-client/helpers-header.mustache | 290 +++++------ .../cpp-qt5-client/licenseInfo.mustache | 4 +- .../cpp-qt5-client/model-body.mustache | 80 ++- .../cpp-qt5-client/model-header.mustache | 30 +- .../resources/cpp-qt5-client/object.mustache | 17 +- samples/client/petstore/cpp-qt5/.clang-format | 7 + .../petstore/cpp-qt5/PetStore/PetApiTests.cpp | 14 +- .../petstore/cpp-qt5/PetStore/PetApiTests.h | 2 +- .../cpp-qt5/PetStore/StoreApiTests.cpp | 6 +- .../petstore/cpp-qt5/PetStore/StoreApiTests.h | 2 +- .../cpp-qt5/PetStore/UserApiTests.cpp | 48 +- .../petstore/cpp-qt5/PetStore/UserApiTests.h | 2 +- .../cpp-qt5/client/PFXApiResponse.cpp | 100 ++-- .../petstore/cpp-qt5/client/PFXApiResponse.h | 25 +- .../petstore/cpp-qt5/client/PFXCategory.cpp | 80 ++- .../petstore/cpp-qt5/client/PFXCategory.h | 22 +- .../client/petstore/cpp-qt5/client/PFXEnum.h | 18 +- .../petstore/cpp-qt5/client/PFXHelpers.cpp | 208 +++----- .../petstore/cpp-qt5/client/PFXHelpers.h | 313 ++++++------ .../cpp-qt5/client/PFXHttpFileElement.cpp | 71 ++- .../cpp-qt5/client/PFXHttpFileElement.h | 8 +- .../cpp-qt5/client/PFXHttpRequest.cpp | 160 +++--- .../petstore/cpp-qt5/client/PFXHttpRequest.h | 25 +- .../petstore/cpp-qt5/client/PFXObject.h | 18 +- .../petstore/cpp-qt5/client/PFXOrder.cpp | 160 +++--- .../client/petstore/cpp-qt5/client/PFXOrder.h | 34 +- .../client/petstore/cpp-qt5/client/PFXPet.cpp | 166 +++---- .../client/petstore/cpp-qt5/client/PFXPet.h | 34 +- .../petstore/cpp-qt5/client/PFXPetApi.cpp | 462 +++++++----------- .../petstore/cpp-qt5/client/PFXPetApi.h | 90 ++-- .../petstore/cpp-qt5/client/PFXStoreApi.cpp | 173 +++---- .../petstore/cpp-qt5/client/PFXStoreApi.h | 56 +-- .../client/petstore/cpp-qt5/client/PFXTag.cpp | 80 ++- .../client/petstore/cpp-qt5/client/PFXTag.h | 22 +- .../petstore/cpp-qt5/client/PFXUser.cpp | 200 ++++---- .../client/petstore/cpp-qt5/client/PFXUser.h | 40 +- .../petstore/cpp-qt5/client/PFXUserApi.cpp | 331 +++++-------- .../petstore/cpp-qt5/client/PFXUserApi.h | 88 ++-- 46 files changed, 1785 insertions(+), 2391 deletions(-) create mode 100644 samples/client/petstore/cpp-qt5/.clang-format diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache index a4ff7f64c4a..ff515e56989 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache @@ -1,5 +1,4 @@ {{>licenseInfo}} - #include #include #include @@ -11,129 +10,117 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -void -{{prefix}}HttpFileElement::setMimeType(const QString &mime){ +void {{prefix}}HttpFileElement::setMimeType(const QString &mime) { mime_type = mime; } -void -{{prefix}}HttpFileElement::setFileName(const QString &name){ +void {{prefix}}HttpFileElement::setFileName(const QString &name) { local_filename = name; } -void -{{prefix}}HttpFileElement::setVariableName(const QString &name){ +void {{prefix}}HttpFileElement::setVariableName(const QString &name) { variable_name = name; } -void -{{prefix}}HttpFileElement::setRequestFileName(const QString &name){ +void {{prefix}}HttpFileElement::setRequestFileName(const QString &name) { request_filename = name; } -bool -{{prefix}}HttpFileElement::isSet() const { +bool {{prefix}}HttpFileElement::isSet() const { return !local_filename.isEmpty() || !request_filename.isEmpty(); } -QString -{{prefix}}HttpFileElement::asJson() const{ +QString {{prefix}}HttpFileElement::asJson() const { QFile file(local_filename); QByteArray bArray; bool result = false; - if(file.exists()) { + if (file.exists()) { result = file.open(QIODevice::ReadOnly); bArray = file.readAll(); file.close(); } - if(!result) { + if (!result) { qDebug() << "Error opening file " << local_filename; } return QString(bArray); } -QJsonValue -{{prefix}}HttpFileElement::asJsonValue() const{ +QJsonValue {{prefix}}HttpFileElement::asJsonValue() const { QFile file(local_filename); QByteArray bArray; - bool result = false; - if(file.exists()) { + bool result = false; + if (file.exists()) { result = file.open(QIODevice::ReadOnly); bArray = file.readAll(); file.close(); } - if(!result) { + if (!result) { qDebug() << "Error opening file " << local_filename; } return QJsonDocument::fromBinaryData(bArray.data()).object(); } -bool -{{prefix}}HttpFileElement::fromStringValue(const QString &instr){ +bool {{prefix}}HttpFileElement::fromStringValue(const QString &instr) { QFile file(local_filename); bool result = false; - if(file.exists()) { + if (file.exists()) { file.remove(); } result = file.open(QIODevice::WriteOnly); file.write(instr.toUtf8()); file.close(); - if(!result) { + if (!result) { qDebug() << "Error creating file " << local_filename; } return result; } -bool -{{prefix}}HttpFileElement::fromJsonValue(const QJsonValue &jval) { +bool {{prefix}}HttpFileElement::fromJsonValue(const QJsonValue &jval) { QFile file(local_filename); bool result = false; - if(file.exists()) { + if (file.exists()) { file.remove(); } result = file.open(QIODevice::WriteOnly); file.write(QJsonDocument(jval.toObject()).toBinaryData()); file.close(); - if(!result) { + if (!result) { qDebug() << "Error creating file " << local_filename; } return result; } -QByteArray -{{prefix}}HttpFileElement::asByteArray() const { +QByteArray {{prefix}}HttpFileElement::asByteArray() const { QFile file(local_filename); QByteArray bArray; bool result = false; - if(file.exists()) { + if (file.exists()) { result = file.open(QIODevice::ReadOnly); bArray = file.readAll(); file.close(); } - if(!result) { + if (!result) { qDebug() << "Error opening file " << local_filename; - } + } return bArray; } -bool -{{prefix}}HttpFileElement::fromByteArray(const QByteArray& bytes){ +bool {{prefix}}HttpFileElement::fromByteArray(const QByteArray &bytes) { QFile file(local_filename); bool result = false; - if(file.exists()){ + if (file.exists()) { file.remove(); } result = file.open(QIODevice::WriteOnly); file.write(bytes); file.close(); - if(!result) { + if (!result) { qDebug() << "Error creating file " << local_filename; } return result; } -bool -{{prefix}}HttpFileElement::saveToFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime, const QByteArray& bytes){ +bool {{prefix}}HttpFileElement::saveToFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime, const QByteArray &bytes) { setMimeType(mime); setFileName(localFName); setVariableName(varName); @@ -141,8 +128,7 @@ bool return fromByteArray(bytes); } -QByteArray -{{prefix}}HttpFileElement::loadFromFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime){ +QByteArray {{prefix}}HttpFileElement::loadFromFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime) { setMimeType(mime); setFileName(localFName); setVariableName(varName); @@ -151,5 +137,5 @@ QByteArray } {{#cppNamespaceDeclarations}} -} -{{/cppNamespaceDeclarations}} \ No newline at end of file +} // namespace {{this}} +{{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.h.mustache index 9ebfe362356..d09c4e57db8 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.h.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.h.mustache @@ -6,7 +6,6 @@ #include #include - {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} @@ -25,8 +24,8 @@ public: bool isSet() const; bool fromStringValue(const QString &instr); bool fromJsonValue(const QJsonValue &jval); - bool fromByteArray(const QByteArray& bytes); - bool saveToFile(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime, const QByteArray& bytes); + bool fromByteArray(const QByteArray &bytes); + bool saveToFile(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime, const QByteArray &bytes); QString asJson() const; QJsonValue asJsonValue() const; QByteArray asByteArray() const; @@ -34,7 +33,7 @@ public: }; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} Q_DECLARE_METATYPE({{#cppNamespaceDeclarations}}{{this}}::{{/cppNamespaceDeclarations}}{{prefix}}HttpFileElement) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache index 6670c2e0abf..a28bbad0018 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache @@ -1,18 +1,15 @@ {{>licenseInfo}} - - +#include #include #include -#include -#include #include -#include -#include #include +#include +#include +#include #include "{{prefix}}HttpRequest.h" - {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} @@ -46,61 +43,58 @@ void {{prefix}}HttpRequestInput::add_file(QString variable_name, QString local_f files.append(file); } - {{prefix}}HttpRequestWorker::{{prefix}}HttpRequestWorker(QObject *parent) - : QObject(parent), manager(nullptr), _timeOut(0) -{ + : QObject(parent), manager(nullptr), _timeOut(0) { qsrand(QDateTime::currentDateTime().toTime_t()); manager = new QNetworkAccessManager(this); - workingDirectory = QDir::currentPath(); + workingDirectory = QDir::currentPath(); connect(manager, &QNetworkAccessManager::finished, this, &{{prefix}}HttpRequestWorker::on_manager_finished); } {{prefix}}HttpRequestWorker::~{{prefix}}HttpRequestWorker() { - for (const auto & item: multiPartFields) { - if(item != nullptr) { + for (const auto &item : multiPartFields) { + if (item != nullptr) { delete item; } - } + } } QMap {{prefix}}HttpRequestWorker::getResponseHeaders() const { return headers; } -{{prefix}}HttpFileElement {{prefix}}HttpRequestWorker::getHttpFileElement(const QString &fieldname){ - if(!files.isEmpty()){ - if(fieldname.isEmpty()){ +{{prefix}}HttpFileElement {{prefix}}HttpRequestWorker::getHttpFileElement(const QString &fieldname) { + if (!files.isEmpty()) { + if (fieldname.isEmpty()) { return files.first(); - }else if (files.contains(fieldname)){ + } else if (files.contains(fieldname)) { return files[fieldname]; } } return {{prefix}}HttpFileElement(); } -QByteArray *{{prefix}}HttpRequestWorker::getMultiPartField(const QString &fieldname){ - if(!multiPartFields.isEmpty()){ - if(fieldname.isEmpty()){ +QByteArray *{{prefix}}HttpRequestWorker::getMultiPartField(const QString &fieldname) { + if (!multiPartFields.isEmpty()) { + if (fieldname.isEmpty()) { return multiPartFields.first(); - }else if (multiPartFields.contains(fieldname)){ + } else if (multiPartFields.contains(fieldname)) { return multiPartFields[fieldname]; } } return nullptr; } -void {{prefix}}HttpRequestWorker::setTimeOut(int timeOut){ +void {{prefix}}HttpRequestWorker::setTimeOut(int timeOut) { _timeOut = timeOut; } -void {{prefix}}HttpRequestWorker::setWorkingDirectory(const QString &path){ - if(!path.isEmpty()){ +void {{prefix}}HttpRequestWorker::setWorkingDirectory(const QString &path) { + if (!path.isEmpty()) { workingDirectory = path; } } - QString {{prefix}}HttpRequestWorker::http_attribute_encode(QString attribute_name, QString input) { // result structure follows RFC 5987 bool need_utf_encoding = false; @@ -112,11 +106,9 @@ QString {{prefix}}HttpRequestWorker::http_attribute_encode(QString attribute_nam if (c == '\\' || c == '/' || c == '\0' || c < ' ' || c > '~') { // ignore and request utf-8 version need_utf_encoding = true; - } - else if (c == '"') { + } else if (c == '"') { result += "\\\""; - } - else { + } else { result += c; } } @@ -133,14 +125,9 @@ QString {{prefix}}HttpRequestWorker::http_attribute_encode(QString attribute_nam QString result_utf8 = ""; for (int i = 0; i < input_c.length(); i++) { c = input_c.at(i); - if ( - (c >= '0' && c <= '9') - || (c >= 'A' && c <= 'Z') - || (c >= 'a' && c <= 'z') - ) { + if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) { result_utf8 += c; - } - else { + } else { result_utf8 += "%" + QString::number(static_cast(input_c.at(i)), 16).toUpper(); } } @@ -152,14 +139,13 @@ QString {{prefix}}HttpRequestWorker::http_attribute_encode(QString attribute_nam void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { // reset variables - QNetworkReply* reply = nullptr; + QNetworkReply *reply = nullptr; QByteArray request_content = ""; response = ""; error_type = QNetworkReply::NoError; error_str = ""; bool isFormData = false; - // decide on the variable layout if (input->files.length() > 0) { @@ -169,7 +155,6 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { input->var_layout = input->http_method == "GET" || input->http_method == "HEAD" ? ADDRESS : URL_ENCODED; } - // prepare request content QString boundary = ""; @@ -196,13 +181,12 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { request_content = ""; } } - } - else { + } else { // variable layout is MULTIPART - boundary = "__-----------------------" - + QString::number(QDateTime::currentDateTime().toTime_t()) - + QString::number(qrand()); + boundary = QString("__-----------------------%1%2") + .arg(QDateTime::currentDateTime().toTime_t()) + .arg(qrand()); QString boundary_delimiter = "--"; QString new_line = "\r\n"; @@ -233,11 +217,13 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { QFileInfo fi(file_info->local_filename); // ensure necessary variables are available - if ( - file_info->local_filename == nullptr || file_info->local_filename.isEmpty() - || file_info->variable_name == nullptr || file_info->variable_name.isEmpty() - || !fi.exists() || !fi.isFile() || !fi.isReadable() - ) { + if (file_info->local_filename == nullptr + || file_info->local_filename.isEmpty() + || file_info->variable_name == nullptr + || file_info->variable_name.isEmpty() + || !fi.exists() + || !fi.isFile() + || !fi.isReadable()) { // silent abort for the current file continue; } @@ -262,10 +248,8 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { request_content.append(new_line); // add header - request_content.append(QString("Content-Disposition: form-data; %1; %2").arg( - http_attribute_encode("name", file_info->variable_name), - http_attribute_encode("filename", file_info->request_filename) - )); + request_content.append( + QString("Content-Disposition: form-data; %1; %2").arg(http_attribute_encode("name", file_info->variable_name), http_attribute_encode("filename", file_info->request_filename))); request_content.append(new_line); if (file_info->mime_type != nullptr && !file_info->mime_type.isEmpty()) { @@ -293,7 +277,7 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { request_content.append(boundary_delimiter); } - if(input->request_body.size() > 0) { + if (input->request_body.size() > 0) { qDebug() << "got a request body"; request_content.clear(); request_content.append(input->request_body); @@ -305,41 +289,31 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { request.setSslConfiguration(*{{prefix}}HttpRequestWorker::sslDefaultConfiguration); } request.setRawHeader("User-Agent", "{{#httpUserAgent}}{{.}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{apiVersion}}/cpp-qt5{{/httpUserAgent}}"); - foreach(QString key, input->headers.keys()) { - request.setRawHeader(key.toStdString().c_str(), input->headers.value(key).toStdString().c_str()); - } + 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)) { - if(!input->headers.contains("Content-Type")){ + if (!input->headers.contains("Content-Type")) { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - } - else { + } else { request.setHeader(QNetworkRequest::ContentTypeHeader, input->headers.value("Content-Type")); } - } - else if (input->var_layout == URL_ENCODED) { + } else if (input->var_layout == URL_ENCODED) { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - } - else if (input->var_layout == MULTIPART) { + } else if (input->var_layout == MULTIPART) { request.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary); } if (input->http_method == "GET") { reply = manager->get(request); - } - else if (input->http_method == "POST") { + } else if (input->http_method == "POST") { reply = manager->post(request, request_content); - } - else if (input->http_method == "PUT") { + } else if (input->http_method == "PUT") { reply = manager->put(request, request_content); - } - else if (input->http_method == "HEAD") { + } else if (input->http_method == "HEAD") { reply = manager->head(request); - } - else if (input->http_method == "DELETE") { + } else if (input->http_method == "DELETE") { reply = manager->deleteResource(request); - } - else { + } else { #if (QT_VERSION >= 0x050800) manager->sendCustomRequest(request, input->http_method.toLatin1(), request_content); #else @@ -351,8 +325,8 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { buffer->setParent(reply); #endif } - if(_timeOut > 0){ - QTimer::singleShot(_timeOut, [=](){ on_manager_timeout(reply); }); + if (_timeOut > 0) { + QTimer::singleShot(_timeOut, [=]() { on_manager_timeout(reply); }); } } @@ -360,8 +334,8 @@ void {{prefix}}HttpRequestWorker::on_manager_finished(QNetworkReply *reply) { error_type = reply->error(); response = reply->readAll(); error_str = reply->errorString(); - if(reply->rawHeaderPairs().count() > 0){ - for(const auto& item: reply->rawHeaderPairs()){ + if (reply->rawHeaderPairs().count() > 0) { + for (const auto &item : reply->rawHeaderPairs()) { headers.insert(item.first, item.second); } } @@ -381,36 +355,33 @@ void {{prefix}}HttpRequestWorker::on_manager_timeout(QNetworkReply *reply) { } void {{prefix}}HttpRequestWorker::process_form_response() { - if(getResponseHeaders().contains(QString("Content-Disposition")) ) { + if (getResponseHeaders().contains(QString("Content-Disposition"))) { auto contentDisposition = getResponseHeaders().value(QString("Content-Disposition").toUtf8()).split(QString(";"), QString::SkipEmptyParts); - auto contentType = getResponseHeaders().contains(QString("Content-Type")) ? getResponseHeaders().value(QString("Content-Type").toUtf8()).split(QString(";"), QString::SkipEmptyParts).first() : QString(); - if((contentDisposition.count() > 0) && (contentDisposition.first() == QString("attachment"))){ + auto contentType = + getResponseHeaders().contains(QString("Content-Type")) ? getResponseHeaders().value(QString("Content-Type").toUtf8()).split(QString(";"), QString::SkipEmptyParts).first() : QString(); + if ((contentDisposition.count() > 0) && (contentDisposition.first() == QString("attachment"))) { QString filename = QUuid::createUuid().toString(); - for(const auto &file : contentDisposition){ - if(file.contains(QString("filename"))){ + for (const auto &file : contentDisposition) { + if (file.contains(QString("filename"))) { filename = file.split(QString("="), QString::SkipEmptyParts).at(1); break; } } {{prefix}}HttpFileElement felement; felement.saveToFile(QString(), workingDirectory + QDir::separator() + filename, filename, contentType, response.data()); - files.insert(filename, felement); + files.insert(filename, felement); } - } else if(getResponseHeaders().contains(QString("Content-Type")) ) { + } else if (getResponseHeaders().contains(QString("Content-Type"))) { auto contentType = getResponseHeaders().value(QString("Content-Type").toUtf8()).split(QString(";"), QString::SkipEmptyParts); - if((contentType.count() > 0) && (contentType.first() == QString("multipart/form-data"))){ - - } - else { - + if ((contentType.count() > 0) && (contentType.first() == QString("multipart/form-data"))) { + } else { } } } -QSslConfiguration* {{prefix}}HttpRequestWorker::sslDefaultConfiguration; - +QSslConfiguration *{{prefix}}HttpRequestWorker::sslDefaultConfiguration; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache index 435d43d20ca..32ee8a2145d 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache @@ -8,11 +8,11 @@ #ifndef {{prefix}}_HTTPREQUESTWORKER_H #define {{prefix}}_HTTPREQUESTWORKER_H -#include -#include #include #include #include +#include +#include #include "{{prefix}}HttpFileElement.h" @@ -20,8 +20,12 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -enum {{prefix}}HttpRequestVarLayout {NOT_SET, ADDRESS, URL_ENCODED, MULTIPART}; - +enum {{prefix}}HttpRequestVarLayout { + NOT_SET, + ADDRESS, + URL_ENCODED, + MULTIPART +}; class {{prefix}}HttpRequestInput { @@ -39,10 +43,8 @@ public: void initialize(); void add_var(QString key, QString value); void add_file(QString variable_name, QString local_filename, QString request_filename, QString mime_type); - }; - class {{prefix}}HttpRequestWorker : public QObject { Q_OBJECT @@ -56,11 +58,11 @@ public: QMap getResponseHeaders() const; QString http_attribute_encode(QString attribute_name, QString input); void execute({{prefix}}HttpRequestInput *input); - static QSslConfiguration* sslDefaultConfiguration; + static QSslConfiguration *sslDefaultConfiguration; void setTimeOut(int tout); void setWorkingDirectory(const QString &path); {{prefix}}HttpFileElement getHttpFileElement(const QString &fieldname = QString()); - QByteArray* getMultiPartField(const QString &fieldname = QString()); + QByteArray *getMultiPartField(const QString &fieldname = QString()); signals: void on_execution_finished({{prefix}}HttpRequestWorker *worker); @@ -68,17 +70,17 @@ private: QNetworkAccessManager *manager; QMap headers; QMap files; - QMap multiPartFields; + QMap multiPartFields; QString workingDirectory; int _timeOut; void on_manager_timeout(QNetworkReply *reply); - void process_form_response(); + void process_form_response(); private slots: void on_manager_finished(QNetworkReply *reply); }; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} #endif // {{prefix}}_HTTPREQUESTWORKER_H diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache index a4d19e34626..7f24ba64a82 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache @@ -9,166 +9,150 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -{{classname}}::{{classname}}(const QString &scheme, const QString &host, int port, const QString& basePath, const int timeOut) : - _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut) { -} +{{classname}}::{{classname}}(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) + : _scheme(scheme), + _host(host), + _port(port), + _basePath(basePath), + _timeOut(timeOut) {} {{classname}}::~{{classname}}() { } -void {{classname}}::setScheme(const QString& scheme){ +void {{classname}}::setScheme(const QString &scheme) { _scheme = scheme; } -void {{classname}}::setHost(const QString& host){ +void {{classname}}::setHost(const QString &host) { _host = host; } -void {{classname}}::setPort(int port){ +void {{classname}}::setPort(int port) { _port = port; } -void {{classname}}::setBasePath(const QString& basePath){ +void {{classname}}::setBasePath(const QString &basePath) { _basePath = basePath; } -void {{classname}}::setTimeOut(const int timeOut){ +void {{classname}}::setTimeOut(const int timeOut) { _timeOut = timeOut; } -void {{classname}}::setWorkingDirectory(const QString& path){ +void {{classname}}::setWorkingDirectory(const QString &path) { _workingDirectory = path; } -void {{classname}}::addHeaders(const QString& key, const QString& value){ +void {{classname}}::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } {{#operations}} {{#operation}} -void -{{classname}}::{{nickname}}({{#allParams}}const {{{dataType}}}& {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("{{{path}}}"); +void {{classname}}::{{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("{{{path}}}"); {{#pathParams}} QString {{paramName}}PathParam("{"); {{paramName}}PathParam.append("{{baseName}}").append("}"); fullPath.replace({{paramName}}PathParam, QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}))); - {{/pathParams}} - {{#queryParams}}{{^collectionFormat}} +{{/pathParams}} +{{#queryParams}}{{^collectionFormat}} if (fullPath.indexOf("?") > 0) - fullPath.append("&"); + fullPath.append("&"); else - fullPath.append("?"); - fullPath.append(QUrl::toPercentEncoding("{{baseName}}")) - .append("=") - .append(QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}))); - {{/collectionFormat}}{{#collectionFormat}} + fullPath.append("?"); + fullPath.append(QUrl::toPercentEncoding("{{baseName}}")).append("=").append(QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}))); +{{/collectionFormat}}{{#collectionFormat}} if ({{{paramName}}}.size() > 0) { - if (QString("{{collectionFormat}}").indexOf("multi") == 0) { - foreach({{{baseType}}} t, {{paramName}}) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("{{{baseName}}}=").append(::{{cppNamespace}}::toStringValue(t)); + if (QString("{{collectionFormat}}").indexOf("multi") == 0) { + foreach ({{{baseType}}} t, {{paramName}}) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("{{{baseName}}}=").append(::{{cppNamespace}}::toStringValue(t)); + } + } else if (QString("{{collectionFormat}}").indexOf("ssv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("{{baseName}}="); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}) { + if (count > 0) { + fullPath.append(" "); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + } + } else if (QString("{{collectionFormat}}").indexOf("tsv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("{{baseName}}="); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}) { + if (count > 0) { + fullPath.append("\t"); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + } } - } - else if (QString("{{collectionFormat}}").indexOf("ssv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("{{baseName}}="); - qint32 count = 0; - foreach({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append(" "); - } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - } - } - else if (QString("{{collectionFormat}}").indexOf("tsv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("{{baseName}}="); - qint32 count = 0; - foreach({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append("\t"); - } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - } - } } - {{/collectionFormat}}{{/queryParams}} +{{/collectionFormat}}{{/queryParams}} {{prefix}}HttpRequestWorker *worker = new {{prefix}}HttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); {{prefix}}HttpRequestInput input(fullPath, "{{httpMethod}}"); - {{#formParams}}{{^isFile}} +{{#formParams}}{{^isFile}} input.add_var("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}}));{{/isFile}}{{#isFile}} - input.add_file("{{baseName}}", {{paramName}}.local_filename, {{paramName}}.request_filename, {{paramName}}.mime_type);{{/isFile}}{{/formParams}} - {{#bodyParams}} - {{#isContainer}}{{#isListContainer}} + input.add_file("{{baseName}}", {{paramName}}.local_filename, {{paramName}}.request_filename, {{paramName}}.mime_type);{{/isFile}}{{/formParams}}{{#bodyParams}}{{#isContainer}}{{#isListContainer}} QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toArray());{{/isListContainer}}{{#isMapContainer}} QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toObject());{{/isMapContainer}} QByteArray bytes = doc.toJson(); input.request_body.append(bytes); - {{/isContainer}}{{^isContainer}}{{#isString}} +{{/isContainer}}{{^isContainer}}{{#isString}} QString output({{paramName}});{{/isString}}{{#isByteArray}}QString output({{paramName}});{{/isByteArray}}{{^isString}}{{^isByteArray}}{{^isFile}} QString output = {{paramName}}.asJson();{{/isFile}}{{/isByteArray}}{{/isString}}{{#isFile}}{{#hasConsumes}}input.headers.insert("Content-Type", {{#consumes}}{{^-first}}, {{/-first}}"{{mediaType}}"{{/consumes}});{{/hasConsumes}} QByteArray output = {{paramName}}.asByteArray();{{/isFile}} input.request_body.append(output); - {{/isContainer}}{{/bodyParams}} - {{#headerParams}} +{{/isContainer}}{{/bodyParams}}{{#headerParams}} if ({{paramName}} != nullptr) { input.headers.insert("{{baseName}}", {{paramName}}); } - {{/headerParams}} +{{/headerParams}} - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &{{prefix}}HttpRequestWorker::on_execution_finished, - this, - &{{classname}}::{{nickname}}Callback); + connect(worker, &{{prefix}}HttpRequestWorker::on_execution_finished, this, &{{classname}}::{{nickname}}Callback); worker->execute(&input); } -void -{{classname}}::{{nickname}}Callback({{prefix}}HttpRequestWorker * worker) { +void {{classname}}::{{nickname}}Callback({{prefix}}HttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } {{#returnType}} {{#isListContainer}} {{{returnType}}} output; QString json(worker->response); - QByteArray array (json.toStdString().c_str()); + QByteArray array(json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonArray jsonArray = doc.array(); - foreach(QJsonValue obj, jsonArray) { + foreach (QJsonValue obj, jsonArray) { {{{returnBaseType}}} val; ::{{cppNamespace}}::fromJsonValue(val, obj); output.append(val); @@ -184,10 +168,10 @@ void {{#isMapContainer}} {{{returnType}}} output; QString json(worker->response); - QByteArray array (json.toStdString().c_str()); + QByteArray array(json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject obj = doc.object(); - foreach(QString key, obj.keys()) { + foreach (QString key, obj.keys()) { {{returnBaseType}} val; ::{{cppNamespace}}::fromJsonValue(val, obj[key]); output.insert(key, val); @@ -213,7 +197,6 @@ void {{/operation}} {{/operations}} - {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache index 93538e92968..8c877912e17 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache @@ -13,23 +13,23 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -class {{classname}}: public QObject { +class {{classname}} : public QObject { Q_OBJECT public: - {{classname}}(const QString &scheme = "{{scheme}}", const QString &host = "{{serverHost}}", int port = {{#serverPort}}{{serverPort}}{{/serverPort}}{{^serverPort}}0{{/serverPort}}, const QString& basePath = "{{basePathWithoutHost}}", const int timeOut = 0); + {{classname}}(const QString &scheme = "{{scheme}}", const QString &host = "{{serverHost}}", int port = {{#serverPort}}{{serverPort}}{{/serverPort}}{{^serverPort}}0{{/serverPort}}, const QString &basePath = "{{basePathWithoutHost}}", const int timeOut = 0); ~{{classname}}(); void setScheme(const QString &scheme); void setHost(const QString &host); void setPort(int port); - void setBasePath(const QString& basePath); + void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); - void setWorkingDirectory(const QString& path); - void addHeaders(const QString& key, const QString& value); + void setWorkingDirectory(const QString &path); + void addHeaders(const QString &key, const QString &value); +{{#operations}}{{#operation}} + void {{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});{{/operation}}{{/operations}} - {{#operations}}{{#operation}}void {{nickname}}({{#allParams}}const {{{dataType}}}& {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); - {{/operation}}{{/operations}} private: QString _scheme, _host; int _port; @@ -37,20 +37,21 @@ private: int _timeOut; QString _workingDirectory; QMap defaultHeaders; - {{#operations}}{{#operation}}void {{nickname}}Callback ({{prefix}}HttpRequestWorker * worker); - {{/operation}}{{/operations}} +{{#operations}}{{#operation}} + void {{nickname}}Callback({{prefix}}HttpRequestWorker *worker);{{/operation}}{{/operations}} + signals: - {{#operations}}{{#operation}}void {{nickname}}Signal({{#returnType}}{{{returnType}}} summary{{/returnType}}); - {{/operation}}{{/operations}} - {{#operations}}{{#operation}}void {{nickname}}SignalFull({{prefix}}HttpRequestWorker* worker{{#returnType}}, {{{returnType}}} summary{{/returnType}}); - {{/operation}}{{/operations}} - {{#operations}}{{#operation}}void {{nickname}}SignalE({{#returnType}}{{{returnType}}} summary, {{/returnType}}QNetworkReply::NetworkError error_type, QString error_str); - {{/operation}}{{/operations}} - {{#operations}}{{#operation}}void {{nickname}}SignalEFull({{prefix}}HttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - {{/operation}}{{/operations}} +{{#operations}}{{#operation}} + void {{nickname}}Signal({{#returnType}}{{{returnType}}} summary{{/returnType}});{{/operation}}{{/operations}} +{{#operations}}{{#operation}} + void {{nickname}}SignalFull({{prefix}}HttpRequestWorker *worker{{#returnType}}, {{{returnType}}} summary{{/returnType}});{{/operation}}{{/operations}} +{{#operations}}{{#operation}} + void {{nickname}}SignalE({{#returnType}}{{{returnType}}} summary, {{/returnType}}QNetworkReply::NetworkError error_type, QString error_str);{{/operation}}{{/operations}} +{{#operations}}{{#operation}} + void {{nickname}}SignalEFull({{prefix}}HttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str);{{/operation}}{{/operations}} }; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} #endif diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/enum.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/enum.mustache index bf34a3a150c..7a613a5947d 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/enum.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/enum.mustache @@ -2,27 +2,23 @@ #ifndef {{prefix}}_ENUM_H #define {{prefix}}_ENUM_H -#include #include #include +#include {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} class {{prefix}}Enum { - public: - {{prefix}}Enum() { - - } +public: + {{prefix}}Enum() {} {{prefix}}Enum(QString jsonString) { fromJson(jsonString); } - virtual ~{{prefix}}Enum(){ - - } + virtual ~{{prefix}}Enum() {} virtual QJsonValue asJsonValue() const { return QJsonValue(jstr); @@ -47,12 +43,13 @@ class {{prefix}}Enum { virtual bool isValid() const { return true; } -private : + +private: QString jstr; }; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} Q_DECLARE_METATYPE({{#cppNamespaceDeclarations}}{{this}}::{{/cppNamespaceDeclarations}}{{prefix}}Enum) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache index b6a8ee4b2dc..29918951019 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache @@ -1,246 +1,200 @@ {{>licenseInfo}} -#include #include "{{prefix}}Helpers.h" - +#include {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} - -QString -toStringValue(const QString &value) { +QString toStringValue(const QString &value) { return value; } -QString -toStringValue(const QDateTime &value){ +QString toStringValue(const QDateTime &value) { // ISO 8601 return value.toString("yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); } -QString -toStringValue(const QByteArray &value){ +QString toStringValue(const QByteArray &value) { return QString(value); } -QString -toStringValue(const QDate &value){ +QString toStringValue(const QDate &value) { // ISO 8601 return value.toString(Qt::DateFormat::ISODate); } -QString -toStringValue(const qint32 &value) { +QString toStringValue(const qint32 &value) { return QString::number(value); } -QString -toStringValue(const qint64 &value) { +QString toStringValue(const qint64 &value) { return QString::number(value); } -QString -toStringValue(const bool &value) { +QString toStringValue(const bool &value) { return QString(value ? "true" : "false"); } -QString -toStringValue(const float &value){ +QString toStringValue(const float &value) { return QString::number(static_cast(value)); } -QString -toStringValue(const double &value){ +QString toStringValue(const double &value) { return QString::number(value); } -QString -toStringValue(const {{prefix}}Object &value){ +QString toStringValue(const {{prefix}}Object &value) { return value.asJson(); } - -QString -toStringValue(const {{prefix}}Enum &value){ +QString toStringValue(const {{prefix}}Enum &value) { return value.asJson(); } -QString -toStringValue(const {{prefix}}HttpFileElement &value){ +QString toStringValue(const {{prefix}}HttpFileElement &value) { return value.asJson(); } - -QJsonValue -toJsonValue(const QString &value){ - return QJsonValue(value); +QJsonValue toJsonValue(const QString &value) { + return QJsonValue(value); } -QJsonValue -toJsonValue(const QDateTime &value){ +QJsonValue toJsonValue(const QDateTime &value) { return QJsonValue(value.toString(Qt::ISODate)); } -QJsonValue -toJsonValue(const QByteArray &value){ +QJsonValue toJsonValue(const QByteArray &value) { return QJsonValue(QString(value.toBase64())); } -QJsonValue -toJsonValue(const QDate &value){ +QJsonValue toJsonValue(const QDate &value) { return QJsonValue(value.toString(Qt::ISODate)); } -QJsonValue -toJsonValue(const qint32 &value){ +QJsonValue toJsonValue(const qint32 &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const qint64 &value){ +QJsonValue toJsonValue(const qint64 &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const bool &value){ +QJsonValue toJsonValue(const bool &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const float &value){ +QJsonValue toJsonValue(const float &value) { return QJsonValue(static_cast(value)); } -QJsonValue -toJsonValue(const double &value){ +QJsonValue toJsonValue(const double &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const {{prefix}}Object &value){ +QJsonValue toJsonValue(const {{prefix}}Object &value) { return value.asJsonObject(); } -QJsonValue -toJsonValue(const {{prefix}}Enum &value){ +QJsonValue toJsonValue(const {{prefix}}Enum &value) { return value.asJsonValue(); } -QJsonValue -toJsonValue(const {{prefix}}HttpFileElement &value){ +QJsonValue toJsonValue(const {{prefix}}HttpFileElement &value) { return value.asJsonValue(); } - -bool -fromStringValue(const QString &inStr, QString &value){ +bool fromStringValue(const QString &inStr, QString &value) { value.clear(); value.append(inStr); return !inStr.isEmpty(); } -bool -fromStringValue(const QString &inStr, QDateTime &value){ - if(inStr.isEmpty()){ +bool fromStringValue(const QString &inStr, QDateTime &value) { + if (inStr.isEmpty()) { return false; - } - else{ + } else { auto dateTime = QDateTime::fromString(inStr, "yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); - if(dateTime.isValid()){ + if (dateTime.isValid()) { value.setDate(dateTime.date()); value.setTime(dateTime.time()); - } - else{ + } else { qDebug() << "DateTime is invalid"; } return dateTime.isValid(); } } -bool -fromStringValue(const QString &inStr, QByteArray &value){ - if(inStr.isEmpty()){ +bool fromStringValue(const QString &inStr, QByteArray &value) { + if (inStr.isEmpty()) { return false; - } - else{ + } else { value.clear(); value.append(inStr.toUtf8()); return value.count() > 0; } } -bool -fromStringValue(const QString &inStr, QDate &value){ - if(inStr.isEmpty()){ +bool fromStringValue(const QString &inStr, QDate &value) { + if (inStr.isEmpty()) { return false; - } - else{ + } else { auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate); - if(date.isValid()){ + if (date.isValid()) { value.setDate(date.year(), date.month(), date.day()); - } - else{ + } else { qDebug() << "Date is invalid"; } return date.isValid(); } } -bool -fromStringValue(const QString &inStr, qint32 &value){ +bool fromStringValue(const QString &inStr, qint32 &value) { bool ok = false; value = QVariant(inStr).toInt(&ok); return ok; } -bool -fromStringValue(const QString &inStr, qint64 &value){ +bool fromStringValue(const QString &inStr, qint64 &value) { bool ok = false; value = QVariant(inStr).toLongLong(&ok); return ok; } -bool -fromStringValue(const QString &inStr, bool &value){ +bool fromStringValue(const QString &inStr, bool &value) { value = QVariant(inStr).toBool(); return ((inStr == "true") || (inStr == "false")); } -bool -fromStringValue(const QString &inStr, float &value){ +bool fromStringValue(const QString &inStr, float &value) { bool ok = false; value = QVariant(inStr).toFloat(&ok); return ok; } -bool -fromStringValue(const QString &inStr, double &value){ +bool fromStringValue(const QString &inStr, double &value) { bool ok = false; value = QVariant(inStr).toDouble(&ok); return ok; } -bool -fromStringValue(const QString &inStr, {{prefix}}Enum &value){ +bool fromStringValue(const QString &inStr, {{prefix}}Enum &value) { value.fromJson(inStr); return true; } -bool -fromStringValue(const QString &inStr, {{prefix}}HttpFileElement &value){ +bool fromStringValue(const QString &inStr, {{prefix}}HttpFileElement &value) { return value.fromStringValue(inStr); } -bool -fromJsonValue(QString &value, const QJsonValue &jval){ +bool fromJsonValue(QString &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull()){ - if(jval.isString()){ + if (!jval.isUndefined() && !jval.isNull()) { + if (jval.isString()) { value = jval.toString(); - } else if(jval.isBool()) { - value = jval.toBool() ? "true" : "false"; - } else if(jval.isDouble()){ + } else if (jval.isBool()) { + value = jval.toBool() ? "true" : "false"; + } else if (jval.isDouble()) { value = QString::number(jval.toDouble()); } else { ok = false; @@ -251,10 +205,9 @@ fromJsonValue(QString &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(QDateTime &value, const QJsonValue &jval){ +bool fromJsonValue(QDateTime &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && jval.isString()){ + if (!jval.isUndefined() && !jval.isNull() && jval.isString()) { value = QDateTime::fromString(jval.toString(), Qt::ISODate); ok = value.isValid(); } else { @@ -263,22 +216,20 @@ fromJsonValue(QDateTime &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(QByteArray &value, const QJsonValue &jval){ +bool fromJsonValue(QByteArray &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && jval.isString()) { + if (!jval.isUndefined() && !jval.isNull() && jval.isString()) { value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString())); - ok = value.size() > 0 ; + ok = value.size() > 0; } else { ok = false; } return ok; } -bool -fromJsonValue(QDate &value, const QJsonValue &jval){ +bool fromJsonValue(QDate &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && jval.isString()){ + if (!jval.isUndefined() && !jval.isNull() && jval.isString()) { value = QDate::fromString(jval.toString(), Qt::ISODate); ok = value.isValid(); } else { @@ -287,10 +238,9 @@ fromJsonValue(QDate &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(qint32 &value, const QJsonValue &jval){ +bool fromJsonValue(qint32 &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()){ + if (!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()) { value = jval.toInt(); } else { ok = false; @@ -298,10 +248,9 @@ fromJsonValue(qint32 &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(qint64 &value, const QJsonValue &jval){ +bool fromJsonValue(qint64 &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()){ + if (!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()) { value = jval.toVariant().toLongLong(); } else { ok = false; @@ -309,10 +258,9 @@ fromJsonValue(qint64 &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(bool &value, const QJsonValue &jval){ +bool fromJsonValue(bool &value, const QJsonValue &jval) { bool ok = true; - if(jval.isBool()){ + if (jval.isBool()) { value = jval.toBool(); } else { ok = false; @@ -320,10 +268,9 @@ fromJsonValue(bool &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(float &value, const QJsonValue &jval){ +bool fromJsonValue(float &value, const QJsonValue &jval) { bool ok = true; - if(jval.isDouble()){ + if (jval.isDouble()) { value = static_cast(jval.toDouble()); } else { ok = false; @@ -331,10 +278,9 @@ fromJsonValue(float &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(double &value, const QJsonValue &jval){ +bool fromJsonValue(double &value, const QJsonValue &jval) { bool ok = true; - if(jval.isDouble()){ + if (jval.isDouble()) { value = jval.toDouble(); } else { ok = false; @@ -342,10 +288,9 @@ fromJsonValue(double &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue({{prefix}}Object &value, const QJsonValue &jval){ +bool fromJsonValue({{prefix}}Object &value, const QJsonValue &jval) { bool ok = true; - if(jval.isObject()){ + if (jval.isObject()) { value.fromJsonObject(jval.toObject()); ok = value.isValid(); } else { @@ -354,17 +299,15 @@ fromJsonValue({{prefix}}Object &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue({{prefix}}Enum &value, const QJsonValue &jval){ +bool fromJsonValue({{prefix}}Enum &value, const QJsonValue &jval) { value.fromJsonValue(jval); return true; } -bool -fromJsonValue({{prefix}}HttpFileElement &value, const QJsonValue &jval){ +bool fromJsonValue({{prefix}}HttpFileElement &value, const QJsonValue &jval) { return value.fromJsonValue(jval); } {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache index d68d1d23a89..a53e0a30edd 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache @@ -2,184 +2,184 @@ #ifndef {{prefix}}_HELPERS_H #define {{prefix}}_HELPERS_H -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include #include -#include "{{prefix}}Object.h" #include "{{prefix}}Enum.h" #include "{{prefix}}HttpFileElement.h" +#include "{{prefix}}Object.h" {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} - template QString - toStringValue(const QList &val); +template +QString toStringValue(const QList &val); - template - bool fromStringValue(const QList &inStr, QList &val); +template +bool fromStringValue(const QList &inStr, QList &val); - template - bool fromStringValue(const QMap &inStr, QMap &val); +template +bool fromStringValue(const QMap &inStr, QMap &val); - template - QJsonValue toJsonValue(const QList &val); +template +QJsonValue toJsonValue(const QList &val); - template - QJsonValue toJsonValue(const QMap &val); +template +QJsonValue toJsonValue(const QMap &val); - template - bool fromJsonValue(QList &val, const QJsonValue &jval); +template +bool fromJsonValue(QList &val, const QJsonValue &jval); - template - bool fromJsonValue(QMap &val, const QJsonValue &jval); - - QString toStringValue(const QString &value); - QString toStringValue(const QDateTime &value); - QString toStringValue(const QByteArray &value); - QString toStringValue(const QDate &value); - QString toStringValue(const qint32 &value); - QString toStringValue(const qint64 &value); - QString toStringValue(const bool &value); - QString toStringValue(const float &value); - QString toStringValue(const double &value); - QString toStringValue(const {{prefix}}Object &value); - QString toStringValue(const {{prefix}}Enum &value); - QString toStringValue(const {{prefix}}HttpFileElement &value); +template +bool fromJsonValue(QMap &val, const QJsonValue &jval); - template - QString toStringValue(const QList &val) { - QString strArray; - for(const auto& item : val) { - strArray.append(toStringValue(item) + ","); - } - if(val.count() > 0) { - strArray.chop(1); - } - return strArray; +QString toStringValue(const QString &value); +QString toStringValue(const QDateTime &value); +QString toStringValue(const QByteArray &value); +QString toStringValue(const QDate &value); +QString toStringValue(const qint32 &value); +QString toStringValue(const qint64 &value); +QString toStringValue(const bool &value); +QString toStringValue(const float &value); +QString toStringValue(const double &value); +QString toStringValue(const {{prefix}}Object &value); +QString toStringValue(const {{prefix}}Enum &value); +QString toStringValue(const {{prefix}}HttpFileElement &value); + +template +QString toStringValue(const QList &val) { + QString strArray; + for (const auto &item : val) { + strArray.append(toStringValue(item) + ","); } - - QJsonValue toJsonValue(const QString &value); - QJsonValue toJsonValue(const QDateTime &value); - QJsonValue toJsonValue(const QByteArray &value); - QJsonValue toJsonValue(const QDate &value); - QJsonValue toJsonValue(const qint32 &value); - QJsonValue toJsonValue(const qint64 &value); - QJsonValue toJsonValue(const bool &value); - QJsonValue toJsonValue(const float &value); - QJsonValue toJsonValue(const double &value); - QJsonValue toJsonValue(const {{prefix}}Object &value); - QJsonValue toJsonValue(const {{prefix}}Enum &value); - QJsonValue toJsonValue(const {{prefix}}HttpFileElement &value); - - template - QJsonValue toJsonValue(const QList &val) { - QJsonArray jArray; - for(const auto& item : val) { - jArray.append(toJsonValue(item)); - } - return jArray; + if (val.count() > 0) { + strArray.chop(1); } + return strArray; +} - template - QJsonValue toJsonValue(const QMap &val) { - QJsonObject jObject; - for(const auto& itemkey : val.keys()) { - jObject.insert(itemkey, toJsonValue(val.value(itemkey))); - } - return jObject; +QJsonValue toJsonValue(const QString &value); +QJsonValue toJsonValue(const QDateTime &value); +QJsonValue toJsonValue(const QByteArray &value); +QJsonValue toJsonValue(const QDate &value); +QJsonValue toJsonValue(const qint32 &value); +QJsonValue toJsonValue(const qint64 &value); +QJsonValue toJsonValue(const bool &value); +QJsonValue toJsonValue(const float &value); +QJsonValue toJsonValue(const double &value); +QJsonValue toJsonValue(const {{prefix}}Object &value); +QJsonValue toJsonValue(const {{prefix}}Enum &value); +QJsonValue toJsonValue(const {{prefix}}HttpFileElement &value); + +template +QJsonValue toJsonValue(const QList &val) { + QJsonArray jArray; + for (const auto &item : val) { + jArray.append(toJsonValue(item)); } + return jArray; +} - bool fromStringValue(const QString &inStr, QString &value); - bool fromStringValue(const QString &inStr, QDateTime &value); - bool fromStringValue(const QString &inStr, QByteArray &value); - bool fromStringValue(const QString &inStr, QDate &value); - bool fromStringValue(const QString &inStr, qint32 &value); - bool fromStringValue(const QString &inStr, qint64 &value); - bool fromStringValue(const QString &inStr, bool &value); - bool fromStringValue(const QString &inStr, float &value); - bool fromStringValue(const QString &inStr, double &value); - bool fromStringValue(const QString &inStr, {{prefix}}Object &value); - bool fromStringValue(const QString &inStr, {{prefix}}Enum &value); - bool fromStringValue(const QString &inStr, {{prefix}}HttpFileElement &value); - - template - bool fromStringValue(const QList &inStr, QList &val) { - bool ok = (inStr.count() > 0); - for(const auto& item: inStr){ - T itemVal; - ok &= fromStringValue(item, itemVal); - val.push_back(itemVal); - } - return ok; +template +QJsonValue toJsonValue(const QMap &val) { + QJsonObject jObject; + for (const auto &itemkey : val.keys()) { + jObject.insert(itemkey, toJsonValue(val.value(itemkey))); } + return jObject; +} - template - bool fromStringValue(const QMap &inStr, QMap &val) { - bool ok = (inStr.count() > 0); - for(const auto& itemkey : inStr.keys()){ - T itemVal; - ok &= fromStringValue(inStr.value(itemkey), itemVal); - val.insert(itemkey, itemVal); - } - return ok; +bool fromStringValue(const QString &inStr, QString &value); +bool fromStringValue(const QString &inStr, QDateTime &value); +bool fromStringValue(const QString &inStr, QByteArray &value); +bool fromStringValue(const QString &inStr, QDate &value); +bool fromStringValue(const QString &inStr, qint32 &value); +bool fromStringValue(const QString &inStr, qint64 &value); +bool fromStringValue(const QString &inStr, bool &value); +bool fromStringValue(const QString &inStr, float &value); +bool fromStringValue(const QString &inStr, double &value); +bool fromStringValue(const QString &inStr, {{prefix}}Object &value); +bool fromStringValue(const QString &inStr, {{prefix}}Enum &value); +bool fromStringValue(const QString &inStr, {{prefix}}HttpFileElement &value); + +template +bool fromStringValue(const QList &inStr, QList &val) { + bool ok = (inStr.count() > 0); + for (const auto &item : inStr) { + T itemVal; + ok &= fromStringValue(item, itemVal); + val.push_back(itemVal); } + return ok; +} - bool fromJsonValue(QString &value, const QJsonValue &jval); - bool fromJsonValue(QDateTime &value, const QJsonValue &jval); - bool fromJsonValue(QByteArray &value, const QJsonValue &jval); - bool fromJsonValue(QDate &value, const QJsonValue &jval); - bool fromJsonValue(qint32 &value, const QJsonValue &jval); - bool fromJsonValue(qint64 &value, const QJsonValue &jval); - bool fromJsonValue(bool &value, const QJsonValue &jval); - bool fromJsonValue(float &value, const QJsonValue &jval); - bool fromJsonValue(double &value, const QJsonValue &jval); - bool fromJsonValue({{prefix}}Object &value, const QJsonValue &jval); - bool fromJsonValue({{prefix}}Enum &value, const QJsonValue &jval); - bool fromJsonValue({{prefix}}HttpFileElement &value, const QJsonValue &jval); +template +bool fromStringValue(const QMap &inStr, QMap &val) { + bool ok = (inStr.count() > 0); + for (const auto &itemkey : inStr.keys()) { + T itemVal; + ok &= fromStringValue(inStr.value(itemkey), itemVal); + val.insert(itemkey, itemVal); + } + return ok; +} - template - bool fromJsonValue(QList &val, const QJsonValue &jval) { - bool ok = true; - if(jval.isArray()){ - for(const auto jitem : jval.toArray()){ - T item; - ok &= fromJsonValue(item, jitem); - val.push_back(item); +bool fromJsonValue(QString &value, const QJsonValue &jval); +bool fromJsonValue(QDateTime &value, const QJsonValue &jval); +bool fromJsonValue(QByteArray &value, const QJsonValue &jval); +bool fromJsonValue(QDate &value, const QJsonValue &jval); +bool fromJsonValue(qint32 &value, const QJsonValue &jval); +bool fromJsonValue(qint64 &value, const QJsonValue &jval); +bool fromJsonValue(bool &value, const QJsonValue &jval); +bool fromJsonValue(float &value, const QJsonValue &jval); +bool fromJsonValue(double &value, const QJsonValue &jval); +bool fromJsonValue({{prefix}}Object &value, const QJsonValue &jval); +bool fromJsonValue({{prefix}}Enum &value, const QJsonValue &jval); +bool fromJsonValue({{prefix}}HttpFileElement &value, const QJsonValue &jval); + +template +bool fromJsonValue(QList &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isArray()) { + for (const auto jitem : jval.toArray()) { + T item; + ok &= fromJsonValue(item, jitem); + val.push_back(item); + } + } else { + ok = false; + } + return ok; +} + +template +bool fromJsonValue(QMap &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isObject()) { + auto varmap = jval.toObject().toVariantMap(); + if (varmap.count() > 0) { + for (const auto &itemkey : varmap.keys()) { + T itemVal; + ok &= fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); + val.insert(itemkey, itemVal); } - } else { - ok = false; } - return ok; - } - - template - bool fromJsonValue(QMap &val, const QJsonValue &jval) { - bool ok = true; - if(jval.isObject()){ - auto varmap = jval.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(const auto& itemkey : varmap.keys() ){ - T itemVal; - ok &= fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); - val.insert(itemkey, itemVal); - } - } - } else { - ok = false; - } - return ok; + } else { + ok = false; } + return ok; +} {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} #endif // {{prefix}}_HELPERS_H diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache index 9866f297a4d..360883d9f9d 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache @@ -3,8 +3,8 @@ * {{{appDescription}}} * * {{#version}}The version of the OpenAPI document: {{{version}}}{{/version}} - * {{#infoEmail}}Contact: {{{infoEmail}}}{{/infoEmail}} - * + *{{#infoEmail}} Contact: {{{infoEmail}}} + *{{/infoEmail}} * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache index ea1e8e1411b..05f22ceb8fb 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache @@ -1,11 +1,10 @@ -{{>licenseInfo}} -{{#models}}{{#model}} +{{>licenseInfo}}{{#models}}{{#model}} #include "{{classname}}.h" -#include -#include -#include #include +#include +#include +#include #include "{{prefix}}Helpers.h" @@ -22,24 +21,20 @@ namespace {{this}} { this->initializeModel(); } -{{classname}}::~{{classname}}() { +{{classname}}::~{{classname}}() {} -} - -void -{{classname}}::initializeModel() { - {{^isEnum}}{{#vars}} +void {{classname}}::initializeModel() { +{{^isEnum}}{{#vars}} m_{{name}}_isSet = false; - m_{{name}}_isValid = false; - {{/vars}}{{/isEnum}}{{#isEnum}} + m_{{name}}_isValid = false;{{^-last}} +{{/-last}}{{/vars}}{{/isEnum}}{{#isEnum}} m_value_isSet = false; m_value_isValid = false; m_value = e{{classname}}::INVALID_VALUE_OPENAPI_GENERATED;{{/isEnum}} } -void -{{classname}}::fromJson(QString jsonString) { - {{^isEnum}}QByteArray array (jsonString.toStdString().c_str()); +void {{classname}}::fromJson(QString jsonString) { + {{^isEnum}}QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject);{{/isEnum}}{{#isEnum}}{{#allowableValues}}{{#enumVars}} @@ -49,9 +44,8 @@ void }{{/enumVars}}{{/allowableValues}}{{/isEnum}} } -void -{{classname}}::fromJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}(QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} json) { - {{^isEnum}}{{#vars}}{{^isContainer}} +void {{classname}}::fromJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}(QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} json) { +{{^isEnum}}{{#vars}}{{^isContainer}} m_{{name}}_isValid = ::{{cppNamespace}}::fromJsonValue({{name}}, json[QString("{{baseName}}")]); m_{{name}}_isSet = !json[QString("{{baseName}}")].isNull() && m_{{name}}_isValid;{{/isContainer}}{{#isContainer}}{{^items.isContainer}} m_{{name}}_isValid = ::{{cppNamespace}}::fromJsonValue({{name}}, json[QString("{{baseName}}")]); @@ -80,13 +74,12 @@ void {{name}}.insert({{name}}.end(), val, item); } } - }{{/isMapContainer}}{{/items.isContainer}}{{/isContainer}} - {{/vars}}{{/isEnum}}{{#isEnum}} - {{#allowableValues}}{{#enumVars}}{{#-first}}{{#isString}}fromJson(json.toString());{{/isString}}{{^isString}}m_value = static_cast(json.toInt());{{/isString}}{{/-first}}{{/enumVars}}{{/allowableValues}}{{/isEnum}} + }{{/isMapContainer}}{{/items.isContainer}}{{/isContainer}}{{^-last}} +{{/-last}} +{{/vars}}{{/isEnum}}{{#isEnum}}{{#allowableValues}}{{#enumVars}}{{#-first}}{{#isString}}fromJson(json.toString());{{/isString}}{{^isString}}m_value = static_cast(json.toInt());{{/isString}}{{/-first}}{{/enumVars}}{{/allowableValues}}{{/isEnum}} } -QString -{{classname}}::asJson () const { +QString {{classname}}::asJson() const { {{^isEnum}}QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -105,27 +98,24 @@ QString return val;{{/isEnum}} } -QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} -{{classname}}::asJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}() const { - {{^isEnum}}QJsonObject obj;{{#vars}} - {{^isContainer}}{{#complexType}}if({{name}}.isSet()){{/complexType}}{{^complexType}}if(m_{{name}}_isSet){{/complexType}}{ +QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} {{classname}}::asJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}() const { + {{^isEnum}}QJsonObject obj;{{#vars}}{{^isContainer}}{{#complexType}} + if ({{name}}.isSet()){{/complexType}}{{^complexType}} + if (m_{{name}}_isSet){{/complexType}} { obj.insert(QString("{{baseName}}"), ::{{cppNamespace}}::toJsonValue({{name}})); }{{/isContainer}}{{#isContainer}} - if({{name}}.size() > 0){ + if ({{name}}.size() > 0) { {{^items.isContainer}}obj.insert(QString("{{baseName}}"), ::{{cppNamespace}}::toJsonValue({{name}}));{{/items.isContainer}}{{#items.isContainer}} obj.insert(QString("{{baseName}}"), toJsonValue({{name}}));{{/items.isContainer}} - } {{/isContainer}}{{/vars}} + }{{/isContainer}}{{/vars}} return obj;{{/isEnum}}{{#isEnum}} {{#allowableValues}}{{#enumVars}}{{#-first}}{{^isString}}return QJsonValue(static_cast(m_value));{{/isString}}{{#isString}}return QJsonValue(asJson());{{/isString}}{{/-first}}{{/enumVars}}{{/allowableValues}}{{/isEnum}} } -{{^isEnum}}{{#vars}} -{{{dataType}}} -{{classname}}::{{getter}}() const { +{{^isEnum}}{{#vars}}{{{dataType}}} {{classname}}::{{getter}}() const { return {{name}}; } -void -{{classname}}::{{setter}}(const {{{dataType}}} &{{name}}) { +void {{classname}}::{{setter}}(const {{{dataType}}} &{{name}}) { this->{{name}} = {{name}}; this->m_{{name}}_isSet = true; } @@ -140,25 +130,27 @@ void {{classname}}::setValue(const {{classname}}::e{{classname}}& value){ m_value_isSet = true; } {{/isEnum}} -bool -{{classname}}::isSet() const { +bool {{classname}}::isSet() const { {{^isEnum}}bool isObjectUpdated = false; - do{ {{#vars}} - {{#isContainer}}if({{name}}.size() > 0){{/isContainer}}{{^isContainer}}{{#complexType}}if({{name}}.isSet()){{/complexType}}{{^complexType}}if(m_{{name}}_isSet){{/complexType}}{{/isContainer}}{ isObjectUpdated = true; break;} - {{/vars}}}while(false); + do { +{{#vars}} {{#isContainer}}if ({{name}}.size() > 0){{/isContainer}}{{^isContainer}}{{#complexType}}if ({{name}}.isSet()){{/complexType}}{{^complexType}}if (m_{{name}}_isSet){{/complexType}}{{/isContainer}} { + isObjectUpdated = true; + break; + }{{^-last}} + +{{/-last}}{{/vars}} + } while (false); return isObjectUpdated;{{/isEnum}}{{#isEnum}} return m_value_isSet;{{/isEnum}} } -bool -{{classname}}::isValid() const { +bool {{classname}}::isValid() const { // only required properties are required for the object to be considered valid return {{^isEnum}}{{#vars}}{{#required}}m_{{name}}_isValid && {{/required}}{{/vars}}true{{/isEnum}}{{#isEnum}}m_value_isValid{{/isEnum}}; } {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} - {{/model}} {{/models}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache index 27a7c09c7cc..8f194ac12f9 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache @@ -10,13 +10,11 @@ #include -{{/model}}{{/models}} -{{#imports}}{{{import}}} +{{/model}}{{/models}}{{#imports}}{{{import}}} {{/imports}} -#include "{{prefix}}Object.h" #include "{{prefix}}Enum.h" - +#include "{{prefix}}Object.h" {{#models}} {{#model}} @@ -24,22 +22,21 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -class {{classname}}: public {{prefix}}{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Enum{{/isEnum}} { +class {{classname}} : public {{prefix}}{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Enum{{/isEnum}} { public: {{classname}}(); {{classname}}(QString json); ~{{classname}}() override; - QString asJson () const override; + QString asJson() const override; QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} asJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}() const override; void fromJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}(QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} json) override; void fromJson(QString jsonString) override; - - {{^isEnum}}{{#vars}} +{{^isEnum}}{{#vars}} {{{dataType}}} {{getter}}() const; void {{setter}}(const {{{dataType}}} &{{name}}); - - {{/vars}}{{/isEnum}}{{#isEnum}}{{#allowableValues}} +{{/vars}}{{/isEnum}}{{#isEnum}} +{{#allowableValues}} enum class e{{classname}} {{#enumVars}}{{#-first}}{{^isString}}: int {{/isString}}{{/-first}}{{/enumVars}}{ INVALID_VALUE_OPENAPI_GENERATED = 0, {{#enumVars}} @@ -51,28 +48,25 @@ public: {{{name}}}{{^-last}}, {{/-last}} {{/enumVars}} };{{/allowableValues}} - {{classname}}::e{{classname}} getValue() const; void setValue(const {{classname}}::e{{classname}}& value);{{/isEnum}} - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - {{^isEnum}}{{#vars}} +{{^isEnum}}{{#vars}} {{{dataType}}} {{name}}; bool m_{{name}}_isSet; bool m_{{name}}_isValid; - {{/vars}}{{/isEnum}} - {{#isEnum}}e{{classname}} m_value; +{{/vars}}{{/isEnum}}{{#isEnum}} + e{{classname}} m_value; bool m_value_isSet; bool m_value_isValid; - {{/isEnum}} -}; +{{/isEnum}}}; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} Q_DECLARE_METATYPE({{#cppNamespaceDeclarations}}{{this}}::{{/cppNamespaceDeclarations}}{{classname}}) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache index e58b49adb92..7a68ecc6f74 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache @@ -2,8 +2,8 @@ #ifndef {{prefix}}_OBJECT_H #define {{prefix}}_OBJECT_H -#include #include +#include #include {{#cppNamespaceDeclarations}} @@ -11,18 +11,14 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} class {{prefix}}Object { - public: - {{prefix}}Object() { - - } +public: + {{prefix}}Object() {} {{prefix}}Object(QString jsonString) { fromJson(jsonString); } - virtual ~{{prefix}}Object(){ - - } + virtual ~{{prefix}}Object() {} virtual QJsonObject asJsonObject() const { return jObj; @@ -49,12 +45,13 @@ class {{prefix}}Object { virtual bool isValid() const { return true; } -private : + +private: QJsonObject jObj; }; {{#cppNamespaceDeclarations}} -} +} // namespace {{this}} {{/cppNamespaceDeclarations}} Q_DECLARE_METATYPE({{#cppNamespaceDeclarations}}{{this}}::{{/cppNamespaceDeclarations}}{{prefix}}Object) diff --git a/samples/client/petstore/cpp-qt5/.clang-format b/samples/client/petstore/cpp-qt5/.clang-format new file mode 100644 index 00000000000..1afa04682fa --- /dev/null +++ b/samples/client/petstore/cpp-qt5/.clang-format @@ -0,0 +1,7 @@ +--- +Language: Cpp +AccessModifierOffset: -4 +AllowShortFunctionsOnASingleLine: Empty +BreakBeforeBinaryOperators: NonAssignment +ColumnLimit: 0 +IndentWidth: 4 diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp index da684cfc7f5..595aa66b3cd 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp +++ b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp @@ -19,7 +19,7 @@ void PetApiTests::findPetsByStatusTest() { connect(&api, &PFXPetApi::findPetsByStatusSignal, [&](QList pets) { petFound = true; - foreach(PFXPet pet, pets) { + foreach (PFXPet pet, pets) { QVERIFY(pet.getStatus().startsWith("available") || pet.getStatus().startsWith("sold")); } loop.quit(); @@ -74,7 +74,7 @@ void PetApiTests::updatePetTest() { QEventLoop loop; bool petAdded = false; - connect(&api, &PFXPetApi::addPetSignal, [&](){ + connect(&api, &PFXPetApi::addPetSignal, [&]() { petAdded = true; loop.quit(); }); @@ -89,9 +89,9 @@ void PetApiTests::updatePetTest() { bool petFetched = false; connect(&api, &PFXPetApi::getPetByIdSignal, this, [&](PFXPet pet) { - petFetched = true; - petToCheck = pet; - loop.quit(); + petFetched = true; + petToCheck = pet; + loop.quit(); }); // create pet @@ -138,7 +138,7 @@ void PetApiTests::updatePetWithFormTest() { // create pet bool petAdded = false; - connect(&api, &PFXPetApi::addPetSignal, [&](){ + connect(&api, &PFXPetApi::addPetSignal, [&]() { petAdded = true; loop.quit(); }); @@ -163,7 +163,7 @@ void PetApiTests::updatePetWithFormTest() { // update it bool petUpdated = false; - connect(&api, &PFXPetApi::updatePetWithFormSignal, [&](){ + connect(&api, &PFXPetApi::updatePetWithFormSignal, [&]() { petUpdated = true; loop.quit(); }); diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h index ec126905cf5..98989c51d25 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h +++ b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h @@ -4,7 +4,7 @@ using namespace test_namespace; -class PetApiTests: public QObject { +class PetApiTests : public QObject { Q_OBJECT PFXPet createRandomPet(); diff --git a/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp b/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp index 282d40cac10..fd7d04b0ba4 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp +++ b/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp @@ -1,8 +1,8 @@ #include "StoreApiTests.h" +#include #include #include -#include void StoreApiTests::placeOrderTest() { PFXStoreApi api; @@ -16,7 +16,7 @@ void StoreApiTests::placeOrderTest() { qDebug() << order.getShipDate(); loop.quit(); }); - connect(&api, &PFXStoreApi::placeOrderSignalE, [&](){ + connect(&api, &PFXStoreApi::placeOrderSignalE, [&]() { QFAIL("shouldn't trigger error"); loop.quit(); }); @@ -60,7 +60,7 @@ void StoreApiTests::getInventoryTest() { connect(&api, &PFXStoreApi::getInventorySignal, [&](QMap status) { inventoryFetched = true; - for(const auto& key : status.keys()) { + for (const auto &key : status.keys()) { qDebug() << (key) << " Quantities " << status.value(key); } loop.quit(); diff --git a/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h b/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h index 440bf181c54..f2c9391afcb 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h +++ b/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h @@ -4,7 +4,7 @@ using namespace test_namespace; -class StoreApiTests: public QObject { +class StoreApiTests : public QObject { Q_OBJECT private slots: diff --git a/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.cpp b/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.cpp index c047724372a..87e7c3f591b 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.cpp +++ b/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.cpp @@ -1,8 +1,8 @@ #include "UserApiTests.h" +#include #include #include -#include PFXUser UserApiTests::createRandomUser() { PFXUser user; @@ -17,14 +17,14 @@ PFXUser UserApiTests::createRandomUser() { return user; } -void UserApiTests::createUserTest(){ +void UserApiTests::createUserTest() { PFXUserApi api; QEventLoop loop; bool userCreated = false; - connect(&api, &PFXUserApi::createUserSignal, [&](){ - userCreated = true; - loop.quit(); + connect(&api, &PFXUserApi::createUserSignal, [&]() { + userCreated = true; + loop.quit(); }); api.createUser(createRandomUser()); @@ -33,14 +33,14 @@ void UserApiTests::createUserTest(){ QVERIFY2(userCreated, "didn't finish within timeout"); } -void UserApiTests::createUsersWithArrayInputTest(){ +void UserApiTests::createUsersWithArrayInputTest() { PFXUserApi api; QEventLoop loop; bool usersCreated = false; - connect(&api, &PFXUserApi::createUsersWithArrayInputSignal, [&](){ - usersCreated = true; - loop.quit(); + connect(&api, &PFXUserApi::createUsersWithArrayInputSignal, [&]() { + usersCreated = true; + loop.quit(); }); QList users; @@ -53,14 +53,14 @@ void UserApiTests::createUsersWithArrayInputTest(){ QVERIFY2(usersCreated, "didn't finish within timeout"); } -void UserApiTests::createUsersWithListInputTest(){ +void UserApiTests::createUsersWithListInputTest() { PFXUserApi api; QEventLoop loop; bool usersCreated = false; - connect(&api, &PFXUserApi::createUsersWithListInputSignal, [&](){ - usersCreated = true; - loop.quit(); + connect(&api, &PFXUserApi::createUsersWithListInputSignal, [&]() { + usersCreated = true; + loop.quit(); }); QList users; @@ -77,14 +77,14 @@ void UserApiTests::createUsersWithListInputTest(){ QVERIFY2(usersCreated, "didn't finish within timeout"); } -void UserApiTests::deleteUserTest(){ +void UserApiTests::deleteUserTest() { PFXUserApi api; QEventLoop loop; bool userDeleted = false; - connect(&api, &PFXUserApi::deleteUserSignal, [&](){ - userDeleted = true; - loop.quit(); + connect(&api, &PFXUserApi::deleteUserSignal, [&]() { + userDeleted = true; + loop.quit(); }); api.deleteUser("rambo"); @@ -93,7 +93,7 @@ void UserApiTests::deleteUserTest(){ QVERIFY2(userDeleted, "didn't finish within timeout"); } -void UserApiTests::getUserByNameTest(){ +void UserApiTests::getUserByNameTest() { PFXUserApi api; QEventLoop loop; bool userFetched = false; @@ -111,7 +111,7 @@ void UserApiTests::getUserByNameTest(){ QVERIFY2(userFetched, "didn't finish within timeout"); } -void UserApiTests::loginUserTest(){ +void UserApiTests::loginUserTest() { PFXUserApi api; QEventLoop loop; bool userLogged = false; @@ -128,12 +128,12 @@ void UserApiTests::loginUserTest(){ QVERIFY2(userLogged, "didn't finish within timeout"); } -void UserApiTests::logoutUserTest(){ +void UserApiTests::logoutUserTest() { PFXUserApi api; QEventLoop loop; bool userLoggedOut = false; - connect(&api, &PFXUserApi::logoutUserSignal, [&](){ + connect(&api, &PFXUserApi::logoutUserSignal, [&]() { userLoggedOut = true; loop.quit(); }); @@ -144,14 +144,14 @@ void UserApiTests::logoutUserTest(){ QVERIFY2(userLoggedOut, "didn't finish within timeout"); } -void UserApiTests::updateUserTest(){ +void UserApiTests::updateUserTest() { PFXUserApi api; QEventLoop loop; bool userUpdated = false; connect(&api, &PFXUserApi::updateUserSignal, [&]() { - userUpdated = true; - loop.quit(); + userUpdated = true; + loop.quit(); }); auto johndoe = createRandomUser(); diff --git a/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.h b/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.h index 3cfd25bd8fe..8917d6a7c0c 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.h +++ b/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.h @@ -4,7 +4,7 @@ using namespace test_namespace; -class UserApiTests: public QObject { +class UserApiTests : public QObject { Q_OBJECT PFXUser createRandomUser(); diff --git a/samples/client/petstore/cpp-qt5/client/PFXApiResponse.cpp b/samples/client/petstore/cpp-qt5/client/PFXApiResponse.cpp index 81438054c73..48145317854 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXApiResponse.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXApiResponse.cpp @@ -3,20 +3,18 @@ * 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. */ - #include "PFXApiResponse.h" -#include -#include -#include #include +#include +#include +#include #include "PFXHelpers.h" @@ -31,120 +29,108 @@ PFXApiResponse::PFXApiResponse() { this->initializeModel(); } -PFXApiResponse::~PFXApiResponse() { +PFXApiResponse::~PFXApiResponse() {} -} +void PFXApiResponse::initializeModel() { -void -PFXApiResponse::initializeModel() { - m_code_isSet = false; m_code_isValid = false; - + m_type_isSet = false; m_type_isValid = false; - + m_message_isSet = false; m_message_isValid = false; - } -void -PFXApiResponse::fromJson(QString jsonString) { - QByteArray array (jsonString.toStdString().c_str()); +void PFXApiResponse::fromJson(QString jsonString) { + QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); } -void -PFXApiResponse::fromJsonObject(QJsonObject json) { - +void PFXApiResponse::fromJsonObject(QJsonObject json) { + m_code_isValid = ::test_namespace::fromJsonValue(code, json[QString("code")]); m_code_isSet = !json[QString("code")].isNull() && m_code_isValid; - + m_type_isValid = ::test_namespace::fromJsonValue(type, json[QString("type")]); m_type_isSet = !json[QString("type")].isNull() && m_type_isValid; - + m_message_isValid = ::test_namespace::fromJsonValue(message, json[QString("message")]); m_message_isSet = !json[QString("message")].isNull() && m_message_isValid; - } -QString -PFXApiResponse::asJson () const { +QString PFXApiResponse::asJson() const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); return QString(bytes); } -QJsonObject -PFXApiResponse::asJsonObject() const { +QJsonObject PFXApiResponse::asJsonObject() const { QJsonObject obj; - if(m_code_isSet){ + if (m_code_isSet) { obj.insert(QString("code"), ::test_namespace::toJsonValue(code)); } - if(m_type_isSet){ + if (m_type_isSet) { obj.insert(QString("type"), ::test_namespace::toJsonValue(type)); } - if(m_message_isSet){ + if (m_message_isSet) { obj.insert(QString("message"), ::test_namespace::toJsonValue(message)); } return obj; } - -qint32 -PFXApiResponse::getCode() const { +qint32 PFXApiResponse::getCode() const { return code; } -void -PFXApiResponse::setCode(const qint32 &code) { +void PFXApiResponse::setCode(const qint32 &code) { this->code = code; this->m_code_isSet = true; } - -QString -PFXApiResponse::getType() const { +QString PFXApiResponse::getType() const { return type; } -void -PFXApiResponse::setType(const QString &type) { +void PFXApiResponse::setType(const QString &type) { this->type = type; this->m_type_isSet = true; } - -QString -PFXApiResponse::getMessage() const { +QString PFXApiResponse::getMessage() const { return message; } -void -PFXApiResponse::setMessage(const QString &message) { +void PFXApiResponse::setMessage(const QString &message) { this->message = message; this->m_message_isSet = true; } -bool -PFXApiResponse::isSet() const { +bool PFXApiResponse::isSet() const { bool isObjectUpdated = false; - do{ - if(m_code_isSet){ isObjectUpdated = true; break;} - - if(m_type_isSet){ isObjectUpdated = true; break;} - - if(m_message_isSet){ isObjectUpdated = true; break;} - }while(false); + do { + if (m_code_isSet) { + isObjectUpdated = true; + break; + } + + if (m_type_isSet) { + isObjectUpdated = true; + break; + } + + if (m_message_isSet) { + isObjectUpdated = true; + break; + } + } while (false); return isObjectUpdated; } -bool -PFXApiResponse::isValid() const { +bool PFXApiResponse::isValid() const { // only required properties are required for the object to be considered valid return true; } -} - +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXApiResponse.h b/samples/client/petstore/cpp-qt5/client/PFXApiResponse.h index 77f5765b2a8..9729da2e07b 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXApiResponse.h +++ b/samples/client/petstore/cpp-qt5/client/PFXApiResponse.h @@ -3,7 +3,6 @@ * 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 @@ -21,61 +20,53 @@ #include - #include -#include "PFXObject.h" #include "PFXEnum.h" - +#include "PFXObject.h" namespace test_namespace { -class PFXApiResponse: public PFXObject { +class PFXApiResponse : public PFXObject { public: PFXApiResponse(); PFXApiResponse(QString json); ~PFXApiResponse() override; - QString asJson () const override; + QString asJson() const override; QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; void fromJson(QString jsonString) override; - qint32 getCode() const; void setCode(const qint32 &code); - QString getType() const; void setType(const QString &type); - QString getMessage() const; void setMessage(const QString &message); - - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - + qint32 code; bool m_code_isSet; bool m_code_isValid; - + QString type; bool m_type_isSet; bool m_type_isValid; - + QString message; bool m_message_isSet; bool m_message_isValid; - - }; +}; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXApiResponse) diff --git a/samples/client/petstore/cpp-qt5/client/PFXCategory.cpp b/samples/client/petstore/cpp-qt5/client/PFXCategory.cpp index 5b1404cd7dc..887d11c73e8 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXCategory.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXCategory.cpp @@ -3,20 +3,18 @@ * 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. */ - #include "PFXCategory.h" -#include -#include -#include #include +#include +#include +#include #include "PFXHelpers.h" @@ -31,98 +29,86 @@ PFXCategory::PFXCategory() { this->initializeModel(); } -PFXCategory::~PFXCategory() { +PFXCategory::~PFXCategory() {} -} +void PFXCategory::initializeModel() { -void -PFXCategory::initializeModel() { - m_id_isSet = false; m_id_isValid = false; - + m_name_isSet = false; m_name_isValid = false; - } -void -PFXCategory::fromJson(QString jsonString) { - QByteArray array (jsonString.toStdString().c_str()); +void PFXCategory::fromJson(QString jsonString) { + QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); } -void -PFXCategory::fromJsonObject(QJsonObject json) { - +void PFXCategory::fromJsonObject(QJsonObject json) { + m_id_isValid = ::test_namespace::fromJsonValue(id, json[QString("id")]); m_id_isSet = !json[QString("id")].isNull() && m_id_isValid; - + m_name_isValid = ::test_namespace::fromJsonValue(name, json[QString("name")]); m_name_isSet = !json[QString("name")].isNull() && m_name_isValid; - } -QString -PFXCategory::asJson () const { +QString PFXCategory::asJson() const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); return QString(bytes); } -QJsonObject -PFXCategory::asJsonObject() const { +QJsonObject PFXCategory::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ + if (m_id_isSet) { obj.insert(QString("id"), ::test_namespace::toJsonValue(id)); } - if(m_name_isSet){ + if (m_name_isSet) { obj.insert(QString("name"), ::test_namespace::toJsonValue(name)); } return obj; } - -qint64 -PFXCategory::getId() const { +qint64 PFXCategory::getId() const { return id; } -void -PFXCategory::setId(const qint64 &id) { +void PFXCategory::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } - -QString -PFXCategory::getName() const { +QString PFXCategory::getName() const { return name; } -void -PFXCategory::setName(const QString &name) { +void PFXCategory::setName(const QString &name) { this->name = name; this->m_name_isSet = true; } -bool -PFXCategory::isSet() const { +bool PFXCategory::isSet() const { bool isObjectUpdated = false; - do{ - if(m_id_isSet){ isObjectUpdated = true; break;} - - if(m_name_isSet){ isObjectUpdated = true; break;} - }while(false); + do { + if (m_id_isSet) { + isObjectUpdated = true; + break; + } + + if (m_name_isSet) { + isObjectUpdated = true; + break; + } + } while (false); return isObjectUpdated; } -bool -PFXCategory::isValid() const { +bool PFXCategory::isValid() const { // only required properties are required for the object to be considered valid return true; } -} - +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXCategory.h b/samples/client/petstore/cpp-qt5/client/PFXCategory.h index 6bfe71d7a74..84ce65c6269 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXCategory.h +++ b/samples/client/petstore/cpp-qt5/client/PFXCategory.h @@ -3,7 +3,6 @@ * 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 @@ -21,53 +20,46 @@ #include - #include -#include "PFXObject.h" #include "PFXEnum.h" - +#include "PFXObject.h" namespace test_namespace { -class PFXCategory: public PFXObject { +class PFXCategory : public PFXObject { public: PFXCategory(); PFXCategory(QString json); ~PFXCategory() override; - QString asJson () const override; + QString asJson() const override; QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; void fromJson(QString jsonString) override; - qint64 getId() const; void setId(const qint64 &id); - QString getName() const; void setName(const QString &name); - - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - + qint64 id; bool m_id_isSet; bool m_id_isValid; - + QString name; bool m_name_isSet; bool m_name_isValid; - - }; +}; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXCategory) diff --git a/samples/client/petstore/cpp-qt5/client/PFXEnum.h b/samples/client/petstore/cpp-qt5/client/PFXEnum.h index 9f3c9328255..c3d19c1a7e2 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXEnum.h +++ b/samples/client/petstore/cpp-qt5/client/PFXEnum.h @@ -3,7 +3,6 @@ * 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 @@ -13,25 +12,21 @@ #ifndef PFX_ENUM_H #define PFX_ENUM_H -#include #include #include +#include namespace test_namespace { class PFXEnum { - public: - PFXEnum() { - - } +public: + PFXEnum() {} PFXEnum(QString jsonString) { fromJson(jsonString); } - virtual ~PFXEnum(){ - - } + virtual ~PFXEnum() {} virtual QJsonValue asJsonValue() const { return QJsonValue(jstr); @@ -56,11 +51,12 @@ class PFXEnum { virtual bool isValid() const { return true; } -private : + +private: QString jstr; }; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXEnum) diff --git a/samples/client/petstore/cpp-qt5/client/PFXHelpers.cpp b/samples/client/petstore/cpp-qt5/client/PFXHelpers.cpp index 15ed5d0c1bf..620a5aad65e 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHelpers.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXHelpers.cpp @@ -3,253 +3,206 @@ * 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. */ -#include #include "PFXHelpers.h" - +#include namespace test_namespace { - -QString -toStringValue(const QString &value) { +QString toStringValue(const QString &value) { return value; } -QString -toStringValue(const QDateTime &value){ +QString toStringValue(const QDateTime &value) { // ISO 8601 return value.toString("yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); } -QString -toStringValue(const QByteArray &value){ +QString toStringValue(const QByteArray &value) { return QString(value); } -QString -toStringValue(const QDate &value){ +QString toStringValue(const QDate &value) { // ISO 8601 return value.toString(Qt::DateFormat::ISODate); } -QString -toStringValue(const qint32 &value) { +QString toStringValue(const qint32 &value) { return QString::number(value); } -QString -toStringValue(const qint64 &value) { +QString toStringValue(const qint64 &value) { return QString::number(value); } -QString -toStringValue(const bool &value) { +QString toStringValue(const bool &value) { return QString(value ? "true" : "false"); } -QString -toStringValue(const float &value){ +QString toStringValue(const float &value) { return QString::number(static_cast(value)); } -QString -toStringValue(const double &value){ +QString toStringValue(const double &value) { return QString::number(value); } -QString -toStringValue(const PFXObject &value){ +QString toStringValue(const PFXObject &value) { return value.asJson(); } - -QString -toStringValue(const PFXEnum &value){ +QString toStringValue(const PFXEnum &value) { return value.asJson(); } -QString -toStringValue(const PFXHttpFileElement &value){ +QString toStringValue(const PFXHttpFileElement &value) { return value.asJson(); } - -QJsonValue -toJsonValue(const QString &value){ - return QJsonValue(value); +QJsonValue toJsonValue(const QString &value) { + return QJsonValue(value); } -QJsonValue -toJsonValue(const QDateTime &value){ +QJsonValue toJsonValue(const QDateTime &value) { return QJsonValue(value.toString(Qt::ISODate)); } -QJsonValue -toJsonValue(const QByteArray &value){ +QJsonValue toJsonValue(const QByteArray &value) { return QJsonValue(QString(value.toBase64())); } -QJsonValue -toJsonValue(const QDate &value){ +QJsonValue toJsonValue(const QDate &value) { return QJsonValue(value.toString(Qt::ISODate)); } -QJsonValue -toJsonValue(const qint32 &value){ +QJsonValue toJsonValue(const qint32 &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const qint64 &value){ +QJsonValue toJsonValue(const qint64 &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const bool &value){ +QJsonValue toJsonValue(const bool &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const float &value){ +QJsonValue toJsonValue(const float &value) { return QJsonValue(static_cast(value)); } -QJsonValue -toJsonValue(const double &value){ +QJsonValue toJsonValue(const double &value) { return QJsonValue(value); } -QJsonValue -toJsonValue(const PFXObject &value){ +QJsonValue toJsonValue(const PFXObject &value) { return value.asJsonObject(); } -QJsonValue -toJsonValue(const PFXEnum &value){ +QJsonValue toJsonValue(const PFXEnum &value) { return value.asJsonValue(); } -QJsonValue -toJsonValue(const PFXHttpFileElement &value){ +QJsonValue toJsonValue(const PFXHttpFileElement &value) { return value.asJsonValue(); } - -bool -fromStringValue(const QString &inStr, QString &value){ +bool fromStringValue(const QString &inStr, QString &value) { value.clear(); value.append(inStr); return !inStr.isEmpty(); } -bool -fromStringValue(const QString &inStr, QDateTime &value){ - if(inStr.isEmpty()){ +bool fromStringValue(const QString &inStr, QDateTime &value) { + if (inStr.isEmpty()) { return false; - } - else{ + } else { auto dateTime = QDateTime::fromString(inStr, "yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); - if(dateTime.isValid()){ + if (dateTime.isValid()) { value.setDate(dateTime.date()); value.setTime(dateTime.time()); - } - else{ + } else { qDebug() << "DateTime is invalid"; } return dateTime.isValid(); } } -bool -fromStringValue(const QString &inStr, QByteArray &value){ - if(inStr.isEmpty()){ +bool fromStringValue(const QString &inStr, QByteArray &value) { + if (inStr.isEmpty()) { return false; - } - else{ + } else { value.clear(); value.append(inStr.toUtf8()); return value.count() > 0; } } -bool -fromStringValue(const QString &inStr, QDate &value){ - if(inStr.isEmpty()){ +bool fromStringValue(const QString &inStr, QDate &value) { + if (inStr.isEmpty()) { return false; - } - else{ + } else { auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate); - if(date.isValid()){ + if (date.isValid()) { value.setDate(date.year(), date.month(), date.day()); - } - else{ + } else { qDebug() << "Date is invalid"; } return date.isValid(); } } -bool -fromStringValue(const QString &inStr, qint32 &value){ +bool fromStringValue(const QString &inStr, qint32 &value) { bool ok = false; value = QVariant(inStr).toInt(&ok); return ok; } -bool -fromStringValue(const QString &inStr, qint64 &value){ +bool fromStringValue(const QString &inStr, qint64 &value) { bool ok = false; value = QVariant(inStr).toLongLong(&ok); return ok; } -bool -fromStringValue(const QString &inStr, bool &value){ +bool fromStringValue(const QString &inStr, bool &value) { value = QVariant(inStr).toBool(); return ((inStr == "true") || (inStr == "false")); } -bool -fromStringValue(const QString &inStr, float &value){ +bool fromStringValue(const QString &inStr, float &value) { bool ok = false; value = QVariant(inStr).toFloat(&ok); return ok; } -bool -fromStringValue(const QString &inStr, double &value){ +bool fromStringValue(const QString &inStr, double &value) { bool ok = false; value = QVariant(inStr).toDouble(&ok); return ok; } -bool -fromStringValue(const QString &inStr, PFXEnum &value){ +bool fromStringValue(const QString &inStr, PFXEnum &value) { value.fromJson(inStr); return true; } -bool -fromStringValue(const QString &inStr, PFXHttpFileElement &value){ +bool fromStringValue(const QString &inStr, PFXHttpFileElement &value) { return value.fromStringValue(inStr); } -bool -fromJsonValue(QString &value, const QJsonValue &jval){ +bool fromJsonValue(QString &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull()){ - if(jval.isString()){ + if (!jval.isUndefined() && !jval.isNull()) { + if (jval.isString()) { value = jval.toString(); - } else if(jval.isBool()) { - value = jval.toBool() ? "true" : "false"; - } else if(jval.isDouble()){ + } else if (jval.isBool()) { + value = jval.toBool() ? "true" : "false"; + } else if (jval.isDouble()) { value = QString::number(jval.toDouble()); } else { ok = false; @@ -260,10 +213,9 @@ fromJsonValue(QString &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(QDateTime &value, const QJsonValue &jval){ +bool fromJsonValue(QDateTime &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && jval.isString()){ + if (!jval.isUndefined() && !jval.isNull() && jval.isString()) { value = QDateTime::fromString(jval.toString(), Qt::ISODate); ok = value.isValid(); } else { @@ -272,22 +224,20 @@ fromJsonValue(QDateTime &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(QByteArray &value, const QJsonValue &jval){ +bool fromJsonValue(QByteArray &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && jval.isString()) { + if (!jval.isUndefined() && !jval.isNull() && jval.isString()) { value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString())); - ok = value.size() > 0 ; + ok = value.size() > 0; } else { ok = false; } return ok; } -bool -fromJsonValue(QDate &value, const QJsonValue &jval){ +bool fromJsonValue(QDate &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && jval.isString()){ + if (!jval.isUndefined() && !jval.isNull() && jval.isString()) { value = QDate::fromString(jval.toString(), Qt::ISODate); ok = value.isValid(); } else { @@ -296,10 +246,9 @@ fromJsonValue(QDate &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(qint32 &value, const QJsonValue &jval){ +bool fromJsonValue(qint32 &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()){ + if (!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()) { value = jval.toInt(); } else { ok = false; @@ -307,10 +256,9 @@ fromJsonValue(qint32 &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(qint64 &value, const QJsonValue &jval){ +bool fromJsonValue(qint64 &value, const QJsonValue &jval) { bool ok = true; - if(!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()){ + if (!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()) { value = jval.toVariant().toLongLong(); } else { ok = false; @@ -318,10 +266,9 @@ fromJsonValue(qint64 &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(bool &value, const QJsonValue &jval){ +bool fromJsonValue(bool &value, const QJsonValue &jval) { bool ok = true; - if(jval.isBool()){ + if (jval.isBool()) { value = jval.toBool(); } else { ok = false; @@ -329,10 +276,9 @@ fromJsonValue(bool &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(float &value, const QJsonValue &jval){ +bool fromJsonValue(float &value, const QJsonValue &jval) { bool ok = true; - if(jval.isDouble()){ + if (jval.isDouble()) { value = static_cast(jval.toDouble()); } else { ok = false; @@ -340,10 +286,9 @@ fromJsonValue(float &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(double &value, const QJsonValue &jval){ +bool fromJsonValue(double &value, const QJsonValue &jval) { bool ok = true; - if(jval.isDouble()){ + if (jval.isDouble()) { value = jval.toDouble(); } else { ok = false; @@ -351,10 +296,9 @@ fromJsonValue(double &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(PFXObject &value, const QJsonValue &jval){ +bool fromJsonValue(PFXObject &value, const QJsonValue &jval) { bool ok = true; - if(jval.isObject()){ + if (jval.isObject()) { value.fromJsonObject(jval.toObject()); ok = value.isValid(); } else { @@ -363,15 +307,13 @@ fromJsonValue(PFXObject &value, const QJsonValue &jval){ return ok; } -bool -fromJsonValue(PFXEnum &value, const QJsonValue &jval){ +bool fromJsonValue(PFXEnum &value, const QJsonValue &jval) { value.fromJsonValue(jval); return true; } -bool -fromJsonValue(PFXHttpFileElement &value, const QJsonValue &jval){ +bool fromJsonValue(PFXHttpFileElement &value, const QJsonValue &jval) { return value.fromJsonValue(jval); } -} +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h b/samples/client/petstore/cpp-qt5/client/PFXHelpers.h index 13b15dabdb2..e8c0ee7f941 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h +++ b/samples/client/petstore/cpp-qt5/client/PFXHelpers.h @@ -3,7 +3,6 @@ * 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 @@ -13,180 +12,180 @@ #ifndef PFX_HELPERS_H #define PFX_HELPERS_H -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include #include -#include "PFXObject.h" #include "PFXEnum.h" #include "PFXHttpFileElement.h" +#include "PFXObject.h" namespace test_namespace { - template QString - toStringValue(const QList &val); +template +QString toStringValue(const QList &val); - template - bool fromStringValue(const QList &inStr, QList &val); +template +bool fromStringValue(const QList &inStr, QList &val); - template - bool fromStringValue(const QMap &inStr, QMap &val); +template +bool fromStringValue(const QMap &inStr, QMap &val); - template - QJsonValue toJsonValue(const QList &val); +template +QJsonValue toJsonValue(const QList &val); - template - QJsonValue toJsonValue(const QMap &val); +template +QJsonValue toJsonValue(const QMap &val); - template - bool fromJsonValue(QList &val, const QJsonValue &jval); +template +bool fromJsonValue(QList &val, const QJsonValue &jval); - template - bool fromJsonValue(QMap &val, const QJsonValue &jval); - - QString toStringValue(const QString &value); - QString toStringValue(const QDateTime &value); - QString toStringValue(const QByteArray &value); - QString toStringValue(const QDate &value); - QString toStringValue(const qint32 &value); - QString toStringValue(const qint64 &value); - QString toStringValue(const bool &value); - QString toStringValue(const float &value); - QString toStringValue(const double &value); - QString toStringValue(const PFXObject &value); - QString toStringValue(const PFXEnum &value); - QString toStringValue(const PFXHttpFileElement &value); +template +bool fromJsonValue(QMap &val, const QJsonValue &jval); - template - QString toStringValue(const QList &val) { - QString strArray; - for(const auto& item : val) { - strArray.append(toStringValue(item) + ","); - } - if(val.count() > 0) { - strArray.chop(1); - } - return strArray; +QString toStringValue(const QString &value); +QString toStringValue(const QDateTime &value); +QString toStringValue(const QByteArray &value); +QString toStringValue(const QDate &value); +QString toStringValue(const qint32 &value); +QString toStringValue(const qint64 &value); +QString toStringValue(const bool &value); +QString toStringValue(const float &value); +QString toStringValue(const double &value); +QString toStringValue(const PFXObject &value); +QString toStringValue(const PFXEnum &value); +QString toStringValue(const PFXHttpFileElement &value); + +template +QString toStringValue(const QList &val) { + QString strArray; + for (const auto &item : val) { + strArray.append(toStringValue(item) + ","); } - - QJsonValue toJsonValue(const QString &value); - QJsonValue toJsonValue(const QDateTime &value); - QJsonValue toJsonValue(const QByteArray &value); - QJsonValue toJsonValue(const QDate &value); - QJsonValue toJsonValue(const qint32 &value); - QJsonValue toJsonValue(const qint64 &value); - QJsonValue toJsonValue(const bool &value); - QJsonValue toJsonValue(const float &value); - QJsonValue toJsonValue(const double &value); - QJsonValue toJsonValue(const PFXObject &value); - QJsonValue toJsonValue(const PFXEnum &value); - QJsonValue toJsonValue(const PFXHttpFileElement &value); - - template - QJsonValue toJsonValue(const QList &val) { - QJsonArray jArray; - for(const auto& item : val) { - jArray.append(toJsonValue(item)); - } - return jArray; + if (val.count() > 0) { + strArray.chop(1); } - - template - QJsonValue toJsonValue(const QMap &val) { - QJsonObject jObject; - for(const auto& itemkey : val.keys()) { - jObject.insert(itemkey, toJsonValue(val.value(itemkey))); - } - return jObject; - } - - bool fromStringValue(const QString &inStr, QString &value); - bool fromStringValue(const QString &inStr, QDateTime &value); - bool fromStringValue(const QString &inStr, QByteArray &value); - bool fromStringValue(const QString &inStr, QDate &value); - bool fromStringValue(const QString &inStr, qint32 &value); - bool fromStringValue(const QString &inStr, qint64 &value); - bool fromStringValue(const QString &inStr, bool &value); - bool fromStringValue(const QString &inStr, float &value); - bool fromStringValue(const QString &inStr, double &value); - bool fromStringValue(const QString &inStr, PFXObject &value); - bool fromStringValue(const QString &inStr, PFXEnum &value); - bool fromStringValue(const QString &inStr, PFXHttpFileElement &value); - - template - bool fromStringValue(const QList &inStr, QList &val) { - bool ok = (inStr.count() > 0); - for(const auto& item: inStr){ - T itemVal; - ok &= fromStringValue(item, itemVal); - val.push_back(itemVal); - } - return ok; - } - - template - bool fromStringValue(const QMap &inStr, QMap &val) { - bool ok = (inStr.count() > 0); - for(const auto& itemkey : inStr.keys()){ - T itemVal; - ok &= fromStringValue(inStr.value(itemkey), itemVal); - val.insert(itemkey, itemVal); - } - return ok; - } - - bool fromJsonValue(QString &value, const QJsonValue &jval); - bool fromJsonValue(QDateTime &value, const QJsonValue &jval); - bool fromJsonValue(QByteArray &value, const QJsonValue &jval); - bool fromJsonValue(QDate &value, const QJsonValue &jval); - bool fromJsonValue(qint32 &value, const QJsonValue &jval); - bool fromJsonValue(qint64 &value, const QJsonValue &jval); - bool fromJsonValue(bool &value, const QJsonValue &jval); - bool fromJsonValue(float &value, const QJsonValue &jval); - bool fromJsonValue(double &value, const QJsonValue &jval); - bool fromJsonValue(PFXObject &value, const QJsonValue &jval); - bool fromJsonValue(PFXEnum &value, const QJsonValue &jval); - bool fromJsonValue(PFXHttpFileElement &value, const QJsonValue &jval); - - template - bool fromJsonValue(QList &val, const QJsonValue &jval) { - bool ok = true; - if(jval.isArray()){ - for(const auto jitem : jval.toArray()){ - T item; - ok &= fromJsonValue(item, jitem); - val.push_back(item); - } - } else { - ok = false; - } - return ok; - } - - template - bool fromJsonValue(QMap &val, const QJsonValue &jval) { - bool ok = true; - if(jval.isObject()){ - auto varmap = jval.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(const auto& itemkey : varmap.keys() ){ - T itemVal; - ok &= fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); - val.insert(itemkey, itemVal); - } - } - } else { - ok = false; - } - return ok; - } - + return strArray; } +QJsonValue toJsonValue(const QString &value); +QJsonValue toJsonValue(const QDateTime &value); +QJsonValue toJsonValue(const QByteArray &value); +QJsonValue toJsonValue(const QDate &value); +QJsonValue toJsonValue(const qint32 &value); +QJsonValue toJsonValue(const qint64 &value); +QJsonValue toJsonValue(const bool &value); +QJsonValue toJsonValue(const float &value); +QJsonValue toJsonValue(const double &value); +QJsonValue toJsonValue(const PFXObject &value); +QJsonValue toJsonValue(const PFXEnum &value); +QJsonValue toJsonValue(const PFXHttpFileElement &value); + +template +QJsonValue toJsonValue(const QList &val) { + QJsonArray jArray; + for (const auto &item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; +} + +template +QJsonValue toJsonValue(const QMap &val) { + QJsonObject jObject; + for (const auto &itemkey : val.keys()) { + jObject.insert(itemkey, toJsonValue(val.value(itemkey))); + } + return jObject; +} + +bool fromStringValue(const QString &inStr, QString &value); +bool fromStringValue(const QString &inStr, QDateTime &value); +bool fromStringValue(const QString &inStr, QByteArray &value); +bool fromStringValue(const QString &inStr, QDate &value); +bool fromStringValue(const QString &inStr, qint32 &value); +bool fromStringValue(const QString &inStr, qint64 &value); +bool fromStringValue(const QString &inStr, bool &value); +bool fromStringValue(const QString &inStr, float &value); +bool fromStringValue(const QString &inStr, double &value); +bool fromStringValue(const QString &inStr, PFXObject &value); +bool fromStringValue(const QString &inStr, PFXEnum &value); +bool fromStringValue(const QString &inStr, PFXHttpFileElement &value); + +template +bool fromStringValue(const QList &inStr, QList &val) { + bool ok = (inStr.count() > 0); + for (const auto &item : inStr) { + T itemVal; + ok &= fromStringValue(item, itemVal); + val.push_back(itemVal); + } + return ok; +} + +template +bool fromStringValue(const QMap &inStr, QMap &val) { + bool ok = (inStr.count() > 0); + for (const auto &itemkey : inStr.keys()) { + T itemVal; + ok &= fromStringValue(inStr.value(itemkey), itemVal); + val.insert(itemkey, itemVal); + } + return ok; +} + +bool fromJsonValue(QString &value, const QJsonValue &jval); +bool fromJsonValue(QDateTime &value, const QJsonValue &jval); +bool fromJsonValue(QByteArray &value, const QJsonValue &jval); +bool fromJsonValue(QDate &value, const QJsonValue &jval); +bool fromJsonValue(qint32 &value, const QJsonValue &jval); +bool fromJsonValue(qint64 &value, const QJsonValue &jval); +bool fromJsonValue(bool &value, const QJsonValue &jval); +bool fromJsonValue(float &value, const QJsonValue &jval); +bool fromJsonValue(double &value, const QJsonValue &jval); +bool fromJsonValue(PFXObject &value, const QJsonValue &jval); +bool fromJsonValue(PFXEnum &value, const QJsonValue &jval); +bool fromJsonValue(PFXHttpFileElement &value, const QJsonValue &jval); + +template +bool fromJsonValue(QList &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isArray()) { + for (const auto jitem : jval.toArray()) { + T item; + ok &= fromJsonValue(item, jitem); + val.push_back(item); + } + } else { + ok = false; + } + return ok; +} + +template +bool fromJsonValue(QMap &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isObject()) { + auto varmap = jval.toObject().toVariantMap(); + if (varmap.count() > 0) { + for (const auto &itemkey : varmap.keys()) { + T itemVal; + ok &= fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); + val.insert(itemkey, itemVal); + } + } + } else { + ok = false; + } + return ok; +} + +} // namespace test_namespace + #endif // PFX_HELPERS_H diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp b/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp index c2616877958..ef9e00ebea0 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp @@ -3,14 +3,12 @@ * 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. */ - #include #include #include @@ -20,129 +18,117 @@ namespace test_namespace { -void -PFXHttpFileElement::setMimeType(const QString &mime){ +void PFXHttpFileElement::setMimeType(const QString &mime) { mime_type = mime; } -void -PFXHttpFileElement::setFileName(const QString &name){ +void PFXHttpFileElement::setFileName(const QString &name) { local_filename = name; } -void -PFXHttpFileElement::setVariableName(const QString &name){ +void PFXHttpFileElement::setVariableName(const QString &name) { variable_name = name; } -void -PFXHttpFileElement::setRequestFileName(const QString &name){ +void PFXHttpFileElement::setRequestFileName(const QString &name) { request_filename = name; } -bool -PFXHttpFileElement::isSet() const { +bool PFXHttpFileElement::isSet() const { return !local_filename.isEmpty() || !request_filename.isEmpty(); } -QString -PFXHttpFileElement::asJson() const{ +QString PFXHttpFileElement::asJson() const { QFile file(local_filename); QByteArray bArray; bool result = false; - if(file.exists()) { + if (file.exists()) { result = file.open(QIODevice::ReadOnly); bArray = file.readAll(); file.close(); } - if(!result) { + if (!result) { qDebug() << "Error opening file " << local_filename; } return QString(bArray); } -QJsonValue -PFXHttpFileElement::asJsonValue() const{ +QJsonValue PFXHttpFileElement::asJsonValue() const { QFile file(local_filename); QByteArray bArray; - bool result = false; - if(file.exists()) { + bool result = false; + if (file.exists()) { result = file.open(QIODevice::ReadOnly); bArray = file.readAll(); file.close(); } - if(!result) { + if (!result) { qDebug() << "Error opening file " << local_filename; } return QJsonDocument::fromBinaryData(bArray.data()).object(); } -bool -PFXHttpFileElement::fromStringValue(const QString &instr){ +bool PFXHttpFileElement::fromStringValue(const QString &instr) { QFile file(local_filename); bool result = false; - if(file.exists()) { + if (file.exists()) { file.remove(); } result = file.open(QIODevice::WriteOnly); file.write(instr.toUtf8()); file.close(); - if(!result) { + if (!result) { qDebug() << "Error creating file " << local_filename; } return result; } -bool -PFXHttpFileElement::fromJsonValue(const QJsonValue &jval) { +bool PFXHttpFileElement::fromJsonValue(const QJsonValue &jval) { QFile file(local_filename); bool result = false; - if(file.exists()) { + if (file.exists()) { file.remove(); } result = file.open(QIODevice::WriteOnly); file.write(QJsonDocument(jval.toObject()).toBinaryData()); file.close(); - if(!result) { + if (!result) { qDebug() << "Error creating file " << local_filename; } return result; } -QByteArray -PFXHttpFileElement::asByteArray() const { +QByteArray PFXHttpFileElement::asByteArray() const { QFile file(local_filename); QByteArray bArray; bool result = false; - if(file.exists()) { + if (file.exists()) { result = file.open(QIODevice::ReadOnly); bArray = file.readAll(); file.close(); } - if(!result) { + if (!result) { qDebug() << "Error opening file " << local_filename; - } + } return bArray; } -bool -PFXHttpFileElement::fromByteArray(const QByteArray& bytes){ +bool PFXHttpFileElement::fromByteArray(const QByteArray &bytes) { QFile file(local_filename); bool result = false; - if(file.exists()){ + if (file.exists()) { file.remove(); } result = file.open(QIODevice::WriteOnly); file.write(bytes); file.close(); - if(!result) { + if (!result) { qDebug() << "Error creating file " << local_filename; } return result; } -bool -PFXHttpFileElement::saveToFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime, const QByteArray& bytes){ +bool PFXHttpFileElement::saveToFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime, const QByteArray &bytes) { setMimeType(mime); setFileName(localFName); setVariableName(varName); @@ -150,8 +136,7 @@ PFXHttpFileElement::saveToFile(const QString &varName, const QString &localFName return fromByteArray(bytes); } -QByteArray -PFXHttpFileElement::loadFromFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime){ +QByteArray PFXHttpFileElement::loadFromFile(const QString &varName, const QString &localFName, const QString &reqFname, const QString &mime) { setMimeType(mime); setFileName(localFName); setVariableName(varName); @@ -159,4 +144,4 @@ PFXHttpFileElement::loadFromFile(const QString &varName, const QString &localFNa return asByteArray(); } -} +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.h b/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.h index af819aff761..799a8c2c02a 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.h +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.h @@ -3,7 +3,6 @@ * 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 @@ -17,7 +16,6 @@ #include #include - namespace test_namespace { class PFXHttpFileElement { @@ -34,15 +32,15 @@ public: bool isSet() const; bool fromStringValue(const QString &instr); bool fromJsonValue(const QJsonValue &jval); - bool fromByteArray(const QByteArray& bytes); - bool saveToFile(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime, const QByteArray& bytes); + bool fromByteArray(const QByteArray &bytes); + bool saveToFile(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime, const QByteArray &bytes); QString asJson() const; QJsonValue asJsonValue() const; QByteArray asByteArray() const; QByteArray loadFromFile(const QString &variable_name, const QString &local_filename, const QString &request_filename, const QString &mime); }; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXHttpFileElement) diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp index 951b9b911f0..30f1c04800c 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp @@ -3,27 +3,23 @@ * 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. */ - - +#include #include #include -#include -#include #include -#include -#include #include +#include +#include +#include #include "PFXHttpRequest.h" - namespace test_namespace { PFXHttpRequestInput::PFXHttpRequestInput() { @@ -55,61 +51,58 @@ void PFXHttpRequestInput::add_file(QString variable_name, QString local_filename files.append(file); } - PFXHttpRequestWorker::PFXHttpRequestWorker(QObject *parent) - : QObject(parent), manager(nullptr), _timeOut(0) -{ + : QObject(parent), manager(nullptr), _timeOut(0) { qsrand(QDateTime::currentDateTime().toTime_t()); manager = new QNetworkAccessManager(this); - workingDirectory = QDir::currentPath(); + workingDirectory = QDir::currentPath(); connect(manager, &QNetworkAccessManager::finished, this, &PFXHttpRequestWorker::on_manager_finished); } PFXHttpRequestWorker::~PFXHttpRequestWorker() { - for (const auto & item: multiPartFields) { - if(item != nullptr) { + for (const auto &item : multiPartFields) { + if (item != nullptr) { delete item; } - } + } } QMap PFXHttpRequestWorker::getResponseHeaders() const { return headers; } -PFXHttpFileElement PFXHttpRequestWorker::getHttpFileElement(const QString &fieldname){ - if(!files.isEmpty()){ - if(fieldname.isEmpty()){ +PFXHttpFileElement PFXHttpRequestWorker::getHttpFileElement(const QString &fieldname) { + if (!files.isEmpty()) { + if (fieldname.isEmpty()) { return files.first(); - }else if (files.contains(fieldname)){ + } else if (files.contains(fieldname)) { return files[fieldname]; } } return PFXHttpFileElement(); } -QByteArray *PFXHttpRequestWorker::getMultiPartField(const QString &fieldname){ - if(!multiPartFields.isEmpty()){ - if(fieldname.isEmpty()){ +QByteArray *PFXHttpRequestWorker::getMultiPartField(const QString &fieldname) { + if (!multiPartFields.isEmpty()) { + if (fieldname.isEmpty()) { return multiPartFields.first(); - }else if (multiPartFields.contains(fieldname)){ + } else if (multiPartFields.contains(fieldname)) { return multiPartFields[fieldname]; } } return nullptr; } -void PFXHttpRequestWorker::setTimeOut(int timeOut){ +void PFXHttpRequestWorker::setTimeOut(int timeOut) { _timeOut = timeOut; } -void PFXHttpRequestWorker::setWorkingDirectory(const QString &path){ - if(!path.isEmpty()){ +void PFXHttpRequestWorker::setWorkingDirectory(const QString &path) { + if (!path.isEmpty()) { workingDirectory = path; } } - QString PFXHttpRequestWorker::http_attribute_encode(QString attribute_name, QString input) { // result structure follows RFC 5987 bool need_utf_encoding = false; @@ -121,11 +114,9 @@ QString PFXHttpRequestWorker::http_attribute_encode(QString attribute_name, QStr if (c == '\\' || c == '/' || c == '\0' || c < ' ' || c > '~') { // ignore and request utf-8 version need_utf_encoding = true; - } - else if (c == '"') { + } else if (c == '"') { result += "\\\""; - } - else { + } else { result += c; } } @@ -142,14 +133,9 @@ QString PFXHttpRequestWorker::http_attribute_encode(QString attribute_name, QStr QString result_utf8 = ""; for (int i = 0; i < input_c.length(); i++) { c = input_c.at(i); - if ( - (c >= '0' && c <= '9') - || (c >= 'A' && c <= 'Z') - || (c >= 'a' && c <= 'z') - ) { + if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) { result_utf8 += c; - } - else { + } else { result_utf8 += "%" + QString::number(static_cast(input_c.at(i)), 16).toUpper(); } } @@ -161,14 +147,13 @@ QString PFXHttpRequestWorker::http_attribute_encode(QString attribute_name, QStr void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { // reset variables - QNetworkReply* reply = nullptr; + QNetworkReply *reply = nullptr; QByteArray request_content = ""; response = ""; error_type = QNetworkReply::NoError; error_str = ""; bool isFormData = false; - // decide on the variable layout if (input->files.length() > 0) { @@ -178,7 +163,6 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { input->var_layout = input->http_method == "GET" || input->http_method == "HEAD" ? ADDRESS : URL_ENCODED; } - // prepare request content QString boundary = ""; @@ -205,13 +189,12 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { request_content = ""; } } - } - else { + } else { // variable layout is MULTIPART - boundary = "__-----------------------" - + QString::number(QDateTime::currentDateTime().toTime_t()) - + QString::number(qrand()); + boundary = QString("__-----------------------%1%2") + .arg(QDateTime::currentDateTime().toTime_t()) + .arg(qrand()); QString boundary_delimiter = "--"; QString new_line = "\r\n"; @@ -242,11 +225,13 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { QFileInfo fi(file_info->local_filename); // ensure necessary variables are available - if ( - file_info->local_filename == nullptr || file_info->local_filename.isEmpty() - || file_info->variable_name == nullptr || file_info->variable_name.isEmpty() - || !fi.exists() || !fi.isFile() || !fi.isReadable() - ) { + if (file_info->local_filename == nullptr + || file_info->local_filename.isEmpty() + || file_info->variable_name == nullptr + || file_info->variable_name.isEmpty() + || !fi.exists() + || !fi.isFile() + || !fi.isReadable()) { // silent abort for the current file continue; } @@ -271,10 +256,8 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { request_content.append(new_line); // add header - request_content.append(QString("Content-Disposition: form-data; %1; %2").arg( - http_attribute_encode("name", file_info->variable_name), - http_attribute_encode("filename", file_info->request_filename) - )); + request_content.append( + QString("Content-Disposition: form-data; %1; %2").arg(http_attribute_encode("name", file_info->variable_name), http_attribute_encode("filename", file_info->request_filename))); request_content.append(new_line); if (file_info->mime_type != nullptr && !file_info->mime_type.isEmpty()) { @@ -302,7 +285,7 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { request_content.append(boundary_delimiter); } - if(input->request_body.size() > 0) { + if (input->request_body.size() > 0) { qDebug() << "got a request body"; request_content.clear(); request_content.append(input->request_body); @@ -314,41 +297,31 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { request.setSslConfiguration(*PFXHttpRequestWorker::sslDefaultConfiguration); } request.setRawHeader("User-Agent", "OpenAPI-Generator/1.0.0/cpp-qt5"); - foreach(QString key, input->headers.keys()) { - request.setRawHeader(key.toStdString().c_str(), input->headers.value(key).toStdString().c_str()); - } + 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)) { - if(!input->headers.contains("Content-Type")){ + if (!input->headers.contains("Content-Type")) { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - } - else { + } else { request.setHeader(QNetworkRequest::ContentTypeHeader, input->headers.value("Content-Type")); } - } - else if (input->var_layout == URL_ENCODED) { + } else if (input->var_layout == URL_ENCODED) { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - } - else if (input->var_layout == MULTIPART) { + } else if (input->var_layout == MULTIPART) { request.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary); } if (input->http_method == "GET") { reply = manager->get(request); - } - else if (input->http_method == "POST") { + } else if (input->http_method == "POST") { reply = manager->post(request, request_content); - } - else if (input->http_method == "PUT") { + } else if (input->http_method == "PUT") { reply = manager->put(request, request_content); - } - else if (input->http_method == "HEAD") { + } else if (input->http_method == "HEAD") { reply = manager->head(request); - } - else if (input->http_method == "DELETE") { + } else if (input->http_method == "DELETE") { reply = manager->deleteResource(request); - } - else { + } else { #if (QT_VERSION >= 0x050800) manager->sendCustomRequest(request, input->http_method.toLatin1(), request_content); #else @@ -360,8 +333,8 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { buffer->setParent(reply); #endif } - if(_timeOut > 0){ - QTimer::singleShot(_timeOut, [=](){ on_manager_timeout(reply); }); + if (_timeOut > 0) { + QTimer::singleShot(_timeOut, [=]() { on_manager_timeout(reply); }); } } @@ -369,8 +342,8 @@ void PFXHttpRequestWorker::on_manager_finished(QNetworkReply *reply) { error_type = reply->error(); response = reply->readAll(); error_str = reply->errorString(); - if(reply->rawHeaderPairs().count() > 0){ - for(const auto& item: reply->rawHeaderPairs()){ + if (reply->rawHeaderPairs().count() > 0) { + for (const auto &item : reply->rawHeaderPairs()) { headers.insert(item.first, item.second); } } @@ -390,34 +363,31 @@ void PFXHttpRequestWorker::on_manager_timeout(QNetworkReply *reply) { } void PFXHttpRequestWorker::process_form_response() { - if(getResponseHeaders().contains(QString("Content-Disposition")) ) { + if (getResponseHeaders().contains(QString("Content-Disposition"))) { auto contentDisposition = getResponseHeaders().value(QString("Content-Disposition").toUtf8()).split(QString(";"), QString::SkipEmptyParts); - auto contentType = getResponseHeaders().contains(QString("Content-Type")) ? getResponseHeaders().value(QString("Content-Type").toUtf8()).split(QString(";"), QString::SkipEmptyParts).first() : QString(); - if((contentDisposition.count() > 0) && (contentDisposition.first() == QString("attachment"))){ + auto contentType = + getResponseHeaders().contains(QString("Content-Type")) ? getResponseHeaders().value(QString("Content-Type").toUtf8()).split(QString(";"), QString::SkipEmptyParts).first() : QString(); + if ((contentDisposition.count() > 0) && (contentDisposition.first() == QString("attachment"))) { QString filename = QUuid::createUuid().toString(); - for(const auto &file : contentDisposition){ - if(file.contains(QString("filename"))){ + for (const auto &file : contentDisposition) { + if (file.contains(QString("filename"))) { filename = file.split(QString("="), QString::SkipEmptyParts).at(1); break; } } PFXHttpFileElement felement; felement.saveToFile(QString(), workingDirectory + QDir::separator() + filename, filename, contentType, response.data()); - files.insert(filename, felement); + files.insert(filename, felement); } - } else if(getResponseHeaders().contains(QString("Content-Type")) ) { + } else if (getResponseHeaders().contains(QString("Content-Type"))) { auto contentType = getResponseHeaders().value(QString("Content-Type").toUtf8()).split(QString(";"), QString::SkipEmptyParts); - if((contentType.count() > 0) && (contentType.first() == QString("multipart/form-data"))){ - - } - else { - + if ((contentType.count() > 0) && (contentType.first() == QString("multipart/form-data"))) { + } else { } } } -QSslConfiguration* PFXHttpRequestWorker::sslDefaultConfiguration; +QSslConfiguration *PFXHttpRequestWorker::sslDefaultConfiguration; - -} +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h index 3ca8e2f8c72..6b354142d28 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h @@ -3,7 +3,6 @@ * 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 @@ -19,18 +18,22 @@ #ifndef PFX_HTTPREQUESTWORKER_H #define PFX_HTTPREQUESTWORKER_H -#include -#include #include #include #include +#include +#include #include "PFXHttpFileElement.h" namespace test_namespace { -enum PFXHttpRequestVarLayout {NOT_SET, ADDRESS, URL_ENCODED, MULTIPART}; - +enum PFXHttpRequestVarLayout { + NOT_SET, + ADDRESS, + URL_ENCODED, + MULTIPART +}; class PFXHttpRequestInput { @@ -48,10 +51,8 @@ public: void initialize(); void add_var(QString key, QString value); void add_file(QString variable_name, QString local_filename, QString request_filename, QString mime_type); - }; - class PFXHttpRequestWorker : public QObject { Q_OBJECT @@ -65,11 +66,11 @@ public: QMap getResponseHeaders() const; QString http_attribute_encode(QString attribute_name, QString input); void execute(PFXHttpRequestInput *input); - static QSslConfiguration* sslDefaultConfiguration; + static QSslConfiguration *sslDefaultConfiguration; void setTimeOut(int tout); void setWorkingDirectory(const QString &path); PFXHttpFileElement getHttpFileElement(const QString &fieldname = QString()); - QByteArray* getMultiPartField(const QString &fieldname = QString()); + QByteArray *getMultiPartField(const QString &fieldname = QString()); signals: void on_execution_finished(PFXHttpRequestWorker *worker); @@ -77,15 +78,15 @@ private: QNetworkAccessManager *manager; QMap headers; QMap files; - QMap multiPartFields; + QMap multiPartFields; QString workingDirectory; int _timeOut; void on_manager_timeout(QNetworkReply *reply); - void process_form_response(); + void process_form_response(); private slots: void on_manager_finished(QNetworkReply *reply); }; -} +} // namespace test_namespace #endif // PFX_HTTPREQUESTWORKER_H diff --git a/samples/client/petstore/cpp-qt5/client/PFXObject.h b/samples/client/petstore/cpp-qt5/client/PFXObject.h index fb6004bbbc3..c4be9917a32 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXObject.h +++ b/samples/client/petstore/cpp-qt5/client/PFXObject.h @@ -3,7 +3,6 @@ * 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 @@ -13,25 +12,21 @@ #ifndef PFX_OBJECT_H #define PFX_OBJECT_H -#include #include +#include #include namespace test_namespace { class PFXObject { - public: - PFXObject() { - - } +public: + PFXObject() {} PFXObject(QString jsonString) { fromJson(jsonString); } - virtual ~PFXObject(){ - - } + virtual ~PFXObject() {} virtual QJsonObject asJsonObject() const { return jObj; @@ -58,11 +53,12 @@ class PFXObject { virtual bool isValid() const { return true; } -private : + +private: QJsonObject jObj; }; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXObject) diff --git a/samples/client/petstore/cpp-qt5/client/PFXOrder.cpp b/samples/client/petstore/cpp-qt5/client/PFXOrder.cpp index 5887591617c..b62979c8fef 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXOrder.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXOrder.cpp @@ -3,20 +3,18 @@ * 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. */ - #include "PFXOrder.h" -#include -#include -#include #include +#include +#include +#include #include "PFXHelpers.h" @@ -31,186 +29,174 @@ PFXOrder::PFXOrder() { this->initializeModel(); } -PFXOrder::~PFXOrder() { +PFXOrder::~PFXOrder() {} -} +void PFXOrder::initializeModel() { -void -PFXOrder::initializeModel() { - m_id_isSet = false; m_id_isValid = false; - + m_pet_id_isSet = false; m_pet_id_isValid = false; - + m_quantity_isSet = false; m_quantity_isValid = false; - + m_ship_date_isSet = false; m_ship_date_isValid = false; - + m_status_isSet = false; m_status_isValid = false; - + m_complete_isSet = false; m_complete_isValid = false; - } -void -PFXOrder::fromJson(QString jsonString) { - QByteArray array (jsonString.toStdString().c_str()); +void PFXOrder::fromJson(QString jsonString) { + QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); } -void -PFXOrder::fromJsonObject(QJsonObject json) { - +void PFXOrder::fromJsonObject(QJsonObject json) { + m_id_isValid = ::test_namespace::fromJsonValue(id, json[QString("id")]); m_id_isSet = !json[QString("id")].isNull() && m_id_isValid; - + m_pet_id_isValid = ::test_namespace::fromJsonValue(pet_id, json[QString("petId")]); m_pet_id_isSet = !json[QString("petId")].isNull() && m_pet_id_isValid; - + m_quantity_isValid = ::test_namespace::fromJsonValue(quantity, json[QString("quantity")]); m_quantity_isSet = !json[QString("quantity")].isNull() && m_quantity_isValid; - + m_ship_date_isValid = ::test_namespace::fromJsonValue(ship_date, json[QString("shipDate")]); m_ship_date_isSet = !json[QString("shipDate")].isNull() && m_ship_date_isValid; - + m_status_isValid = ::test_namespace::fromJsonValue(status, json[QString("status")]); m_status_isSet = !json[QString("status")].isNull() && m_status_isValid; - + m_complete_isValid = ::test_namespace::fromJsonValue(complete, json[QString("complete")]); m_complete_isSet = !json[QString("complete")].isNull() && m_complete_isValid; - } -QString -PFXOrder::asJson () const { +QString PFXOrder::asJson() const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); return QString(bytes); } -QJsonObject -PFXOrder::asJsonObject() const { +QJsonObject PFXOrder::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ + if (m_id_isSet) { obj.insert(QString("id"), ::test_namespace::toJsonValue(id)); } - if(m_pet_id_isSet){ + if (m_pet_id_isSet) { obj.insert(QString("petId"), ::test_namespace::toJsonValue(pet_id)); } - if(m_quantity_isSet){ + if (m_quantity_isSet) { obj.insert(QString("quantity"), ::test_namespace::toJsonValue(quantity)); } - if(m_ship_date_isSet){ + if (m_ship_date_isSet) { obj.insert(QString("shipDate"), ::test_namespace::toJsonValue(ship_date)); } - if(m_status_isSet){ + if (m_status_isSet) { obj.insert(QString("status"), ::test_namespace::toJsonValue(status)); } - if(m_complete_isSet){ + if (m_complete_isSet) { obj.insert(QString("complete"), ::test_namespace::toJsonValue(complete)); } return obj; } - -qint64 -PFXOrder::getId() const { +qint64 PFXOrder::getId() const { return id; } -void -PFXOrder::setId(const qint64 &id) { +void PFXOrder::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } - -qint64 -PFXOrder::getPetId() const { +qint64 PFXOrder::getPetId() const { return pet_id; } -void -PFXOrder::setPetId(const qint64 &pet_id) { +void PFXOrder::setPetId(const qint64 &pet_id) { this->pet_id = pet_id; this->m_pet_id_isSet = true; } - -qint32 -PFXOrder::getQuantity() const { +qint32 PFXOrder::getQuantity() const { return quantity; } -void -PFXOrder::setQuantity(const qint32 &quantity) { +void PFXOrder::setQuantity(const qint32 &quantity) { this->quantity = quantity; this->m_quantity_isSet = true; } - -QDateTime -PFXOrder::getShipDate() const { +QDateTime PFXOrder::getShipDate() const { return ship_date; } -void -PFXOrder::setShipDate(const QDateTime &ship_date) { +void PFXOrder::setShipDate(const QDateTime &ship_date) { this->ship_date = ship_date; this->m_ship_date_isSet = true; } - -QString -PFXOrder::getStatus() const { +QString PFXOrder::getStatus() const { return status; } -void -PFXOrder::setStatus(const QString &status) { +void PFXOrder::setStatus(const QString &status) { this->status = status; this->m_status_isSet = true; } - -bool -PFXOrder::isComplete() const { +bool PFXOrder::isComplete() const { return complete; } -void -PFXOrder::setComplete(const bool &complete) { +void PFXOrder::setComplete(const bool &complete) { this->complete = complete; this->m_complete_isSet = true; } -bool -PFXOrder::isSet() const { +bool PFXOrder::isSet() const { bool isObjectUpdated = false; - do{ - if(m_id_isSet){ isObjectUpdated = true; break;} - - if(m_pet_id_isSet){ isObjectUpdated = true; break;} - - if(m_quantity_isSet){ isObjectUpdated = true; break;} - - if(m_ship_date_isSet){ isObjectUpdated = true; break;} - - if(m_status_isSet){ isObjectUpdated = true; break;} - - if(m_complete_isSet){ isObjectUpdated = true; break;} - }while(false); + do { + if (m_id_isSet) { + isObjectUpdated = true; + break; + } + + if (m_pet_id_isSet) { + isObjectUpdated = true; + break; + } + + if (m_quantity_isSet) { + isObjectUpdated = true; + break; + } + + if (m_ship_date_isSet) { + isObjectUpdated = true; + break; + } + + if (m_status_isSet) { + isObjectUpdated = true; + break; + } + + if (m_complete_isSet) { + isObjectUpdated = true; + break; + } + } while (false); return isObjectUpdated; } -bool -PFXOrder::isValid() const { +bool PFXOrder::isValid() const { // only required properties are required for the object to be considered valid return true; } -} - +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXOrder.h b/samples/client/petstore/cpp-qt5/client/PFXOrder.h index 34fc7eb1f55..1c100268235 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXOrder.h +++ b/samples/client/petstore/cpp-qt5/client/PFXOrder.h @@ -3,7 +3,6 @@ * 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 @@ -21,86 +20,75 @@ #include - #include #include -#include "PFXObject.h" #include "PFXEnum.h" - +#include "PFXObject.h" namespace test_namespace { -class PFXOrder: public PFXObject { +class PFXOrder : public PFXObject { public: PFXOrder(); PFXOrder(QString json); ~PFXOrder() override; - QString asJson () const override; + QString asJson() const override; QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; void fromJson(QString jsonString) override; - qint64 getId() const; void setId(const qint64 &id); - qint64 getPetId() const; void setPetId(const qint64 &pet_id); - qint32 getQuantity() const; void setQuantity(const qint32 &quantity); - QDateTime getShipDate() const; void setShipDate(const QDateTime &ship_date); - QString getStatus() const; void setStatus(const QString &status); - bool isComplete() const; void setComplete(const bool &complete); - - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - + qint64 id; bool m_id_isSet; bool m_id_isValid; - + qint64 pet_id; bool m_pet_id_isSet; bool m_pet_id_isValid; - + qint32 quantity; bool m_quantity_isSet; bool m_quantity_isValid; - + QDateTime ship_date; bool m_ship_date_isSet; bool m_ship_date_isValid; - + QString status; bool m_status_isSet; bool m_status_isValid; - + bool complete; bool m_complete_isSet; bool m_complete_isValid; - - }; +}; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXOrder) diff --git a/samples/client/petstore/cpp-qt5/client/PFXPet.cpp b/samples/client/petstore/cpp-qt5/client/PFXPet.cpp index 955fc9166ac..1f124957497 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPet.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXPet.cpp @@ -3,20 +3,18 @@ * 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. */ - #include "PFXPet.h" -#include -#include -#include #include +#include +#include +#include #include "PFXHelpers.h" @@ -31,188 +29,174 @@ PFXPet::PFXPet() { this->initializeModel(); } -PFXPet::~PFXPet() { +PFXPet::~PFXPet() {} -} +void PFXPet::initializeModel() { -void -PFXPet::initializeModel() { - m_id_isSet = false; m_id_isValid = false; - + m_category_isSet = false; m_category_isValid = false; - + m_name_isSet = false; m_name_isValid = false; - + m_photo_urls_isSet = false; m_photo_urls_isValid = false; - + m_tags_isSet = false; m_tags_isValid = false; - + m_status_isSet = false; m_status_isValid = false; - } -void -PFXPet::fromJson(QString jsonString) { - QByteArray array (jsonString.toStdString().c_str()); +void PFXPet::fromJson(QString jsonString) { + QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); } -void -PFXPet::fromJsonObject(QJsonObject json) { - +void PFXPet::fromJsonObject(QJsonObject json) { + m_id_isValid = ::test_namespace::fromJsonValue(id, json[QString("id")]); m_id_isSet = !json[QString("id")].isNull() && m_id_isValid; - + m_category_isValid = ::test_namespace::fromJsonValue(category, json[QString("category")]); m_category_isSet = !json[QString("category")].isNull() && m_category_isValid; - + m_name_isValid = ::test_namespace::fromJsonValue(name, json[QString("name")]); m_name_isSet = !json[QString("name")].isNull() && m_name_isValid; - + m_photo_urls_isValid = ::test_namespace::fromJsonValue(photo_urls, json[QString("photoUrls")]); m_photo_urls_isSet = !json[QString("photoUrls")].isNull() && m_photo_urls_isValid; - + m_tags_isValid = ::test_namespace::fromJsonValue(tags, json[QString("tags")]); m_tags_isSet = !json[QString("tags")].isNull() && m_tags_isValid; - + m_status_isValid = ::test_namespace::fromJsonValue(status, json[QString("status")]); m_status_isSet = !json[QString("status")].isNull() && m_status_isValid; - } -QString -PFXPet::asJson () const { +QString PFXPet::asJson() const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); return QString(bytes); } -QJsonObject -PFXPet::asJsonObject() const { +QJsonObject PFXPet::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ + if (m_id_isSet) { obj.insert(QString("id"), ::test_namespace::toJsonValue(id)); } - if(category.isSet()){ + if (category.isSet()) { obj.insert(QString("category"), ::test_namespace::toJsonValue(category)); } - if(m_name_isSet){ + if (m_name_isSet) { obj.insert(QString("name"), ::test_namespace::toJsonValue(name)); } - - if(photo_urls.size() > 0){ + if (photo_urls.size() > 0) { obj.insert(QString("photoUrls"), ::test_namespace::toJsonValue(photo_urls)); - } - - if(tags.size() > 0){ + } + if (tags.size() > 0) { obj.insert(QString("tags"), ::test_namespace::toJsonValue(tags)); - } - if(m_status_isSet){ + } + if (m_status_isSet) { obj.insert(QString("status"), ::test_namespace::toJsonValue(status)); } return obj; } - -qint64 -PFXPet::getId() const { +qint64 PFXPet::getId() const { return id; } -void -PFXPet::setId(const qint64 &id) { +void PFXPet::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } - -PFXCategory -PFXPet::getCategory() const { +PFXCategory PFXPet::getCategory() const { return category; } -void -PFXPet::setCategory(const PFXCategory &category) { +void PFXPet::setCategory(const PFXCategory &category) { this->category = category; this->m_category_isSet = true; } - -QString -PFXPet::getName() const { +QString PFXPet::getName() const { return name; } -void -PFXPet::setName(const QString &name) { +void PFXPet::setName(const QString &name) { this->name = name; this->m_name_isSet = true; } - -QList -PFXPet::getPhotoUrls() const { +QList PFXPet::getPhotoUrls() const { return photo_urls; } -void -PFXPet::setPhotoUrls(const QList &photo_urls) { +void PFXPet::setPhotoUrls(const QList &photo_urls) { this->photo_urls = photo_urls; this->m_photo_urls_isSet = true; } - -QList -PFXPet::getTags() const { +QList PFXPet::getTags() const { return tags; } -void -PFXPet::setTags(const QList &tags) { +void PFXPet::setTags(const QList &tags) { this->tags = tags; this->m_tags_isSet = true; } - -QString -PFXPet::getStatus() const { +QString PFXPet::getStatus() const { return status; } -void -PFXPet::setStatus(const QString &status) { +void PFXPet::setStatus(const QString &status) { this->status = status; this->m_status_isSet = true; } -bool -PFXPet::isSet() const { +bool PFXPet::isSet() const { bool isObjectUpdated = false; - do{ - if(m_id_isSet){ isObjectUpdated = true; break;} - - if(category.isSet()){ isObjectUpdated = true; break;} - - if(m_name_isSet){ isObjectUpdated = true; break;} - - if(photo_urls.size() > 0){ isObjectUpdated = true; break;} - - if(tags.size() > 0){ isObjectUpdated = true; break;} - - if(m_status_isSet){ isObjectUpdated = true; break;} - }while(false); + do { + if (m_id_isSet) { + isObjectUpdated = true; + break; + } + + if (category.isSet()) { + isObjectUpdated = true; + break; + } + + if (m_name_isSet) { + isObjectUpdated = true; + break; + } + + if (photo_urls.size() > 0) { + isObjectUpdated = true; + break; + } + + if (tags.size() > 0) { + isObjectUpdated = true; + break; + } + + if (m_status_isSet) { + isObjectUpdated = true; + break; + } + } while (false); return isObjectUpdated; } -bool -PFXPet::isValid() const { +bool PFXPet::isValid() const { // only required properties are required for the object to be considered valid return m_name_isValid && m_photo_urls_isValid && true; } -} - +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXPet.h b/samples/client/petstore/cpp-qt5/client/PFXPet.h index ad5d035e995..4d20e3d8a5d 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPet.h +++ b/samples/client/petstore/cpp-qt5/client/PFXPet.h @@ -3,7 +3,6 @@ * 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 @@ -21,88 +20,77 @@ #include - #include "PFXCategory.h" #include "PFXTag.h" #include #include -#include "PFXObject.h" #include "PFXEnum.h" - +#include "PFXObject.h" namespace test_namespace { -class PFXPet: public PFXObject { +class PFXPet : public PFXObject { public: PFXPet(); PFXPet(QString json); ~PFXPet() override; - QString asJson () const override; + QString asJson() const override; QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; void fromJson(QString jsonString) override; - qint64 getId() const; void setId(const qint64 &id); - PFXCategory getCategory() const; void setCategory(const PFXCategory &category); - QString getName() const; void setName(const QString &name); - QList getPhotoUrls() const; void setPhotoUrls(const QList &photo_urls); - QList getTags() const; void setTags(const QList &tags); - QString getStatus() const; void setStatus(const QString &status); - - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - + qint64 id; bool m_id_isSet; bool m_id_isValid; - + PFXCategory category; bool m_category_isSet; bool m_category_isValid; - + QString name; bool m_name_isSet; bool m_name_isValid; - + QList photo_urls; bool m_photo_urls_isSet; bool m_photo_urls_isValid; - + QList tags; bool m_tags_isSet; bool m_tags_isValid; - + QString status; bool m_status_isSet; bool m_status_isValid; - - }; +}; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXPet) diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp index 0c03c3cd31c..9ac2f626458 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp @@ -3,7 +3,6 @@ * 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 @@ -18,86 +17,75 @@ namespace test_namespace { -PFXPetApi::PFXPetApi(const QString &scheme, const QString &host, int port, const QString& basePath, const int timeOut) : - _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut) { -} +PFXPetApi::PFXPetApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) + : _scheme(scheme), + _host(host), + _port(port), + _basePath(basePath), + _timeOut(timeOut) {} PFXPetApi::~PFXPetApi() { } -void PFXPetApi::setScheme(const QString& scheme){ +void PFXPetApi::setScheme(const QString &scheme) { _scheme = scheme; } -void PFXPetApi::setHost(const QString& host){ +void PFXPetApi::setHost(const QString &host) { _host = host; } -void PFXPetApi::setPort(int port){ +void PFXPetApi::setPort(int port) { _port = port; } -void PFXPetApi::setBasePath(const QString& basePath){ +void PFXPetApi::setBasePath(const QString &basePath) { _basePath = basePath; } -void PFXPetApi::setTimeOut(const int timeOut){ +void PFXPetApi::setTimeOut(const int timeOut) { _timeOut = timeOut; } -void PFXPetApi::setWorkingDirectory(const QString& path){ +void PFXPetApi::setWorkingDirectory(const QString &path) { _workingDirectory = path; } -void PFXPetApi::addHeaders(const QString& key, const QString& value){ +void PFXPetApi::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } -void -PFXPetApi::addPet(const PFXPet& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet"); - +void PFXPetApi::addPet(const PFXPet &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - - + QString output = body.asJson(); input.request_body.append(output); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::addPetCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::addPetCallback); worker->execute(&input); } -void -PFXPetApi::addPetCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::addPetCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -111,50 +99,41 @@ PFXPetApi::addPetCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::deletePet(const qint64& pet_id, const QString& api_key) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet/{petId}"); +void PFXPetApi::deletePet(const qint64 &pet_id, const QString &api_key) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet/{petId}"); QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); fullPath.replace(pet_idPathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "DELETE"); - if (api_key != nullptr) { input.headers.insert("api_key", api_key); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::deletePetCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::deletePetCallback); worker->execute(&input); } -void -PFXPetApi::deletePetCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::deletePetCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -168,92 +147,80 @@ PFXPetApi::deletePetCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::findPetsByStatus(const QList& status) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet/findByStatus"); - +void PFXPetApi::findPetsByStatus(const QList &status) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet/findByStatus"); + if (status.size() > 0) { - if (QString("csv").indexOf("multi") == 0) { - foreach(QString t, status) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("status=").append(::test_namespace::toStringValue(t)); + if (QString("csv").indexOf("multi") == 0) { + foreach (QString t, status) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("status=").append(::test_namespace::toStringValue(t)); + } + } else if (QString("csv").indexOf("ssv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("status="); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append(" "); + } + fullPath.append(::test_namespace::toStringValue(t)); + } + } else if (QString("csv").indexOf("tsv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("status="); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append("\t"); + } + fullPath.append(::test_namespace::toStringValue(t)); + } } - } - else if (QString("csv").indexOf("ssv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("status="); - qint32 count = 0; - foreach(QString t, status) { - if (count > 0) { - fullPath.append(" "); - } - fullPath.append(::test_namespace::toStringValue(t)); - } - } - else if (QString("csv").indexOf("tsv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("status="); - qint32 count = 0; - foreach(QString t, status) { - if (count > 0) { - fullPath.append("\t"); - } - fullPath.append(::test_namespace::toStringValue(t)); - } - } } - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::findPetsByStatusCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::findPetsByStatusCallback); worker->execute(&input); } -void -PFXPetApi::findPetsByStatusCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::findPetsByStatusCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } QList output; QString json(worker->response); - QByteArray array (json.toStdString().c_str()); + QByteArray array(json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonArray jsonArray = doc.array(); - foreach(QJsonValue obj, jsonArray) { + foreach (QJsonValue obj, jsonArray) { PFXPet val; ::test_namespace::fromJsonValue(val, obj); output.append(val); @@ -269,92 +236,80 @@ PFXPetApi::findPetsByStatusCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::findPetsByTags(const QList& tags) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet/findByTags"); - +void PFXPetApi::findPetsByTags(const QList &tags) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet/findByTags"); + if (tags.size() > 0) { - if (QString("csv").indexOf("multi") == 0) { - foreach(QString t, tags) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("tags=").append(::test_namespace::toStringValue(t)); + if (QString("csv").indexOf("multi") == 0) { + foreach (QString t, tags) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("tags=").append(::test_namespace::toStringValue(t)); + } + } else if (QString("csv").indexOf("ssv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("tags="); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append(" "); + } + fullPath.append(::test_namespace::toStringValue(t)); + } + } else if (QString("csv").indexOf("tsv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?"); + fullPath.append("tags="); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append("\t"); + } + fullPath.append(::test_namespace::toStringValue(t)); + } } - } - else if (QString("csv").indexOf("ssv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("tags="); - qint32 count = 0; - foreach(QString t, tags) { - if (count > 0) { - fullPath.append(" "); - } - fullPath.append(::test_namespace::toStringValue(t)); - } - } - else if (QString("csv").indexOf("tsv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?"); - fullPath.append("tags="); - qint32 count = 0; - foreach(QString t, tags) { - if (count > 0) { - fullPath.append("\t"); - } - fullPath.append(::test_namespace::toStringValue(t)); - } - } } - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::findPetsByTagsCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::findPetsByTagsCallback); worker->execute(&input); } -void -PFXPetApi::findPetsByTagsCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::findPetsByTagsCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } QList output; QString json(worker->response); - QByteArray array (json.toStdString().c_str()); + QByteArray array(json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonArray jsonArray = doc.array(); - foreach(QJsonValue obj, jsonArray) { + foreach (QJsonValue obj, jsonArray) { PFXPet val; ::test_namespace::fromJsonValue(val, obj); output.append(val); @@ -370,47 +325,37 @@ PFXPetApi::findPetsByTagsCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::getPetById(const qint64& pet_id) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet/{petId}"); +void PFXPetApi::getPetById(const qint64 &pet_id) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet/{petId}"); QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); fullPath.replace(pet_idPathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::getPetByIdCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::getPetByIdCallback); worker->execute(&input); } -void -PFXPetApi::getPetByIdCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::getPetByIdCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } PFXPet output(QString(worker->response)); @@ -425,47 +370,37 @@ PFXPetApi::getPetByIdCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::updatePet(const PFXPet& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet"); - +void PFXPetApi::updatePet(const PFXPet &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "PUT"); - - + QString output = body.asJson(); input.request_body.append(output); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::updatePetCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::updatePetCallback); worker->execute(&input); } -void -PFXPetApi::updatePetCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::updatePetCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -479,49 +414,39 @@ PFXPetApi::updatePetCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::updatePetWithForm(const qint64& pet_id, const QString& name, const QString& status) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet/{petId}"); +void PFXPetApi::updatePetWithForm(const qint64 &pet_id, const QString &name, const QString &status) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet/{petId}"); QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); fullPath.replace(pet_idPathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - + input.add_var("name", ::test_namespace::toStringValue(name)); input.add_var("status", ::test_namespace::toStringValue(status)); + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::updatePetWithFormCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::updatePetWithFormCallback); worker->execute(&input); } -void -PFXPetApi::updatePetWithFormCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::updatePetWithFormCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -535,49 +460,39 @@ PFXPetApi::updatePetWithFormCallback(PFXHttpRequestWorker * worker) { } } -void -PFXPetApi::uploadFile(const qint64& pet_id, const QString& additional_metadata, const PFXHttpFileElement& file) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/pet/{petId}/uploadImage"); +void PFXPetApi::uploadFile(const qint64 &pet_id, const QString &additional_metadata, const PFXHttpFileElement &file) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/pet/{petId}/uploadImage"); QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); fullPath.replace(pet_idPathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - + input.add_var("additionalMetadata", ::test_namespace::toStringValue(additional_metadata)); input.add_file("file", file.local_filename, file.request_filename, file.mime_type); + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXPetApi::uploadFileCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::uploadFileCallback); worker->execute(&input); } -void -PFXPetApi::uploadFileCallback(PFXHttpRequestWorker * worker) { +void PFXPetApi::uploadFileCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } PFXApiResponse output(QString(worker->response)); @@ -592,5 +507,4 @@ PFXPetApi::uploadFileCallback(PFXHttpRequestWorker * worker) { } } - -} +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h index 1de448152b1..f55675845c1 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h @@ -3,7 +3,6 @@ * 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 @@ -24,30 +23,30 @@ namespace test_namespace { -class PFXPetApi: public QObject { +class PFXPetApi : public QObject { Q_OBJECT public: - PFXPetApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString& basePath = "/v2", const int timeOut = 0); + PFXPetApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString &basePath = "/v2", const int timeOut = 0); ~PFXPetApi(); void setScheme(const QString &scheme); void setHost(const QString &host); void setPort(int port); - void setBasePath(const QString& basePath); + void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); - void setWorkingDirectory(const QString& path); - void addHeaders(const QString& key, const QString& value); + void setWorkingDirectory(const QString &path); + void addHeaders(const QString &key, const QString &value); + + void addPet(const PFXPet &body); + void deletePet(const qint64 &pet_id, const QString &api_key); + void findPetsByStatus(const QList &status); + void findPetsByTags(const QList &tags); + void getPetById(const qint64 &pet_id); + void updatePet(const PFXPet &body); + void updatePetWithForm(const qint64 &pet_id, const QString &name, const QString &status); + void uploadFile(const qint64 &pet_id, const QString &additional_metadata, const PFXHttpFileElement &file); - void addPet(const PFXPet& body); - void deletePet(const qint64& pet_id, const QString& api_key); - void findPetsByStatus(const QList& status); - void findPetsByTags(const QList& tags); - void getPetById(const qint64& pet_id); - void updatePet(const PFXPet& body); - void updatePetWithForm(const qint64& pet_id, const QString& name, const QString& status); - void uploadFile(const qint64& pet_id, const QString& additional_metadata, const PFXHttpFileElement& file); - private: QString _scheme, _host; int _port; @@ -55,16 +54,18 @@ private: int _timeOut; QString _workingDirectory; QMap defaultHeaders; - void addPetCallback (PFXHttpRequestWorker * worker); - void deletePetCallback (PFXHttpRequestWorker * worker); - void findPetsByStatusCallback (PFXHttpRequestWorker * worker); - void findPetsByTagsCallback (PFXHttpRequestWorker * worker); - void getPetByIdCallback (PFXHttpRequestWorker * worker); - void updatePetCallback (PFXHttpRequestWorker * worker); - void updatePetWithFormCallback (PFXHttpRequestWorker * worker); - void uploadFileCallback (PFXHttpRequestWorker * worker); - + + void addPetCallback(PFXHttpRequestWorker *worker); + void deletePetCallback(PFXHttpRequestWorker *worker); + void findPetsByStatusCallback(PFXHttpRequestWorker *worker); + void findPetsByTagsCallback(PFXHttpRequestWorker *worker); + void getPetByIdCallback(PFXHttpRequestWorker *worker); + void updatePetCallback(PFXHttpRequestWorker *worker); + void updatePetWithFormCallback(PFXHttpRequestWorker *worker); + void uploadFileCallback(PFXHttpRequestWorker *worker); + signals: + void addPetSignal(); void deletePetSignal(); void findPetsByStatusSignal(QList summary); @@ -73,16 +74,16 @@ signals: void updatePetSignal(); void updatePetWithFormSignal(); void uploadFileSignal(PFXApiResponse summary); - - void addPetSignalFull(PFXHttpRequestWorker* worker); - void deletePetSignalFull(PFXHttpRequestWorker* worker); - void findPetsByStatusSignalFull(PFXHttpRequestWorker* worker, QList summary); - void findPetsByTagsSignalFull(PFXHttpRequestWorker* worker, QList summary); - void getPetByIdSignalFull(PFXHttpRequestWorker* worker, PFXPet summary); - void updatePetSignalFull(PFXHttpRequestWorker* worker); - void updatePetWithFormSignalFull(PFXHttpRequestWorker* worker); - void uploadFileSignalFull(PFXHttpRequestWorker* worker, PFXApiResponse summary); - + + void addPetSignalFull(PFXHttpRequestWorker *worker); + void deletePetSignalFull(PFXHttpRequestWorker *worker); + void findPetsByStatusSignalFull(PFXHttpRequestWorker *worker, QList summary); + void findPetsByTagsSignalFull(PFXHttpRequestWorker *worker, QList summary); + void getPetByIdSignalFull(PFXHttpRequestWorker *worker, PFXPet summary); + void updatePetSignalFull(PFXHttpRequestWorker *worker); + void updatePetWithFormSignalFull(PFXHttpRequestWorker *worker); + void uploadFileSignalFull(PFXHttpRequestWorker *worker, PFXApiResponse summary); + void addPetSignalE(QNetworkReply::NetworkError error_type, QString error_str); void deletePetSignalE(QNetworkReply::NetworkError error_type, QString error_str); void findPetsByStatusSignalE(QList summary, QNetworkReply::NetworkError error_type, QString error_str); @@ -91,17 +92,16 @@ signals: void updatePetSignalE(QNetworkReply::NetworkError error_type, QString error_str); void updatePetWithFormSignalE(QNetworkReply::NetworkError error_type, QString error_str); void uploadFileSignalE(PFXApiResponse summary, QNetworkReply::NetworkError error_type, QString error_str); - - void addPetSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void deletePetSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void findPetsByStatusSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void findPetsByTagsSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void getPetByIdSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void updatePetSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void updatePetWithFormSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void uploadFileSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - + + void addPetSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void deletePetSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void findPetsByStatusSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void findPetsByTagsSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void getPetByIdSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void updatePetSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void updatePetWithFormSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void uploadFileSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); }; -} +} // namespace test_namespace #endif diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp index df62ceb15b1..f16902079de 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp @@ -3,7 +3,6 @@ * 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 @@ -18,86 +17,75 @@ namespace test_namespace { -PFXStoreApi::PFXStoreApi(const QString &scheme, const QString &host, int port, const QString& basePath, const int timeOut) : - _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut) { -} +PFXStoreApi::PFXStoreApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) + : _scheme(scheme), + _host(host), + _port(port), + _basePath(basePath), + _timeOut(timeOut) {} PFXStoreApi::~PFXStoreApi() { } -void PFXStoreApi::setScheme(const QString& scheme){ +void PFXStoreApi::setScheme(const QString &scheme) { _scheme = scheme; } -void PFXStoreApi::setHost(const QString& host){ +void PFXStoreApi::setHost(const QString &host) { _host = host; } -void PFXStoreApi::setPort(int port){ +void PFXStoreApi::setPort(int port) { _port = port; } -void PFXStoreApi::setBasePath(const QString& basePath){ +void PFXStoreApi::setBasePath(const QString &basePath) { _basePath = basePath; } -void PFXStoreApi::setTimeOut(const int timeOut){ +void PFXStoreApi::setTimeOut(const int timeOut) { _timeOut = timeOut; } -void PFXStoreApi::setWorkingDirectory(const QString& path){ +void PFXStoreApi::setWorkingDirectory(const QString &path) { _workingDirectory = path; } -void PFXStoreApi::addHeaders(const QString& key, const QString& value){ +void PFXStoreApi::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } -void -PFXStoreApi::deleteOrder(const QString& order_id) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/store/order/{orderId}"); +void PFXStoreApi::deleteOrder(const QString &order_id) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/store/order/{orderId}"); QString order_idPathParam("{"); order_idPathParam.append("orderId").append("}"); fullPath.replace(order_idPathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(order_id))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "DELETE"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXStoreApi::deleteOrderCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXStoreApi::deleteOrderCallback); worker->execute(&input); } -void -PFXStoreApi::deleteOrderCallback(PFXHttpRequestWorker * worker) { +void PFXStoreApi::deleteOrderCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -111,52 +99,42 @@ PFXStoreApi::deleteOrderCallback(PFXHttpRequestWorker * worker) { } } -void -PFXStoreApi::getInventory() { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/store/inventory"); - +void PFXStoreApi::getInventory() { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/store/inventory"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXStoreApi::getInventoryCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXStoreApi::getInventoryCallback); worker->execute(&input); } -void -PFXStoreApi::getInventoryCallback(PFXHttpRequestWorker * worker) { +void PFXStoreApi::getInventoryCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } QMap output; QString json(worker->response); - QByteArray array (json.toStdString().c_str()); + QByteArray array(json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject obj = doc.object(); - foreach(QString key, obj.keys()) { + foreach (QString key, obj.keys()) { qint32 val; ::test_namespace::fromJsonValue(val, obj[key]); output.insert(key, val); @@ -172,47 +150,37 @@ PFXStoreApi::getInventoryCallback(PFXHttpRequestWorker * worker) { } } -void -PFXStoreApi::getOrderById(const qint64& order_id) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/store/order/{orderId}"); +void PFXStoreApi::getOrderById(const qint64 &order_id) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/store/order/{orderId}"); QString order_idPathParam("{"); order_idPathParam.append("orderId").append("}"); fullPath.replace(order_idPathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(order_id))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXStoreApi::getOrderByIdCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXStoreApi::getOrderByIdCallback); worker->execute(&input); } -void -PFXStoreApi::getOrderByIdCallback(PFXHttpRequestWorker * worker) { +void PFXStoreApi::getOrderByIdCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } PFXOrder output(QString(worker->response)); @@ -227,47 +195,37 @@ PFXStoreApi::getOrderByIdCallback(PFXHttpRequestWorker * worker) { } } -void -PFXStoreApi::placeOrder(const PFXOrder& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/store/order"); - +void PFXStoreApi::placeOrder(const PFXOrder &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/store/order"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - - + QString output = body.asJson(); input.request_body.append(output); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXStoreApi::placeOrderCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXStoreApi::placeOrderCallback); worker->execute(&input); } -void -PFXStoreApi::placeOrderCallback(PFXHttpRequestWorker * worker) { +void PFXStoreApi::placeOrderCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } PFXOrder output(QString(worker->response)); @@ -282,5 +240,4 @@ PFXStoreApi::placeOrderCallback(PFXHttpRequestWorker * worker) { } } - -} +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h index 59f4dfb5faa..d0dec36dad0 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h @@ -3,7 +3,6 @@ * 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 @@ -23,26 +22,26 @@ namespace test_namespace { -class PFXStoreApi: public QObject { +class PFXStoreApi : public QObject { Q_OBJECT public: - PFXStoreApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString& basePath = "/v2", const int timeOut = 0); + PFXStoreApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString &basePath = "/v2", const int timeOut = 0); ~PFXStoreApi(); void setScheme(const QString &scheme); void setHost(const QString &host); void setPort(int port); - void setBasePath(const QString& basePath); + void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); - void setWorkingDirectory(const QString& path); - void addHeaders(const QString& key, const QString& value); + void setWorkingDirectory(const QString &path); + void addHeaders(const QString &key, const QString &value); - void deleteOrder(const QString& order_id); + void deleteOrder(const QString &order_id); void getInventory(); - void getOrderById(const qint64& order_id); - void placeOrder(const PFXOrder& body); - + void getOrderById(const qint64 &order_id); + void placeOrder(const PFXOrder &body); + private: QString _scheme, _host; int _port; @@ -50,33 +49,34 @@ private: int _timeOut; QString _workingDirectory; QMap defaultHeaders; - void deleteOrderCallback (PFXHttpRequestWorker * worker); - void getInventoryCallback (PFXHttpRequestWorker * worker); - void getOrderByIdCallback (PFXHttpRequestWorker * worker); - void placeOrderCallback (PFXHttpRequestWorker * worker); - + + void deleteOrderCallback(PFXHttpRequestWorker *worker); + void getInventoryCallback(PFXHttpRequestWorker *worker); + void getOrderByIdCallback(PFXHttpRequestWorker *worker); + void placeOrderCallback(PFXHttpRequestWorker *worker); + signals: + void deleteOrderSignal(); void getInventorySignal(QMap summary); void getOrderByIdSignal(PFXOrder summary); void placeOrderSignal(PFXOrder summary); - - void deleteOrderSignalFull(PFXHttpRequestWorker* worker); - void getInventorySignalFull(PFXHttpRequestWorker* worker, QMap summary); - void getOrderByIdSignalFull(PFXHttpRequestWorker* worker, PFXOrder summary); - void placeOrderSignalFull(PFXHttpRequestWorker* worker, PFXOrder summary); - + + void deleteOrderSignalFull(PFXHttpRequestWorker *worker); + void getInventorySignalFull(PFXHttpRequestWorker *worker, QMap summary); + void getOrderByIdSignalFull(PFXHttpRequestWorker *worker, PFXOrder summary); + void placeOrderSignalFull(PFXHttpRequestWorker *worker, PFXOrder summary); + void deleteOrderSignalE(QNetworkReply::NetworkError error_type, QString error_str); void getInventorySignalE(QMap summary, QNetworkReply::NetworkError error_type, QString error_str); void getOrderByIdSignalE(PFXOrder summary, QNetworkReply::NetworkError error_type, QString error_str); void placeOrderSignalE(PFXOrder summary, QNetworkReply::NetworkError error_type, QString error_str); - - void deleteOrderSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void getInventorySignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void getOrderByIdSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void placeOrderSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - + + void deleteOrderSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void getInventorySignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void getOrderByIdSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void placeOrderSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); }; -} +} // namespace test_namespace #endif diff --git a/samples/client/petstore/cpp-qt5/client/PFXTag.cpp b/samples/client/petstore/cpp-qt5/client/PFXTag.cpp index b4fa9007879..4a046506c6b 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXTag.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXTag.cpp @@ -3,20 +3,18 @@ * 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. */ - #include "PFXTag.h" -#include -#include -#include #include +#include +#include +#include #include "PFXHelpers.h" @@ -31,98 +29,86 @@ PFXTag::PFXTag() { this->initializeModel(); } -PFXTag::~PFXTag() { +PFXTag::~PFXTag() {} -} +void PFXTag::initializeModel() { -void -PFXTag::initializeModel() { - m_id_isSet = false; m_id_isValid = false; - + m_name_isSet = false; m_name_isValid = false; - } -void -PFXTag::fromJson(QString jsonString) { - QByteArray array (jsonString.toStdString().c_str()); +void PFXTag::fromJson(QString jsonString) { + QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); } -void -PFXTag::fromJsonObject(QJsonObject json) { - +void PFXTag::fromJsonObject(QJsonObject json) { + m_id_isValid = ::test_namespace::fromJsonValue(id, json[QString("id")]); m_id_isSet = !json[QString("id")].isNull() && m_id_isValid; - + m_name_isValid = ::test_namespace::fromJsonValue(name, json[QString("name")]); m_name_isSet = !json[QString("name")].isNull() && m_name_isValid; - } -QString -PFXTag::asJson () const { +QString PFXTag::asJson() const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); return QString(bytes); } -QJsonObject -PFXTag::asJsonObject() const { +QJsonObject PFXTag::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ + if (m_id_isSet) { obj.insert(QString("id"), ::test_namespace::toJsonValue(id)); } - if(m_name_isSet){ + if (m_name_isSet) { obj.insert(QString("name"), ::test_namespace::toJsonValue(name)); } return obj; } - -qint64 -PFXTag::getId() const { +qint64 PFXTag::getId() const { return id; } -void -PFXTag::setId(const qint64 &id) { +void PFXTag::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } - -QString -PFXTag::getName() const { +QString PFXTag::getName() const { return name; } -void -PFXTag::setName(const QString &name) { +void PFXTag::setName(const QString &name) { this->name = name; this->m_name_isSet = true; } -bool -PFXTag::isSet() const { +bool PFXTag::isSet() const { bool isObjectUpdated = false; - do{ - if(m_id_isSet){ isObjectUpdated = true; break;} - - if(m_name_isSet){ isObjectUpdated = true; break;} - }while(false); + do { + if (m_id_isSet) { + isObjectUpdated = true; + break; + } + + if (m_name_isSet) { + isObjectUpdated = true; + break; + } + } while (false); return isObjectUpdated; } -bool -PFXTag::isValid() const { +bool PFXTag::isValid() const { // only required properties are required for the object to be considered valid return true; } -} - +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXTag.h b/samples/client/petstore/cpp-qt5/client/PFXTag.h index 0ac8fe37085..6b80e1312ef 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXTag.h +++ b/samples/client/petstore/cpp-qt5/client/PFXTag.h @@ -3,7 +3,6 @@ * 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 @@ -21,53 +20,46 @@ #include - #include -#include "PFXObject.h" #include "PFXEnum.h" - +#include "PFXObject.h" namespace test_namespace { -class PFXTag: public PFXObject { +class PFXTag : public PFXObject { public: PFXTag(); PFXTag(QString json); ~PFXTag() override; - QString asJson () const override; + QString asJson() const override; QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; void fromJson(QString jsonString) override; - qint64 getId() const; void setId(const qint64 &id); - QString getName() const; void setName(const QString &name); - - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - + qint64 id; bool m_id_isSet; bool m_id_isValid; - + QString name; bool m_name_isSet; bool m_name_isValid; - - }; +}; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXTag) diff --git a/samples/client/petstore/cpp-qt5/client/PFXUser.cpp b/samples/client/petstore/cpp-qt5/client/PFXUser.cpp index d77213bfd86..3a8e4eef1c7 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUser.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXUser.cpp @@ -3,20 +3,18 @@ * 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. */ - #include "PFXUser.h" -#include -#include -#include #include +#include +#include +#include #include "PFXHelpers.h" @@ -31,230 +29,218 @@ PFXUser::PFXUser() { this->initializeModel(); } -PFXUser::~PFXUser() { +PFXUser::~PFXUser() {} -} +void PFXUser::initializeModel() { -void -PFXUser::initializeModel() { - m_id_isSet = false; m_id_isValid = false; - + m_username_isSet = false; m_username_isValid = false; - + m_first_name_isSet = false; m_first_name_isValid = false; - + m_last_name_isSet = false; m_last_name_isValid = false; - + m_email_isSet = false; m_email_isValid = false; - + m_password_isSet = false; m_password_isValid = false; - + m_phone_isSet = false; m_phone_isValid = false; - + m_user_status_isSet = false; m_user_status_isValid = false; - } -void -PFXUser::fromJson(QString jsonString) { - QByteArray array (jsonString.toStdString().c_str()); +void PFXUser::fromJson(QString jsonString) { + QByteArray array(jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); } -void -PFXUser::fromJsonObject(QJsonObject json) { - +void PFXUser::fromJsonObject(QJsonObject json) { + m_id_isValid = ::test_namespace::fromJsonValue(id, json[QString("id")]); m_id_isSet = !json[QString("id")].isNull() && m_id_isValid; - + m_username_isValid = ::test_namespace::fromJsonValue(username, json[QString("username")]); m_username_isSet = !json[QString("username")].isNull() && m_username_isValid; - + m_first_name_isValid = ::test_namespace::fromJsonValue(first_name, json[QString("firstName")]); m_first_name_isSet = !json[QString("firstName")].isNull() && m_first_name_isValid; - + m_last_name_isValid = ::test_namespace::fromJsonValue(last_name, json[QString("lastName")]); m_last_name_isSet = !json[QString("lastName")].isNull() && m_last_name_isValid; - + m_email_isValid = ::test_namespace::fromJsonValue(email, json[QString("email")]); m_email_isSet = !json[QString("email")].isNull() && m_email_isValid; - + m_password_isValid = ::test_namespace::fromJsonValue(password, json[QString("password")]); m_password_isSet = !json[QString("password")].isNull() && m_password_isValid; - + m_phone_isValid = ::test_namespace::fromJsonValue(phone, json[QString("phone")]); m_phone_isSet = !json[QString("phone")].isNull() && m_phone_isValid; - + m_user_status_isValid = ::test_namespace::fromJsonValue(user_status, json[QString("userStatus")]); m_user_status_isSet = !json[QString("userStatus")].isNull() && m_user_status_isValid; - } -QString -PFXUser::asJson () const { +QString PFXUser::asJson() const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); return QString(bytes); } -QJsonObject -PFXUser::asJsonObject() const { +QJsonObject PFXUser::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ + if (m_id_isSet) { obj.insert(QString("id"), ::test_namespace::toJsonValue(id)); } - if(m_username_isSet){ + if (m_username_isSet) { obj.insert(QString("username"), ::test_namespace::toJsonValue(username)); } - if(m_first_name_isSet){ + if (m_first_name_isSet) { obj.insert(QString("firstName"), ::test_namespace::toJsonValue(first_name)); } - if(m_last_name_isSet){ + if (m_last_name_isSet) { obj.insert(QString("lastName"), ::test_namespace::toJsonValue(last_name)); } - if(m_email_isSet){ + if (m_email_isSet) { obj.insert(QString("email"), ::test_namespace::toJsonValue(email)); } - if(m_password_isSet){ + if (m_password_isSet) { obj.insert(QString("password"), ::test_namespace::toJsonValue(password)); } - if(m_phone_isSet){ + if (m_phone_isSet) { obj.insert(QString("phone"), ::test_namespace::toJsonValue(phone)); } - if(m_user_status_isSet){ + if (m_user_status_isSet) { obj.insert(QString("userStatus"), ::test_namespace::toJsonValue(user_status)); } return obj; } - -qint64 -PFXUser::getId() const { +qint64 PFXUser::getId() const { return id; } -void -PFXUser::setId(const qint64 &id) { +void PFXUser::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } - -QString -PFXUser::getUsername() const { +QString PFXUser::getUsername() const { return username; } -void -PFXUser::setUsername(const QString &username) { +void PFXUser::setUsername(const QString &username) { this->username = username; this->m_username_isSet = true; } - -QString -PFXUser::getFirstName() const { +QString PFXUser::getFirstName() const { return first_name; } -void -PFXUser::setFirstName(const QString &first_name) { +void PFXUser::setFirstName(const QString &first_name) { this->first_name = first_name; this->m_first_name_isSet = true; } - -QString -PFXUser::getLastName() const { +QString PFXUser::getLastName() const { return last_name; } -void -PFXUser::setLastName(const QString &last_name) { +void PFXUser::setLastName(const QString &last_name) { this->last_name = last_name; this->m_last_name_isSet = true; } - -QString -PFXUser::getEmail() const { +QString PFXUser::getEmail() const { return email; } -void -PFXUser::setEmail(const QString &email) { +void PFXUser::setEmail(const QString &email) { this->email = email; this->m_email_isSet = true; } - -QString -PFXUser::getPassword() const { +QString PFXUser::getPassword() const { return password; } -void -PFXUser::setPassword(const QString &password) { +void PFXUser::setPassword(const QString &password) { this->password = password; this->m_password_isSet = true; } - -QString -PFXUser::getPhone() const { +QString PFXUser::getPhone() const { return phone; } -void -PFXUser::setPhone(const QString &phone) { +void PFXUser::setPhone(const QString &phone) { this->phone = phone; this->m_phone_isSet = true; } - -qint32 -PFXUser::getUserStatus() const { +qint32 PFXUser::getUserStatus() const { return user_status; } -void -PFXUser::setUserStatus(const qint32 &user_status) { +void PFXUser::setUserStatus(const qint32 &user_status) { this->user_status = user_status; this->m_user_status_isSet = true; } -bool -PFXUser::isSet() const { +bool PFXUser::isSet() const { bool isObjectUpdated = false; - do{ - if(m_id_isSet){ isObjectUpdated = true; break;} - - if(m_username_isSet){ isObjectUpdated = true; break;} - - if(m_first_name_isSet){ isObjectUpdated = true; break;} - - if(m_last_name_isSet){ isObjectUpdated = true; break;} - - if(m_email_isSet){ isObjectUpdated = true; break;} - - if(m_password_isSet){ isObjectUpdated = true; break;} - - if(m_phone_isSet){ isObjectUpdated = true; break;} - - if(m_user_status_isSet){ isObjectUpdated = true; break;} - }while(false); + do { + if (m_id_isSet) { + isObjectUpdated = true; + break; + } + + if (m_username_isSet) { + isObjectUpdated = true; + break; + } + + if (m_first_name_isSet) { + isObjectUpdated = true; + break; + } + + if (m_last_name_isSet) { + isObjectUpdated = true; + break; + } + + if (m_email_isSet) { + isObjectUpdated = true; + break; + } + + if (m_password_isSet) { + isObjectUpdated = true; + break; + } + + if (m_phone_isSet) { + isObjectUpdated = true; + break; + } + + if (m_user_status_isSet) { + isObjectUpdated = true; + break; + } + } while (false); return isObjectUpdated; } -bool -PFXUser::isValid() const { +bool PFXUser::isValid() const { // only required properties are required for the object to be considered valid return true; } -} - +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXUser.h b/samples/client/petstore/cpp-qt5/client/PFXUser.h index bfda4d5e4e0..df23a4734c2 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUser.h +++ b/samples/client/petstore/cpp-qt5/client/PFXUser.h @@ -3,7 +3,6 @@ * 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 @@ -21,101 +20,88 @@ #include - #include -#include "PFXObject.h" #include "PFXEnum.h" - +#include "PFXObject.h" namespace test_namespace { -class PFXUser: public PFXObject { +class PFXUser : public PFXObject { public: PFXUser(); PFXUser(QString json); ~PFXUser() override; - QString asJson () const override; + QString asJson() const override; QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; void fromJson(QString jsonString) override; - qint64 getId() const; void setId(const qint64 &id); - QString getUsername() const; void setUsername(const QString &username); - QString getFirstName() const; void setFirstName(const QString &first_name); - QString getLastName() const; void setLastName(const QString &last_name); - QString getEmail() const; void setEmail(const QString &email); - QString getPassword() const; void setPassword(const QString &password); - QString getPhone() const; void setPhone(const QString &phone); - qint32 getUserStatus() const; void setUserStatus(const qint32 &user_status); - - virtual bool isSet() const override; virtual bool isValid() const override; private: void initializeModel(); - + qint64 id; bool m_id_isSet; bool m_id_isValid; - + QString username; bool m_username_isSet; bool m_username_isValid; - + QString first_name; bool m_first_name_isSet; bool m_first_name_isValid; - + QString last_name; bool m_last_name_isSet; bool m_last_name_isValid; - + QString email; bool m_email_isSet; bool m_email_isValid; - + QString password; bool m_password_isSet; bool m_password_isValid; - + QString phone; bool m_phone_isSet; bool m_phone_isValid; - + qint32 user_status; bool m_user_status_isSet; bool m_user_status_isValid; - - }; +}; -} +} // namespace test_namespace Q_DECLARE_METATYPE(test_namespace::PFXUser) diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp index 07c5edb9b90..b2d2b6aa2fe 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp @@ -3,7 +3,6 @@ * 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 @@ -18,86 +17,75 @@ namespace test_namespace { -PFXUserApi::PFXUserApi(const QString &scheme, const QString &host, int port, const QString& basePath, const int timeOut) : - _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut) { -} +PFXUserApi::PFXUserApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) + : _scheme(scheme), + _host(host), + _port(port), + _basePath(basePath), + _timeOut(timeOut) {} PFXUserApi::~PFXUserApi() { } -void PFXUserApi::setScheme(const QString& scheme){ +void PFXUserApi::setScheme(const QString &scheme) { _scheme = scheme; } -void PFXUserApi::setHost(const QString& host){ +void PFXUserApi::setHost(const QString &host) { _host = host; } -void PFXUserApi::setPort(int port){ +void PFXUserApi::setPort(int port) { _port = port; } -void PFXUserApi::setBasePath(const QString& basePath){ +void PFXUserApi::setBasePath(const QString &basePath) { _basePath = basePath; } -void PFXUserApi::setTimeOut(const int timeOut){ +void PFXUserApi::setTimeOut(const int timeOut) { _timeOut = timeOut; } -void PFXUserApi::setWorkingDirectory(const QString& path){ +void PFXUserApi::setWorkingDirectory(const QString &path) { _workingDirectory = path; } -void PFXUserApi::addHeaders(const QString& key, const QString& value){ +void PFXUserApi::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } -void -PFXUserApi::createUser(const PFXUser& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user"); - +void PFXUserApi::createUser(const PFXUser &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - - + QString output = body.asJson(); input.request_body.append(output); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::createUserCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::createUserCallback); worker->execute(&input); } -void -PFXUserApi::createUserCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::createUserCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -111,48 +99,38 @@ PFXUserApi::createUserCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::createUsersWithArrayInput(const QList& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/createWithArray"); - +void PFXUserApi::createUsersWithArrayInput(const QList &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/createWithArray"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - - + QJsonDocument doc(::test_namespace::toJsonValue(body).toArray()); QByteArray bytes = doc.toJson(); input.request_body.append(bytes); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::createUsersWithArrayInputCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::createUsersWithArrayInputCallback); worker->execute(&input); } -void -PFXUserApi::createUsersWithArrayInputCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::createUsersWithArrayInputCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -166,48 +144,38 @@ PFXUserApi::createUsersWithArrayInputCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::createUsersWithListInput(const QList& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/createWithList"); - +void PFXUserApi::createUsersWithListInput(const QList &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/createWithList"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - - + QJsonDocument doc(::test_namespace::toJsonValue(body).toArray()); QByteArray bytes = doc.toJson(); input.request_body.append(bytes); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::createUsersWithListInputCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::createUsersWithListInputCallback); worker->execute(&input); } -void -PFXUserApi::createUsersWithListInputCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::createUsersWithListInputCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -221,47 +189,37 @@ PFXUserApi::createUsersWithListInputCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::deleteUser(const QString& username) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/{username}"); +void PFXUserApi::deleteUser(const QString &username) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/{username}"); QString usernamePathParam("{"); usernamePathParam.append("username").append("}"); fullPath.replace(usernamePathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "DELETE"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::deleteUserCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::deleteUserCallback); worker->execute(&input); } -void -PFXUserApi::deleteUserCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::deleteUserCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -275,47 +233,37 @@ PFXUserApi::deleteUserCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::getUserByName(const QString& username) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/{username}"); +void PFXUserApi::getUserByName(const QString &username) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/{username}"); QString usernamePathParam("{"); usernamePathParam.append("username").append("}"); fullPath.replace(usernamePathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::getUserByNameCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::getUserByNameCallback); worker->execute(&input); } -void -PFXUserApi::getUserByNameCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::getUserByNameCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } PFXUser output(QString(worker->response)); @@ -330,60 +278,46 @@ PFXUserApi::getUserByNameCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::loginUser(const QString& username, const QString& password) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/login"); - +void PFXUserApi::loginUser(const QString &username, const QString &password) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/login"); + if (fullPath.indexOf("?") > 0) - fullPath.append("&"); + fullPath.append("&"); else - fullPath.append("?"); - fullPath.append(QUrl::toPercentEncoding("username")) - .append("=") - .append(QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); - + fullPath.append("?"); + fullPath.append(QUrl::toPercentEncoding("username")).append("=").append(QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + if (fullPath.indexOf("?") > 0) - fullPath.append("&"); + fullPath.append("&"); else - fullPath.append("?"); - fullPath.append(QUrl::toPercentEncoding("password")) - .append("=") - .append(QUrl::toPercentEncoding(::test_namespace::toStringValue(password))); - + fullPath.append("?"); + fullPath.append(QUrl::toPercentEncoding("password")).append("=").append(QUrl::toPercentEncoding(::test_namespace::toStringValue(password))); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::loginUserCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::loginUserCallback); worker->execute(&input); } -void -PFXUserApi::loginUserCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::loginUserCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } QString output; @@ -399,44 +333,34 @@ PFXUserApi::loginUserCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::logoutUser() { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/logout"); - +void PFXUserApi::logoutUser() { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/logout"); + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "GET"); - + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } - - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::logoutUserCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::logoutUserCallback); worker->execute(&input); } -void -PFXUserApi::logoutUserCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::logoutUserCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -450,50 +374,40 @@ PFXUserApi::logoutUserCallback(PFXHttpRequestWorker * worker) { } } -void -PFXUserApi::updateUser(const QString& username, const PFXUser& body) { - QString fullPath = QString("%0://%1%2%3%4") - .arg(_scheme) - .arg(_host) - .arg(_port ? ":" + QString::number(_port) : "") - .arg(_basePath) - .arg("/user/{username}"); +void PFXUserApi::updateUser(const QString &username, const PFXUser &body) { + QString fullPath = QString("%1://%2%3%4%5") + .arg(_scheme) + .arg(_host) + .arg(_port ? ":" + QString::number(_port) : "") + .arg(_basePath) + .arg("/user/{username}"); QString usernamePathParam("{"); usernamePathParam.append("username").append("}"); fullPath.replace(usernamePathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); - + PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "PUT"); - - + QString output = body.asJson(); input.request_body.append(output); - - foreach(QString key, this->defaultHeaders.keys()) { - input.headers.insert(key, this->defaultHeaders.value(key)); - } + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } - connect(worker, - &PFXHttpRequestWorker::on_execution_finished, - this, - &PFXUserApi::updateUserCallback); + connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::updateUserCallback); worker->execute(&input); } -void -PFXUserApi::updateUserCallback(PFXHttpRequestWorker * worker) { +void PFXUserApi::updateUserCallback(PFXHttpRequestWorker *worker) { QString msg; QString error_str = worker->error_str; QNetworkReply::NetworkError error_type = worker->error_type; if (worker->error_type == QNetworkReply::NoError) { msg = QString("Success! %1 bytes").arg(worker->response.length()); - } - else { + } else { msg = "Error: " + worker->error_str; } worker->deleteLater(); @@ -507,5 +421,4 @@ PFXUserApi::updateUserCallback(PFXHttpRequestWorker * worker) { } } - -} +} // namespace test_namespace diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h index 4af297b9877..417c5a8d879 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h @@ -3,7 +3,6 @@ * 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 @@ -23,30 +22,30 @@ namespace test_namespace { -class PFXUserApi: public QObject { +class PFXUserApi : public QObject { Q_OBJECT public: - PFXUserApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString& basePath = "/v2", const int timeOut = 0); + PFXUserApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString &basePath = "/v2", const int timeOut = 0); ~PFXUserApi(); void setScheme(const QString &scheme); void setHost(const QString &host); void setPort(int port); - void setBasePath(const QString& basePath); + void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); - void setWorkingDirectory(const QString& path); - void addHeaders(const QString& key, const QString& value); + void setWorkingDirectory(const QString &path); + void addHeaders(const QString &key, const QString &value); - void createUser(const PFXUser& body); - void createUsersWithArrayInput(const QList& body); - void createUsersWithListInput(const QList& body); - void deleteUser(const QString& username); - void getUserByName(const QString& username); - void loginUser(const QString& username, const QString& password); + void createUser(const PFXUser &body); + void createUsersWithArrayInput(const QList &body); + void createUsersWithListInput(const QList &body); + void deleteUser(const QString &username); + void getUserByName(const QString &username); + void loginUser(const QString &username, const QString &password); void logoutUser(); - void updateUser(const QString& username, const PFXUser& body); - + void updateUser(const QString &username, const PFXUser &body); + private: QString _scheme, _host; int _port; @@ -54,16 +53,18 @@ private: int _timeOut; QString _workingDirectory; QMap defaultHeaders; - void createUserCallback (PFXHttpRequestWorker * worker); - void createUsersWithArrayInputCallback (PFXHttpRequestWorker * worker); - void createUsersWithListInputCallback (PFXHttpRequestWorker * worker); - void deleteUserCallback (PFXHttpRequestWorker * worker); - void getUserByNameCallback (PFXHttpRequestWorker * worker); - void loginUserCallback (PFXHttpRequestWorker * worker); - void logoutUserCallback (PFXHttpRequestWorker * worker); - void updateUserCallback (PFXHttpRequestWorker * worker); - + + void createUserCallback(PFXHttpRequestWorker *worker); + void createUsersWithArrayInputCallback(PFXHttpRequestWorker *worker); + void createUsersWithListInputCallback(PFXHttpRequestWorker *worker); + void deleteUserCallback(PFXHttpRequestWorker *worker); + void getUserByNameCallback(PFXHttpRequestWorker *worker); + void loginUserCallback(PFXHttpRequestWorker *worker); + void logoutUserCallback(PFXHttpRequestWorker *worker); + void updateUserCallback(PFXHttpRequestWorker *worker); + signals: + void createUserSignal(); void createUsersWithArrayInputSignal(); void createUsersWithListInputSignal(); @@ -72,16 +73,16 @@ signals: void loginUserSignal(QString summary); void logoutUserSignal(); void updateUserSignal(); - - void createUserSignalFull(PFXHttpRequestWorker* worker); - void createUsersWithArrayInputSignalFull(PFXHttpRequestWorker* worker); - void createUsersWithListInputSignalFull(PFXHttpRequestWorker* worker); - void deleteUserSignalFull(PFXHttpRequestWorker* worker); - void getUserByNameSignalFull(PFXHttpRequestWorker* worker, PFXUser summary); - void loginUserSignalFull(PFXHttpRequestWorker* worker, QString summary); - void logoutUserSignalFull(PFXHttpRequestWorker* worker); - void updateUserSignalFull(PFXHttpRequestWorker* worker); - + + void createUserSignalFull(PFXHttpRequestWorker *worker); + void createUsersWithArrayInputSignalFull(PFXHttpRequestWorker *worker); + void createUsersWithListInputSignalFull(PFXHttpRequestWorker *worker); + void deleteUserSignalFull(PFXHttpRequestWorker *worker); + void getUserByNameSignalFull(PFXHttpRequestWorker *worker, PFXUser summary); + void loginUserSignalFull(PFXHttpRequestWorker *worker, QString summary); + void logoutUserSignalFull(PFXHttpRequestWorker *worker); + void updateUserSignalFull(PFXHttpRequestWorker *worker); + void createUserSignalE(QNetworkReply::NetworkError error_type, QString error_str); void createUsersWithArrayInputSignalE(QNetworkReply::NetworkError error_type, QString error_str); void createUsersWithListInputSignalE(QNetworkReply::NetworkError error_type, QString error_str); @@ -90,17 +91,16 @@ signals: void loginUserSignalE(QString summary, QNetworkReply::NetworkError error_type, QString error_str); void logoutUserSignalE(QNetworkReply::NetworkError error_type, QString error_str); void updateUserSignalE(QNetworkReply::NetworkError error_type, QString error_str); - - void createUserSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void createUsersWithArrayInputSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void createUsersWithListInputSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void deleteUserSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void getUserByNameSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void loginUserSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void logoutUserSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - void updateUserSignalEFull(PFXHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString error_str); - + + void createUserSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void createUsersWithArrayInputSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void createUsersWithListInputSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void deleteUserSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void getUserByNameSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void loginUserSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void logoutUserSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); + void updateUserSignalEFull(PFXHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str); }; -} +} // namespace test_namespace #endif From e09417d25cf71d1f4720022f969130329f4322d8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 27 Nov 2019 15:48:42 +0800 Subject: [PATCH 25/96] add SIE (#4618) --- README.md | 1 + website/dynamic/users.yml | 5 +++++ website/static/img/companies/sie.jpeg | Bin 0 -> 42722 bytes 3 files changed, 6 insertions(+) create mode 100644 website/static/img/companies/sie.jpeg diff --git a/README.md b/README.md index 6b6ce564e3c..fafa4f42fcc 100644 --- a/README.md +++ b/README.md @@ -614,6 +614,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [RedHat](https://www.redhat.com) - [RepreZen API Studio](https://www.reprezen.com/swagger-openapi-code-generation-api-first-microservices-enterprise-development) - [REST United](https://restunited.com) +- [Sony Interactive Entertainment](https://www.sie.com/en/index.html) - [Stingray](http://www.stingray.com) - [Suva](https://www.suva.ch/) - [Telstra](https://dev.telstra.com) diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index 53b0e228f8a..af63e40d2f4 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -258,6 +258,11 @@ image: "img/companies/rest-united.png" infoLink: "https://restunited.com/" pinned: false +- + caption: "Sony Interactive Entertainment" + image: "img/companies/sie.jpeg" + infoLink: "https://www.sie.com/en/index.html" + pinned: false - caption: Stingray image: "img/companies/stingray.png" diff --git a/website/static/img/companies/sie.jpeg b/website/static/img/companies/sie.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..514601a369e3a0118cdfcda936b6c4be49a819b5 GIT binary patch literal 42722 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 Date: Wed, 27 Nov 2019 10:15:47 +0100 Subject: [PATCH 26/96] C additional properties fix #4289 (#4349) * Correction to C support for additional_properties * TAB to SPACE in one file --- .../resources/C-libcurl/model-body.mustache | 108 +- .../petstore/c/.openapi-generator/VERSION | 2 +- samples/client/petstore/c/CMakeLists.txt | 45 +- samples/client/petstore/c/api/PetAPI.c | 1027 ++-- samples/client/petstore/c/api/PetAPI.h | 28 +- samples/client/petstore/c/api/StoreAPI.c | 441 +- samples/client/petstore/c/api/StoreAPI.h | 14 +- samples/client/petstore/c/api/UserAPI.c | 886 ++-- samples/client/petstore/c/api/UserAPI.h | 26 +- samples/client/petstore/c/external/cJSON.c | 4333 +++++++++-------- samples/client/petstore/c/external/cJSON.h | 282 +- samples/client/petstore/c/include/apiClient.h | 25 +- .../client/petstore/c/include/keyValuePair.h | 6 +- samples/client/petstore/c/include/list.h | 41 +- .../client/petstore/c/model/api_response.c | 152 +- .../client/petstore/c/model/api_response.h | 14 +- samples/client/petstore/c/model/category.c | 111 +- samples/client/petstore/c/model/category.h | 11 +- samples/client/petstore/c/model/object.c | 22 +- samples/client/petstore/c/model/object.h | 2 +- samples/client/petstore/c/model/order.c | 288 +- samples/client/petstore/c/model/order.h | 30 +- samples/client/petstore/c/model/pet.c | 422 +- samples/client/petstore/c/model/pet.h | 30 +- samples/client/petstore/c/model/tag.c | 109 +- samples/client/petstore/c/model/tag.h | 11 +- samples/client/petstore/c/model/user.c | 331 +- samples/client/petstore/c/model/user.h | 30 +- samples/client/petstore/c/src/apiClient.c | 743 ++- samples/client/petstore/c/src/apiKey.c | 10 +- samples/client/petstore/c/src/list.c | 212 +- 31 files changed, 4959 insertions(+), 4833 deletions(-) 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 eafb8a326a8..c53d1c36cf4 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 @@ -189,15 +189,15 @@ return 0; {{/isContainer}} {{/vars}} ) { - {{classname}}_t *{{classname}}_local_var = malloc(sizeof({{classname}}_t)); + {{classname}}_t *{{classname}}_local_var = malloc(sizeof({{classname}}_t)); if (!{{classname}}_local_var) { return NULL; } - {{#vars}} - {{classname}}_local_var->{{{baseName}}} = {{{baseName}}}; - {{/vars}} + {{#vars}} + {{classname}}_local_var->{{{baseName}}} = {{{baseName}}}; + {{/vars}} - return {{classname}}_local_var; + return {{classname}}_local_var; } @@ -241,36 +241,36 @@ void {{classname}}_free({{classname}}_t *{{classname}}) { {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - list_ForEach(listEntry, {{classname}}->{{baseName}}) { - free(listEntry->data); - } - list_free({{classname}}->{{baseName}}); + list_ForEach(listEntry, {{classname}}->{{baseName}}) { + free(listEntry->data); + } + list_free({{classname}}->{{baseName}}); {{/isPrimitiveType}} {{^isPrimitiveType}} - list_ForEach(listEntry, {{classname}}->{{baseName}}) { - {{complexType}}_free(listEntry->data); - } - list_free({{classname}}->{{baseName}}); + list_ForEach(listEntry, {{classname}}->{{baseName}}) { + {{complexType}}_free(listEntry->data); + } + list_free({{classname}}->{{baseName}}); {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - list_ForEach(listEntry, {{classname}}->{{baseName}}) { - keyValuePair_t *localMapKeyPair = (keyValuePair_t*) listEntry->data; + list_ForEach(listEntry, {{classname}}->{{baseName}}) { + keyValuePair_t *localKeyValue = (keyValuePair_t*) listEntry->data; free (localKeyValue->key); free (localKeyValue->value); - } - list_free({{classname}}->{{baseName}}); + } + list_free({{classname}}->{{baseName}}); {{/isMapContainer}} {{/isContainer}} {{/vars}} - free({{classname}}); + free({{classname}}); } cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { - cJSON *item = cJSON_CreateObject(); - {{#vars}} + cJSON *item = cJSON_CreateObject(); + {{#vars}} - // {{{classname}}}->{{{baseName}}} + // {{{classname}}}->{{{baseName}}} {{#required}} {{^isEnum}} if (!{{{classname}}}->{{{baseName}}}) { @@ -279,8 +279,8 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { {{/isEnum}} {{/required}} {{^required}}{{^isEnum}}if({{{classname}}}->{{{baseName}}}) { {{/isEnum}}{{/required}} - {{^isContainer}} - {{#isPrimitiveType}} + {{^isContainer}} + {{#isPrimitiveType}} {{#isNumeric}} if(cJSON_AddNumberToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { goto fail; //Numeric @@ -328,8 +328,8 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { goto fail; //Date-Time } {{/isDateTime}} - {{/isPrimitiveType}} - {{^isPrimitiveType}} + {{/isPrimitiveType}} + {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} cJSON *{{{baseName}}}_enum_local_JSON = {{datatypeWithEnum}}_convertToJSON({{{classname}}}->{{{baseName}}}); @@ -372,17 +372,17 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { goto fail; } {{/isFreeFormObject}} - {{/isPrimitiveType}} - {{/isContainer}} - {{#isContainer}} - {{#isListContainer}} - {{#isPrimitiveType}} - cJSON *{{{name}}} = cJSON_AddArrayToObject(item, "{{{baseName}}}"); - if({{{name}}} == NULL) { - goto fail; //primitive container - } + {{/isPrimitiveType}} + {{/isContainer}} + {{#isContainer}} + {{#isListContainer}} + {{#isPrimitiveType}} + cJSON *{{{name}}} = cJSON_AddArrayToObject(item, "{{{baseName}}}"); + if({{{name}}} == NULL) { + goto fail; //primitive container + } - listEntry_t *{{{name}}}ListEntry; + listEntry_t *{{{name}}}ListEntry; list_ForEach({{{name}}}ListEntry, {{{classname}}}->{{{baseName}}}) { {{#items}} {{#isString}} @@ -399,8 +399,8 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { {{/isString}} {{/items}} } - {{/isPrimitiveType}} - {{^isPrimitiveType}} + {{/isPrimitiveType}} + {{^isPrimitiveType}} cJSON *{{{baseName}}} = cJSON_AddArrayToObject(item, "{{{baseName}}}"); if({{{baseName}}} == NULL) { goto fail; //nonprimitive container @@ -416,15 +416,15 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { cJSON_AddItemToArray({{{baseName}}}, itemLocal); } } - {{/isPrimitiveType}} - {{/isListContainer}} - {{#isMapContainer}} - cJSON *{{{baseName}}} = cJSON_AddObjectToObject(item, "{{{baseName}}}"); - if({{{baseName}}} == NULL) { - goto fail; //primitive map container - } + {{/isPrimitiveType}} + {{/isListContainer}} + {{#isMapContainer}} + cJSON *{{{baseName}}} = cJSON_AddObjectToObject(item, "{{{baseName}}}"); + if({{{baseName}}} == NULL) { + goto fail; //primitive map container + } cJSON *localMapObject = cJSON_CreateObject(); //Memory free to be implemented in user code - listEntry_t *{{{baseName}}}ListEntry; + listEntry_t *{{{baseName}}}ListEntry; if ({{{classname}}}->{{{baseName}}}) { list_ForEach({{{baseName}}}ListEntry, {{{classname}}}->{{{baseName}}}) { keyValuePair_t *localKeyValue = (keyValuePair_t*){{{baseName}}}ListEntry->data; @@ -445,19 +445,19 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { cJSON_AddItemToObject({{{baseName}}},"", localMapObject); } } - {{/isMapContainer}} - {{/isContainer}} - {{^required}} + {{/isMapContainer}} + {{/isContainer}} + {{^required}} {{^isEnum}} } {{/isEnum}} - {{/required}} + {{/required}} {{/vars}} - return item; + return item; fail: - if (item) { + if (item) { cJSON_Delete(item); } - return NULL; + return NULL; } {{classname}}_t *{{classname}}_parseFromJSON(cJSON *{{classname}}JSON){ @@ -526,8 +526,8 @@ fail: char* decoded = base64decode({{{baseName}}}->valuestring, strlen({{{baseName}}}->valuestring)); decoded_str_{{{baseName}}}->data = malloc(strlen(decoded) - 1); if (!decoded_str_{{{baseName}}}->data) { - goto end; - } + goto end; + } memcpy(decoded_str_{{{baseName}}}->data,decoded,(strlen(decoded)-1)); decoded_str_{{{baseName}}}->len = strlen(decoded) - 1; {{/isBinary}} diff --git a/samples/client/petstore/c/.openapi-generator/VERSION b/samples/client/petstore/c/.openapi-generator/VERSION index d168f1d8bda..e4955748d3e 100644 --- a/samples/client/petstore/c/.openapi-generator/VERSION +++ b/samples/client/petstore/c/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.1-SNAPSHOT \ No newline at end of file +4.2.2-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/c/CMakeLists.txt b/samples/client/petstore/c/CMakeLists.txt index 1de992031da..e685f785dde 100644 --- a/samples/client/petstore/c/CMakeLists.txt +++ b/samples/client/petstore/c/CMakeLists.txt @@ -63,27 +63,28 @@ install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX}) set(SRCS "") set(HDRS "") -# This section shows how to use the above compiled libary to compile the source files -# set source files -set(SRCS - unit-tests/manual-PetAPI.c - unit-tests/manual-StoreAPI.c - unit-tests/manual-UserAPI.c - unit-tests/manual-order.c - unit-tests/manual-user.c) -#set header files -set(HDRS -) +## This section shows how to use the above compiled libary to compile the source files +## set source files +#set(SRCS +# unit-tests/manual-PetAPI.c +# unit-tests/manual-StoreAPI.c +# unit-tests/manual-UserAPI.c +# unit-tests/manual-order.c +# unit-tests/manual-user.c) -# loop over all files in SRCS variable -foreach(SOURCE_FILE ${SRCS}) - # Get only the file name from the file as add_executable doesnot support executable with slash("/") - get_filename_component(FILE_NAME_ONLY ${SOURCE_FILE} NAME_WE) - # Remove .c from the file name and set it as executable name - string( REPLACE ".c" "" EXECUTABLE_FILE ${FILE_NAME_ONLY}) - # Add executable for every source file in SRCS - add_executable(unit-${EXECUTABLE_FILE} ${SOURCE_FILE}) - # Link above created libary to executable and dependent libary curl - target_link_libraries(unit-${EXECUTABLE_FILE} ${CURL_LIBRARIES} ${pkgName} ) -endforeach(SOURCE_FILE ${SRCS}) +##set header files +#set(HDRS +#) + +## loop over all files in SRCS variable +#foreach(SOURCE_FILE ${SRCS}) +# # Get only the file name from the file as add_executable doesnot support executable with slash("/") +# get_filename_component(FILE_NAME_ONLY ${SOURCE_FILE} NAME_WE) +# # Remove .c from the file name and set it as executable name +# string( REPLACE ".c" "" EXECUTABLE_FILE ${FILE_NAME_ONLY}) +# # Add executable for every source file in SRCS +# add_executable(unit-${EXECUTABLE_FILE} ${SOURCE_FILE}) +# # Link above created libary to executable and dependent libary curl +# target_link_libraries(unit-${EXECUTABLE_FILE} ${CURL_LIBRARIES} ${pkgName} ) +#endforeach(SOURCE_FILE ${SRCS}) diff --git a/samples/client/petstore/c/api/PetAPI.c b/samples/client/petstore/c/api/PetAPI.c index cc7bc440c84..59383928642 100644 --- a/samples/client/petstore/c/api/PetAPI.c +++ b/samples/client/petstore/c/api/PetAPI.c @@ -6,630 +6,643 @@ #define MAX_BUFFER_LENGTH 4096 #define intToStr(dst, src) \ - do { \ - char dst[256]; \ - snprintf(dst, 256, "%ld", (long int) (src)); \ - } while(0) + do {\ + char dst[256];\ + snprintf(dst, 256, "%ld", (long int)(src));\ +}while(0) // Add a new pet to the store // -void PetAPI_addPet(apiClient_t *apiClient, pet_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = list_create(); - char *localVarBodyParameters = NULL; +void +PetAPI_addPet(apiClient_t *apiClient ,pet_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = list_create(); + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet"); + // create the path + long sizeOfPath = strlen("/pet")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet"); - // Body Param - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - // string - localVarSingleItemJSON_body = pet_convertToJSON(body); - localVarBodyParameters = - cJSON_Print(localVarSingleItemJSON_body); - } - list_addElement(localVarContentType, "application/json"); // consumes - list_addElement(localVarContentType, "application/xml"); // consumes - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + // Body Param + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + //string + localVarSingleItemJSON_body = pet_convertToJSON(body); + localVarBodyParameters = cJSON_Print(localVarSingleItemJSON_body); + } + list_addElement(localVarContentType,"application/json"); //consumes + list_addElement(localVarContentType,"application/xml"); //consumes + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 405) { - printf("%s\n", "Invalid input"); - } - // No return type + if (apiClient->response_code == 405) { + printf("%s\n","Invalid input"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + list_free(localVarContentType); + free(localVarPath); + cJSON_Delete(localVarSingleItemJSON_body); + free(localVarBodyParameters); - - - - list_free(localVarContentType); - free(localVarPath); - cJSON_Delete(localVarSingleItemJSON_body); - free(localVarBodyParameters); } // Deletes a pet // -void PetAPI_deletePet(apiClient_t *apiClient, long petId, char *api_key) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = list_create(); - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +PetAPI_deletePet(apiClient_t *apiClient ,long petId ,char * api_key) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = list_create(); + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet/{petId}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet/{petId}"); + // create the path + long sizeOfPath = strlen("/pet/{petId}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet/{petId}"); - // Path Params - long sizeOfPathParams_petId = sizeof(petId) + 3 + strlen("{ petId }"); - if(petId == 0) { - goto end; - } - char *localVarToReplace_petId = malloc(sizeOfPathParams_petId); - snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", - "petId"); + // Path Params + long sizeOfPathParams_petId = sizeof(petId)+3 + strlen("{ petId }"); + if(petId == 0){ + goto end; + } + char* localVarToReplace_petId = malloc(sizeOfPathParams_petId); + snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", "petId"); - char localVarBuff_petId[256]; - intToStr(localVarBuff_petId, petId); + char localVarBuff_petId[256]; + intToStr(localVarBuff_petId, petId); - localVarPath = strReplace(localVarPath, localVarToReplace_petId, - localVarBuff_petId); + localVarPath = strReplace(localVarPath, localVarToReplace_petId, localVarBuff_petId); - // header parameters - char *keyHeader_api_key; - char *valueHeader_api_key; - keyValuePair_t *keyPairHeader_api_key = 0; - if(api_key) { - keyHeader_api_key = strdup("api_key"); - valueHeader_api_key = strdup((api_key)); - keyPairHeader_api_key = keyValuePair_create(keyHeader_api_key, - valueHeader_api_key); - list_addElement(localVarHeaderParameters, - keyPairHeader_api_key); - } + // header parameters + char *keyHeader_api_key; + char * valueHeader_api_key; + keyValuePair_t *keyPairHeader_api_key = 0; + if (api_key) { + keyHeader_api_key = strdup("api_key"); + valueHeader_api_key = strdup((api_key)); + keyPairHeader_api_key = keyValuePair_create(keyHeader_api_key, valueHeader_api_key); + list_addElement(localVarHeaderParameters,keyPairHeader_api_key); + } - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "DELETE"); + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "DELETE"); - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid pet value"); - } - // No return type + if (apiClient->response_code == 400) { + printf("%s\n","Invalid pet value"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + list_free(localVarHeaderParameters); + + + + free(localVarPath); + free(localVarToReplace_petId); + free(keyHeader_api_key); + free(valueHeader_api_key); + free(keyPairHeader_api_key); - list_free(localVarHeaderParameters); - - - - free(localVarPath); - free(localVarToReplace_petId); - free(keyHeader_api_key); - free(valueHeader_api_key); - free(keyPairHeader_api_key); } // Finds Pets by status // // Multiple status values can be provided with comma separated strings // -list_t *PetAPI_findPetsByStatus(apiClient_t *apiClient, list_t *status) { - list_t *localVarQueryParameters = list_create(); - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +list_t* +PetAPI_findPetsByStatus(apiClient_t *apiClient ,list_t * status) +{ + list_t *localVarQueryParameters = list_create(); + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet/findByStatus") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet/findByStatus"); + // create the path + long sizeOfPath = strlen("/pet/findByStatus")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet/findByStatus"); - // query parameters - if(status) { - list_addElement(localVarQueryParameters, status); - } - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + // query parameters + if (status) + { + list_addElement(localVarQueryParameters,status); + } + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid status value"); - } - cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - if(!cJSON_IsArray(PetAPIlocalVarJSON)) { - return 0; // nonprimitive container - } - list_t *elementToReturn = list_create(); - cJSON *VarJSON; - cJSON_ArrayForEach(VarJSON, PetAPIlocalVarJSON) - { - if(!cJSON_IsObject(VarJSON)) { - // return 0; - } - char *localVarJSONToChar = cJSON_Print(VarJSON); - list_addElement(elementToReturn, localVarJSONToChar); - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid status value"); + } + cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + if(!cJSON_IsArray(PetAPIlocalVarJSON)) { + return 0;//nonprimitive container + } + list_t *elementToReturn = list_create(); + cJSON *VarJSON; + cJSON_ArrayForEach(VarJSON, PetAPIlocalVarJSON) + { + if(!cJSON_IsObject(VarJSON)) + { + // return 0; + } + char *localVarJSONToChar = cJSON_Print(VarJSON); + list_addElement(elementToReturn , localVarJSONToChar); + } - cJSON_Delete(PetAPIlocalVarJSON); - cJSON_Delete(VarJSON); - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - list_free(localVarQueryParameters); - - - list_free(localVarHeaderType); - - free(localVarPath); - return elementToReturn; + cJSON_Delete( PetAPIlocalVarJSON); + cJSON_Delete( VarJSON); + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + list_free(localVarQueryParameters); + + + list_free(localVarHeaderType); + + free(localVarPath); + return elementToReturn; end: - return NULL; + return NULL; + } // Finds Pets by tags // // Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. // -list_t *PetAPI_findPetsByTags(apiClient_t *apiClient, list_t *tags) { - list_t *localVarQueryParameters = list_create(); - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +list_t* +PetAPI_findPetsByTags(apiClient_t *apiClient ,list_t * tags) +{ + list_t *localVarQueryParameters = list_create(); + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet/findByTags") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet/findByTags"); + // create the path + long sizeOfPath = strlen("/pet/findByTags")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet/findByTags"); - // query parameters - if(tags) { - list_addElement(localVarQueryParameters, tags); - } - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + // query parameters + if (tags) + { + list_addElement(localVarQueryParameters,tags); + } + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid tag value"); - } - cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - if(!cJSON_IsArray(PetAPIlocalVarJSON)) { - return 0; // nonprimitive container - } - list_t *elementToReturn = list_create(); - cJSON *VarJSON; - cJSON_ArrayForEach(VarJSON, PetAPIlocalVarJSON) - { - if(!cJSON_IsObject(VarJSON)) { - // return 0; - } - char *localVarJSONToChar = cJSON_Print(VarJSON); - list_addElement(elementToReturn, localVarJSONToChar); - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid tag value"); + } + cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + if(!cJSON_IsArray(PetAPIlocalVarJSON)) { + return 0;//nonprimitive container + } + list_t *elementToReturn = list_create(); + cJSON *VarJSON; + cJSON_ArrayForEach(VarJSON, PetAPIlocalVarJSON) + { + if(!cJSON_IsObject(VarJSON)) + { + // return 0; + } + char *localVarJSONToChar = cJSON_Print(VarJSON); + list_addElement(elementToReturn , localVarJSONToChar); + } - cJSON_Delete(PetAPIlocalVarJSON); - cJSON_Delete(VarJSON); - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - list_free(localVarQueryParameters); - - - list_free(localVarHeaderType); - - free(localVarPath); - return elementToReturn; + cJSON_Delete( PetAPIlocalVarJSON); + cJSON_Delete( VarJSON); + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + list_free(localVarQueryParameters); + + + list_free(localVarHeaderType); + + free(localVarPath); + return elementToReturn; end: - return NULL; + return NULL; + } // Find pet by ID // // Returns a single pet // -pet_t *PetAPI_getPetById(apiClient_t *apiClient, long petId) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +pet_t* +PetAPI_getPetById(apiClient_t *apiClient ,long petId) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet/{petId}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet/{petId}"); + // create the path + long sizeOfPath = strlen("/pet/{petId}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet/{petId}"); - // Path Params - long sizeOfPathParams_petId = sizeof(petId) + 3 + strlen("{ petId }"); - if(petId == 0) { - goto end; - } - char *localVarToReplace_petId = malloc(sizeOfPathParams_petId); - snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", - "petId"); + // Path Params + long sizeOfPathParams_petId = sizeof(petId)+3 + strlen("{ petId }"); + if(petId == 0){ + goto end; + } + char* localVarToReplace_petId = malloc(sizeOfPathParams_petId); + snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", "petId"); - char localVarBuff_petId[256]; - intToStr(localVarBuff_petId, petId); + char localVarBuff_petId[256]; + intToStr(localVarBuff_petId, petId); - localVarPath = strReplace(localVarPath, localVarToReplace_petId, - localVarBuff_petId); + localVarPath = strReplace(localVarPath, localVarToReplace_petId, localVarBuff_petId); - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid ID supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "Pet not found"); - } - // nonprimitive not container - cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - pet_t *elementToReturn = pet_parseFromJSON(PetAPIlocalVarJSON); - cJSON_Delete(PetAPIlocalVarJSON); - if(elementToReturn == NULL) { - // return 0; - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid ID supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","Pet not found"); + } + //nonprimitive not container + cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + pet_t *elementToReturn = pet_parseFromJSON(PetAPIlocalVarJSON); + cJSON_Delete(PetAPIlocalVarJSON); + if(elementToReturn == NULL) { + // return 0; + } - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - - - - list_free(localVarHeaderType); - - free(localVarPath); - free(localVarToReplace_petId); - return elementToReturn; + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + list_free(localVarHeaderType); + + free(localVarPath); + free(localVarToReplace_petId); + return elementToReturn; end: - return NULL; + return NULL; + } // Update an existing pet // -void PetAPI_updatePet(apiClient_t *apiClient, pet_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = list_create(); - char *localVarBodyParameters = NULL; +void +PetAPI_updatePet(apiClient_t *apiClient ,pet_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = list_create(); + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet"); + // create the path + long sizeOfPath = strlen("/pet")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet"); - // Body Param - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - // string - localVarSingleItemJSON_body = pet_convertToJSON(body); - localVarBodyParameters = - cJSON_Print(localVarSingleItemJSON_body); - } - list_addElement(localVarContentType, "application/json"); // consumes - list_addElement(localVarContentType, "application/xml"); // consumes - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "PUT"); + // Body Param + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + //string + localVarSingleItemJSON_body = pet_convertToJSON(body); + localVarBodyParameters = cJSON_Print(localVarSingleItemJSON_body); + } + list_addElement(localVarContentType,"application/json"); //consumes + list_addElement(localVarContentType,"application/xml"); //consumes + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "PUT"); - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid ID supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "Pet not found"); - } - if(apiClient->response_code == 405) { - printf("%s\n", "Validation exception"); - } - // No return type + if (apiClient->response_code == 400) { + printf("%s\n","Invalid ID supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","Pet not found"); + } + if (apiClient->response_code == 405) { + printf("%s\n","Validation exception"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + list_free(localVarContentType); + free(localVarPath); + cJSON_Delete(localVarSingleItemJSON_body); + free(localVarBodyParameters); - - - - list_free(localVarContentType); - free(localVarPath); - cJSON_Delete(localVarSingleItemJSON_body); - free(localVarBodyParameters); } // Updates a pet in the store with form data // -void PetAPI_updatePetWithForm(apiClient_t *apiClient, long petId, char *name, - char *status) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = list_create(); - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = list_create(); - char *localVarBodyParameters = NULL; +void +PetAPI_updatePetWithForm(apiClient_t *apiClient ,long petId ,char * name ,char * status) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = list_create(); + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = list_create(); + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet/{petId}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet/{petId}"); + // create the path + long sizeOfPath = strlen("/pet/{petId}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet/{petId}"); - // Path Params - long sizeOfPathParams_petId = sizeof(petId) + 3 + strlen("{ petId }"); - if(petId == 0) { - goto end; - } - char *localVarToReplace_petId = malloc(sizeOfPathParams_petId); - snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", - "petId"); + // Path Params + long sizeOfPathParams_petId = sizeof(petId)+3 + strlen("{ petId }"); + if(petId == 0){ + goto end; + } + char* localVarToReplace_petId = malloc(sizeOfPathParams_petId); + snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", "petId"); - char localVarBuff_petId[256]; - intToStr(localVarBuff_petId, petId); + char localVarBuff_petId[256]; + intToStr(localVarBuff_petId, petId); - localVarPath = strReplace(localVarPath, localVarToReplace_petId, - localVarBuff_petId); + localVarPath = strReplace(localVarPath, localVarToReplace_petId, localVarBuff_petId); - // form parameters - char *keyForm_name; - char *valueForm_name; - keyValuePair_t *keyPairForm_name = 0; - if(name != NULL) { - keyForm_name = strdup("name"); - valueForm_name = strdup((name)); - keyPairForm_name = keyValuePair_create(keyForm_name, - valueForm_name); - list_addElement(localVarFormParameters, keyPairForm_name); - } + // form parameters + char *keyForm_name; + char * valueForm_name; + keyValuePair_t *keyPairForm_name = 0; + if (name != NULL) + { + keyForm_name = strdup("name"); + valueForm_name = strdup((name)); + keyPairForm_name = keyValuePair_create(keyForm_name,valueForm_name); + list_addElement(localVarFormParameters,keyPairForm_name); + } - // form parameters - char *keyForm_status; - char *valueForm_status; - keyValuePair_t *keyPairForm_status = 0; - if(status != NULL) { - keyForm_status = strdup("status"); - valueForm_status = strdup((status)); - keyPairForm_status = keyValuePair_create(keyForm_status, - valueForm_status); - list_addElement(localVarFormParameters, keyPairForm_status); - } - list_addElement(localVarContentType, - "application/x-www-form-urlencoded"); // consumes - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + // form parameters + char *keyForm_status; + char * valueForm_status; + keyValuePair_t *keyPairForm_status = 0; + if (status != NULL) + { + keyForm_status = strdup("status"); + valueForm_status = strdup((status)); + keyPairForm_status = keyValuePair_create(keyForm_status,valueForm_status); + list_addElement(localVarFormParameters,keyPairForm_status); + } + list_addElement(localVarContentType,"application/x-www-form-urlencoded"); //consumes + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 405) { - printf("%s\n", "Invalid input"); - } - // No return type + if (apiClient->response_code == 405) { + printf("%s\n","Invalid input"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + list_free(localVarFormParameters); + + list_free(localVarContentType); + free(localVarPath); + free(localVarToReplace_petId); + free(keyForm_name); + free(valueForm_name); + keyValuePair_free(keyPairForm_name); + free(keyForm_status); + free(valueForm_status); + keyValuePair_free(keyPairForm_status); - - list_free(localVarFormParameters); - - list_free(localVarContentType); - free(localVarPath); - free(localVarToReplace_petId); - free(keyForm_name); - free(valueForm_name); - keyValuePair_free(keyPairForm_name); - free(keyForm_status); - free(valueForm_status); - keyValuePair_free(keyPairForm_status); } // uploads an image // -api_response_t *PetAPI_uploadFile(apiClient_t *apiClient, long petId, - char *additionalMetadata, binary_t *file) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = list_create(); - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = list_create(); - char *localVarBodyParameters = NULL; +api_response_t* +PetAPI_uploadFile(apiClient_t *apiClient ,long petId ,char * additionalMetadata ,binary_t* file) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = list_create(); + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = list_create(); + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/pet/{petId}/uploadImage") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/pet/{petId}/uploadImage"); + // create the path + long sizeOfPath = strlen("/pet/{petId}/uploadImage")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/pet/{petId}/uploadImage"); - // Path Params - long sizeOfPathParams_petId = sizeof(petId) + 3 + strlen("{ petId }"); - if(petId == 0) { - goto end; - } - char *localVarToReplace_petId = malloc(sizeOfPathParams_petId); - snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", - "petId"); + // Path Params + long sizeOfPathParams_petId = sizeof(petId)+3 + strlen("{ petId }"); + if(petId == 0){ + goto end; + } + char* localVarToReplace_petId = malloc(sizeOfPathParams_petId); + snprintf(localVarToReplace_petId, sizeOfPathParams_petId, "{%s}", "petId"); - char localVarBuff_petId[256]; - intToStr(localVarBuff_petId, petId); + char localVarBuff_petId[256]; + intToStr(localVarBuff_petId, petId); - localVarPath = strReplace(localVarPath, localVarToReplace_petId, - localVarBuff_petId); + localVarPath = strReplace(localVarPath, localVarToReplace_petId, localVarBuff_petId); - // form parameters - char *keyForm_additionalMetadata; - char *valueForm_additionalMetadata; - keyValuePair_t *keyPairForm_additionalMetadata = 0; - if(additionalMetadata != NULL) { - keyForm_additionalMetadata = strdup("additionalMetadata"); - valueForm_additionalMetadata = strdup((additionalMetadata)); - keyPairForm_additionalMetadata = keyValuePair_create( - keyForm_additionalMetadata, - valueForm_additionalMetadata); - list_addElement(localVarFormParameters, - keyPairForm_additionalMetadata); - } + // form parameters + char *keyForm_additionalMetadata; + char * valueForm_additionalMetadata; + keyValuePair_t *keyPairForm_additionalMetadata = 0; + if (additionalMetadata != NULL) + { + keyForm_additionalMetadata = strdup("additionalMetadata"); + valueForm_additionalMetadata = strdup((additionalMetadata)); + keyPairForm_additionalMetadata = keyValuePair_create(keyForm_additionalMetadata,valueForm_additionalMetadata); + list_addElement(localVarFormParameters,keyPairForm_additionalMetadata); + } - // form parameters - char *keyForm_file; - binary_t *valueForm_file; - keyValuePair_t *keyPairForm_file = 0; - if(file != NULL) { - keyForm_file = strdup("file"); - valueForm_file = file; - keyPairForm_file = keyValuePair_create(keyForm_file, - &valueForm_file); - list_addElement(localVarFormParameters, keyPairForm_file); // file adding - } - list_addElement(localVarHeaderType, "application/json"); // produces - list_addElement(localVarContentType, "multipart/form-data"); // consumes - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + // form parameters + char *keyForm_file; + binary_t* valueForm_file; + keyValuePair_t *keyPairForm_file = 0; + if (file != NULL) + { + keyForm_file = strdup("file"); + valueForm_file = file; + keyPairForm_file = keyValuePair_create(keyForm_file, &valueForm_file); + list_addElement(localVarFormParameters,keyPairForm_file); //file adding + } + list_addElement(localVarHeaderType,"application/json"); //produces + list_addElement(localVarContentType,"multipart/form-data"); //consumes + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - // nonprimitive not container - cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - api_response_t *elementToReturn = api_response_parseFromJSON( - PetAPIlocalVarJSON); - cJSON_Delete(PetAPIlocalVarJSON); - if(elementToReturn == NULL) { - // return 0; - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + //nonprimitive not container + cJSON *PetAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + api_response_t *elementToReturn = api_response_parseFromJSON(PetAPIlocalVarJSON); + cJSON_Delete(PetAPIlocalVarJSON); + if(elementToReturn == NULL) { + // return 0; + } - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - - - list_free(localVarFormParameters); - list_free(localVarHeaderType); - list_free(localVarContentType); - free(localVarPath); - free(localVarToReplace_petId); - free(keyForm_additionalMetadata); - free(valueForm_additionalMetadata); - free(keyPairForm_additionalMetadata); - free(keyForm_file); -// free(fileVar_file->data); -// free(fileVar_file); - free(keyPairForm_file); - return elementToReturn; + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + list_free(localVarFormParameters); + list_free(localVarHeaderType); + list_free(localVarContentType); + free(localVarPath); + free(localVarToReplace_petId); + free(keyForm_additionalMetadata); + free(valueForm_additionalMetadata); + free(keyPairForm_additionalMetadata); + free(keyForm_file); +// free(fileVar_file->data); +// free(fileVar_file); + free(keyPairForm_file); + return elementToReturn; end: - return NULL; + return NULL; + } + diff --git a/samples/client/petstore/c/api/PetAPI.h b/samples/client/petstore/c/api/PetAPI.h index be1693168a1..5cb6c9de2c6 100644 --- a/samples/client/petstore/c/api/PetAPI.h +++ b/samples/client/petstore/c/api/PetAPI.h @@ -10,47 +10,55 @@ // Add a new pet to the store // -void PetAPI_addPet(apiClient_t *apiClient, pet_t *body); +void +PetAPI_addPet(apiClient_t *apiClient ,pet_t * body); // Deletes a pet // -void PetAPI_deletePet(apiClient_t *apiClient, long petId, char *api_key); +void +PetAPI_deletePet(apiClient_t *apiClient ,long petId ,char * api_key); // Finds Pets by status // // Multiple status values can be provided with comma separated strings // -list_t *PetAPI_findPetsByStatus(apiClient_t *apiClient, list_t *status); +list_t* +PetAPI_findPetsByStatus(apiClient_t *apiClient ,list_t * status); // Finds Pets by tags // // Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. // -list_t *PetAPI_findPetsByTags(apiClient_t *apiClient, list_t *tags); +list_t* +PetAPI_findPetsByTags(apiClient_t *apiClient ,list_t * tags); // Find pet by ID // // Returns a single pet // -pet_t *PetAPI_getPetById(apiClient_t *apiClient, long petId); +pet_t* +PetAPI_getPetById(apiClient_t *apiClient ,long petId); // Update an existing pet // -void PetAPI_updatePet(apiClient_t *apiClient, pet_t *body); +void +PetAPI_updatePet(apiClient_t *apiClient ,pet_t * body); // Updates a pet in the store with form data // -void PetAPI_updatePetWithForm(apiClient_t *apiClient, long petId, char *name, - char *status); +void +PetAPI_updatePetWithForm(apiClient_t *apiClient ,long petId ,char * name ,char * status); // uploads an image // -api_response_t *PetAPI_uploadFile(apiClient_t *apiClient, long petId, - char *additionalMetadata, binary_t *file); +api_response_t* +PetAPI_uploadFile(apiClient_t *apiClient ,long petId ,char * additionalMetadata ,binary_t* file); + + diff --git a/samples/client/petstore/c/api/StoreAPI.c b/samples/client/petstore/c/api/StoreAPI.c index 11dabde964f..0a4a3a37fed 100644 --- a/samples/client/petstore/c/api/StoreAPI.c +++ b/samples/client/petstore/c/api/StoreAPI.c @@ -6,278 +6,283 @@ #define MAX_BUFFER_LENGTH 4096 #define intToStr(dst, src) \ - do { \ - char dst[256]; \ - snprintf(dst, 256, "%ld", (long int) (src)); \ - } while(0) + do {\ + char dst[256];\ + snprintf(dst, 256, "%ld", (long int)(src));\ +}while(0) // Delete purchase order by ID // // For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors // -void StoreAPI_deleteOrder(apiClient_t *apiClient, char *orderId) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +StoreAPI_deleteOrder(apiClient_t *apiClient ,char * orderId) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/store/order/{orderId}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/store/order/{orderId}"); + // create the path + long sizeOfPath = strlen("/store/order/{orderId}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/store/order/{orderId}"); - // Path Params - long sizeOfPathParams_orderId = strlen(orderId) + 3 + strlen( - "{ orderId }"); - if(orderId == NULL) { - goto end; - } - char *localVarToReplace_orderId = malloc(sizeOfPathParams_orderId); - sprintf(localVarToReplace_orderId, "{%s}", "orderId"); + // Path Params + long sizeOfPathParams_orderId = strlen(orderId)+3 + strlen("{ orderId }"); + if(orderId == NULL) { + goto end; + } + char* localVarToReplace_orderId = malloc(sizeOfPathParams_orderId); + sprintf(localVarToReplace_orderId, "{%s}", "orderId"); - localVarPath = strReplace(localVarPath, localVarToReplace_orderId, - orderId); + localVarPath = strReplace(localVarPath, localVarToReplace_orderId, orderId); - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "DELETE"); + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "DELETE"); - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid ID supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "Order not found"); - } - // No return type + if (apiClient->response_code == 400) { + printf("%s\n","Invalid ID supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","Order not found"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); + free(localVarToReplace_orderId); - - - - - free(localVarPath); - free(localVarToReplace_orderId); } // Returns pet inventories by status // // Returns a map of status codes to quantities // -list_t *StoreAPI_getInventory(apiClient_t *apiClient) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +list_t* +StoreAPI_getInventory(apiClient_t *apiClient) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/store/inventory") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/store/inventory"); + // create the path + long sizeOfPath = strlen("/store/inventory")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/store/inventory"); - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - // primitive reutrn type not simple - cJSON *localVarJSON = cJSON_Parse(apiClient->dataReceived); - cJSON *VarJSON; - list_t *elementToReturn = list_create(); - cJSON_ArrayForEach(VarJSON, localVarJSON) { - keyValuePair_t *keyPair = - keyValuePair_create(strdup( - VarJSON->string), cJSON_Print( - VarJSON)); - list_addElement(elementToReturn, keyPair); - } - cJSON_Delete(localVarJSON); + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + //primitive reutrn type not simple + cJSON *localVarJSON = cJSON_Parse(apiClient->dataReceived); + cJSON *VarJSON; + list_t *elementToReturn = list_create(); + cJSON_ArrayForEach(VarJSON, localVarJSON){ + keyValuePair_t *keyPair = keyValuePair_create(strdup(VarJSON->string), cJSON_Print(VarJSON)); + list_addElement(elementToReturn, keyPair); + } + cJSON_Delete(localVarJSON); - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - - - - list_free(localVarHeaderType); - - free(localVarPath); - return elementToReturn; + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + list_free(localVarHeaderType); + + free(localVarPath); + return elementToReturn; end: - return NULL; + return NULL; + } // Find purchase order by ID // // For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions // -order_t *StoreAPI_getOrderById(apiClient_t *apiClient, long orderId) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +order_t* +StoreAPI_getOrderById(apiClient_t *apiClient ,long orderId) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/store/order/{orderId}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/store/order/{orderId}"); + // create the path + long sizeOfPath = strlen("/store/order/{orderId}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/store/order/{orderId}"); - // Path Params - long sizeOfPathParams_orderId = sizeof(orderId) + 3 + strlen( - "{ orderId }"); - if(orderId == 0) { - goto end; - } - char *localVarToReplace_orderId = malloc(sizeOfPathParams_orderId); - snprintf(localVarToReplace_orderId, sizeOfPathParams_orderId, "{%s}", - "orderId"); + // Path Params + long sizeOfPathParams_orderId = sizeof(orderId)+3 + strlen("{ orderId }"); + if(orderId == 0){ + goto end; + } + char* localVarToReplace_orderId = malloc(sizeOfPathParams_orderId); + snprintf(localVarToReplace_orderId, sizeOfPathParams_orderId, "{%s}", "orderId"); - char localVarBuff_orderId[256]; - intToStr(localVarBuff_orderId, orderId); + char localVarBuff_orderId[256]; + intToStr(localVarBuff_orderId, orderId); - localVarPath = strReplace(localVarPath, localVarToReplace_orderId, - localVarBuff_orderId); + localVarPath = strReplace(localVarPath, localVarToReplace_orderId, localVarBuff_orderId); - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid ID supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "Order not found"); - } - // nonprimitive not container - cJSON *StoreAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - order_t *elementToReturn = order_parseFromJSON(StoreAPIlocalVarJSON); - cJSON_Delete(StoreAPIlocalVarJSON); - if(elementToReturn == NULL) { - // return 0; - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid ID supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","Order not found"); + } + //nonprimitive not container + cJSON *StoreAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + order_t *elementToReturn = order_parseFromJSON(StoreAPIlocalVarJSON); + cJSON_Delete(StoreAPIlocalVarJSON); + if(elementToReturn == NULL) { + // return 0; + } - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - - - - list_free(localVarHeaderType); - - free(localVarPath); - free(localVarToReplace_orderId); - return elementToReturn; + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + list_free(localVarHeaderType); + + free(localVarPath); + free(localVarToReplace_orderId); + return elementToReturn; end: - return NULL; + return NULL; + } // Place an order for a pet // -order_t *StoreAPI_placeOrder(apiClient_t *apiClient, order_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +order_t* +StoreAPI_placeOrder(apiClient_t *apiClient ,order_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/store/order") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/store/order"); + // create the path + long sizeOfPath = strlen("/store/order")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/store/order"); - // Body Param - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - // string - localVarSingleItemJSON_body = order_convertToJSON(body); - localVarBodyParameters = - cJSON_Print(localVarSingleItemJSON_body); - } - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + // Body Param + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + //string + localVarSingleItemJSON_body = order_convertToJSON(body); + localVarBodyParameters = cJSON_Print(localVarSingleItemJSON_body); + } + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid Order"); - } - // nonprimitive not container - cJSON *StoreAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - order_t *elementToReturn = order_parseFromJSON(StoreAPIlocalVarJSON); - cJSON_Delete(StoreAPIlocalVarJSON); - if(elementToReturn == NULL) { - // return 0; - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid Order"); + } + //nonprimitive not container + cJSON *StoreAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + order_t *elementToReturn = order_parseFromJSON(StoreAPIlocalVarJSON); + cJSON_Delete(StoreAPIlocalVarJSON); + if(elementToReturn == NULL) { + // return 0; + } - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - - - - list_free(localVarHeaderType); - - free(localVarPath); - cJSON_Delete(localVarSingleItemJSON_body); - free(localVarBodyParameters); - return elementToReturn; + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + list_free(localVarHeaderType); + + free(localVarPath); + cJSON_Delete(localVarSingleItemJSON_body); + free(localVarBodyParameters); + return elementToReturn; end: - return NULL; + return NULL; + } + diff --git a/samples/client/petstore/c/api/StoreAPI.h b/samples/client/petstore/c/api/StoreAPI.h index 81d68528f1f..cba13a977d5 100644 --- a/samples/client/petstore/c/api/StoreAPI.h +++ b/samples/client/petstore/c/api/StoreAPI.h @@ -11,23 +11,29 @@ // // For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors // -void StoreAPI_deleteOrder(apiClient_t *apiClient, char *orderId); +void +StoreAPI_deleteOrder(apiClient_t *apiClient ,char * orderId); // Returns pet inventories by status // // Returns a map of status codes to quantities // -list_t *StoreAPI_getInventory(apiClient_t *apiClient); +list_t* +StoreAPI_getInventory(apiClient_t *apiClient); // Find purchase order by ID // // For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions // -order_t *StoreAPI_getOrderById(apiClient_t *apiClient, long orderId); +order_t* +StoreAPI_getOrderById(apiClient_t *apiClient ,long orderId); // Place an order for a pet // -order_t *StoreAPI_placeOrder(apiClient_t *apiClient, order_t *body); +order_t* +StoreAPI_placeOrder(apiClient_t *apiClient ,order_t * body); + + diff --git a/samples/client/petstore/c/api/UserAPI.c b/samples/client/petstore/c/api/UserAPI.c index 9170293951e..1656b4472bc 100644 --- a/samples/client/petstore/c/api/UserAPI.c +++ b/samples/client/petstore/c/api/UserAPI.c @@ -6,546 +6,566 @@ #define MAX_BUFFER_LENGTH 4096 #define intToStr(dst, src) \ - do { \ - char dst[256]; \ - snprintf(dst, 256, "%ld", (long int) (src)); \ - } while(0) + do {\ + char dst[256];\ + snprintf(dst, 256, "%ld", (long int)(src));\ +}while(0) // Create user // // This can only be done by the logged in user. // -void UserAPI_createUser(apiClient_t *apiClient, user_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +UserAPI_createUser(apiClient_t *apiClient ,user_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user"); + // create the path + long sizeOfPath = strlen("/user")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user"); - // Body Param - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - // string - localVarSingleItemJSON_body = user_convertToJSON(body); - localVarBodyParameters = - cJSON_Print(localVarSingleItemJSON_body); - } - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + // Body Param + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + //string + localVarSingleItemJSON_body = user_convertToJSON(body); + localVarBodyParameters = cJSON_Print(localVarSingleItemJSON_body); + } + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 0) { - printf("%s\n", "successful operation"); - } - // No return type + if (apiClient->response_code == 0) { + printf("%s\n","successful operation"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); + cJSON_Delete(localVarSingleItemJSON_body); + free(localVarBodyParameters); - - - - - free(localVarPath); - cJSON_Delete(localVarSingleItemJSON_body); - free(localVarBodyParameters); } // Creates list of users with given input array // -void UserAPI_createUsersWithArrayInput(apiClient_t *apiClient, list_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +UserAPI_createUsersWithArrayInput(apiClient_t *apiClient ,list_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/createWithArray") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/createWithArray"); + // create the path + long sizeOfPath = strlen("/user/createWithArray")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/createWithArray"); - // Body Param - // notstring - cJSON *localVar_body; - cJSON *localVarItemJSON_body; - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - localVarItemJSON_body = cJSON_CreateObject(); - localVarSingleItemJSON_body = cJSON_AddArrayToObject( - localVarItemJSON_body, "body"); - if(localVarSingleItemJSON_body == NULL) { - // nonprimitive container + // Body Param + //notstring + cJSON *localVar_body; + cJSON *localVarItemJSON_body; + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + localVarItemJSON_body = cJSON_CreateObject(); + localVarSingleItemJSON_body = cJSON_AddArrayToObject(localVarItemJSON_body, "body"); + if (localVarSingleItemJSON_body == NULL) + { + // nonprimitive container - goto end; - } - } + goto end; + } + } - listEntry_t *bodyBodyListEntry; - list_ForEach(bodyBodyListEntry, body) - { - localVar_body = user_convertToJSON(bodyBodyListEntry->data); - if(localVar_body == NULL) { - goto end; - } - cJSON_AddItemToArray(localVarSingleItemJSON_body, - localVar_body); - localVarBodyParameters = cJSON_Print(localVarItemJSON_body); - } - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + listEntry_t *bodyBodyListEntry; + list_ForEach(bodyBodyListEntry, body) + { + localVar_body = user_convertToJSON(bodyBodyListEntry->data); + if(localVar_body == NULL) + { + goto end; + } + cJSON_AddItemToArray(localVarSingleItemJSON_body, localVar_body); + localVarBodyParameters = cJSON_Print(localVarItemJSON_body); + } + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 0) { - printf("%s\n", "successful operation"); - } - // No return type + if (apiClient->response_code == 0) { + printf("%s\n","successful operation"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); + cJSON_Delete(localVarItemJSON_body); + cJSON_Delete(localVarSingleItemJSON_body); + cJSON_Delete(localVar_body); + free(localVarBodyParameters); - - - - - free(localVarPath); - cJSON_Delete(localVarItemJSON_body); - cJSON_Delete(localVarSingleItemJSON_body); - cJSON_Delete(localVar_body); - free(localVarBodyParameters); } // Creates list of users with given input array // -void UserAPI_createUsersWithListInput(apiClient_t *apiClient, list_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +UserAPI_createUsersWithListInput(apiClient_t *apiClient ,list_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/createWithList") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/createWithList"); + // create the path + long sizeOfPath = strlen("/user/createWithList")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/createWithList"); - // Body Param - // notstring - cJSON *localVar_body; - cJSON *localVarItemJSON_body; - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - localVarItemJSON_body = cJSON_CreateObject(); - localVarSingleItemJSON_body = cJSON_AddArrayToObject( - localVarItemJSON_body, "body"); - if(localVarSingleItemJSON_body == NULL) { - // nonprimitive container + // Body Param + //notstring + cJSON *localVar_body; + cJSON *localVarItemJSON_body; + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + localVarItemJSON_body = cJSON_CreateObject(); + localVarSingleItemJSON_body = cJSON_AddArrayToObject(localVarItemJSON_body, "body"); + if (localVarSingleItemJSON_body == NULL) + { + // nonprimitive container - goto end; - } - } + goto end; + } + } - listEntry_t *bodyBodyListEntry; - list_ForEach(bodyBodyListEntry, body) - { - localVar_body = user_convertToJSON(bodyBodyListEntry->data); - if(localVar_body == NULL) { - goto end; - } - cJSON_AddItemToArray(localVarSingleItemJSON_body, - localVar_body); - localVarBodyParameters = cJSON_Print(localVarItemJSON_body); - } - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "POST"); + listEntry_t *bodyBodyListEntry; + list_ForEach(bodyBodyListEntry, body) + { + localVar_body = user_convertToJSON(bodyBodyListEntry->data); + if(localVar_body == NULL) + { + goto end; + } + cJSON_AddItemToArray(localVarSingleItemJSON_body, localVar_body); + localVarBodyParameters = cJSON_Print(localVarItemJSON_body); + } + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "POST"); - if(apiClient->response_code == 0) { - printf("%s\n", "successful operation"); - } - // No return type + if (apiClient->response_code == 0) { + printf("%s\n","successful operation"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); + cJSON_Delete(localVarItemJSON_body); + cJSON_Delete(localVarSingleItemJSON_body); + cJSON_Delete(localVar_body); + free(localVarBodyParameters); - - - - - free(localVarPath); - cJSON_Delete(localVarItemJSON_body); - cJSON_Delete(localVarSingleItemJSON_body); - cJSON_Delete(localVar_body); - free(localVarBodyParameters); } // Delete user // // This can only be done by the logged in user. // -void UserAPI_deleteUser(apiClient_t *apiClient, char *username) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +UserAPI_deleteUser(apiClient_t *apiClient ,char * username) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/{username}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/{username}"); + // create the path + long sizeOfPath = strlen("/user/{username}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/{username}"); - // Path Params - long sizeOfPathParams_username = strlen(username) + 3 + strlen( - "{ username }"); - if(username == NULL) { - goto end; - } - char *localVarToReplace_username = malloc(sizeOfPathParams_username); - sprintf(localVarToReplace_username, "{%s}", "username"); + // Path Params + long sizeOfPathParams_username = strlen(username)+3 + strlen("{ username }"); + if(username == NULL) { + goto end; + } + char* localVarToReplace_username = malloc(sizeOfPathParams_username); + sprintf(localVarToReplace_username, "{%s}", "username"); - localVarPath = strReplace(localVarPath, localVarToReplace_username, - username); + localVarPath = strReplace(localVarPath, localVarToReplace_username, username); - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "DELETE"); + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "DELETE"); - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid username supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "User not found"); - } - // No return type + if (apiClient->response_code == 400) { + printf("%s\n","Invalid username supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","User not found"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); + free(localVarToReplace_username); - - - - - free(localVarPath); - free(localVarToReplace_username); } // Get user by user name // -user_t *UserAPI_getUserByName(apiClient_t *apiClient, char *username) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +user_t* +UserAPI_getUserByName(apiClient_t *apiClient ,char * username) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/{username}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/{username}"); + // create the path + long sizeOfPath = strlen("/user/{username}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/{username}"); - // Path Params - long sizeOfPathParams_username = strlen(username) + 3 + strlen( - "{ username }"); - if(username == NULL) { - goto end; - } - char *localVarToReplace_username = malloc(sizeOfPathParams_username); - sprintf(localVarToReplace_username, "{%s}", "username"); + // Path Params + long sizeOfPathParams_username = strlen(username)+3 + strlen("{ username }"); + if(username == NULL) { + goto end; + } + char* localVarToReplace_username = malloc(sizeOfPathParams_username); + sprintf(localVarToReplace_username, "{%s}", "username"); - localVarPath = strReplace(localVarPath, localVarToReplace_username, - username); + localVarPath = strReplace(localVarPath, localVarToReplace_username, username); - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid username supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "User not found"); - } - // nonprimitive not container - cJSON *UserAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); - user_t *elementToReturn = user_parseFromJSON(UserAPIlocalVarJSON); - cJSON_Delete(UserAPIlocalVarJSON); - if(elementToReturn == NULL) { - // return 0; - } + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid username supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","User not found"); + } + //nonprimitive not container + cJSON *UserAPIlocalVarJSON = cJSON_Parse(apiClient->dataReceived); + user_t *elementToReturn = user_parseFromJSON(UserAPIlocalVarJSON); + cJSON_Delete(UserAPIlocalVarJSON); + if(elementToReturn == NULL) { + // return 0; + } - // return type - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - - - - list_free(localVarHeaderType); - - free(localVarPath); - free(localVarToReplace_username); - return elementToReturn; + //return type + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + list_free(localVarHeaderType); + + free(localVarPath); + free(localVarToReplace_username); + return elementToReturn; end: - return NULL; + return NULL; + } // Logs user into the system // -char *UserAPI_loginUser(apiClient_t *apiClient, char *username, - char *password) { - list_t *localVarQueryParameters = list_create(); - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = list_create(); - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +char* +UserAPI_loginUser(apiClient_t *apiClient ,char * username ,char * password) +{ + list_t *localVarQueryParameters = list_create(); + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = list_create(); + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/login") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/login"); + // create the path + long sizeOfPath = strlen("/user/login")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/login"); - // query parameters - char *keyQuery_username; - char *valueQuery_username; - keyValuePair_t *keyPairQuery_username = 0; - if(username) { - keyQuery_username = strdup("username"); - valueQuery_username = strdup((username)); - keyPairQuery_username = keyValuePair_create(keyQuery_username, - valueQuery_username); - list_addElement(localVarQueryParameters, keyPairQuery_username); - } + // query parameters + char *keyQuery_username; + char * valueQuery_username; + keyValuePair_t *keyPairQuery_username = 0; + if (username) + { + keyQuery_username = strdup("username"); + valueQuery_username = strdup((username)); + keyPairQuery_username = keyValuePair_create(keyQuery_username, valueQuery_username); + list_addElement(localVarQueryParameters,keyPairQuery_username); + } - // query parameters - char *keyQuery_password; - char *valueQuery_password; - keyValuePair_t *keyPairQuery_password = 0; - if(password) { - keyQuery_password = strdup("password"); - valueQuery_password = strdup((password)); - keyPairQuery_password = keyValuePair_create(keyQuery_password, - valueQuery_password); - list_addElement(localVarQueryParameters, keyPairQuery_password); - } - list_addElement(localVarHeaderType, "application/xml"); // produces - list_addElement(localVarHeaderType, "application/json"); // produces - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + // query parameters + char *keyQuery_password; + char * valueQuery_password; + keyValuePair_t *keyPairQuery_password = 0; + if (password) + { + keyQuery_password = strdup("password"); + valueQuery_password = strdup((password)); + keyPairQuery_password = keyValuePair_create(keyQuery_password, valueQuery_password); + list_addElement(localVarQueryParameters,keyPairQuery_password); + } + list_addElement(localVarHeaderType,"application/xml"); //produces + list_addElement(localVarHeaderType,"application/json"); //produces + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 200) { - printf("%s\n", "successful operation"); - } - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid username/password supplied"); - } - // primitive reutrn type simple - char *elementToReturn = strdup((char *) apiClient->dataReceived); + if (apiClient->response_code == 200) { + printf("%s\n","successful operation"); + } + if (apiClient->response_code == 400) { + printf("%s\n","Invalid username/password supplied"); + } + //primitive reutrn type simple + char* elementToReturn = strdup((char*)apiClient->dataReceived); - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } - list_free(localVarQueryParameters); - - - list_free(localVarHeaderType); - - free(localVarPath); - free(keyQuery_username); - free(valueQuery_username); - keyValuePair_free(keyPairQuery_username); - free(keyQuery_password); - free(valueQuery_password); - keyValuePair_free(keyPairQuery_password); - return elementToReturn; + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + list_free(localVarQueryParameters); + + + list_free(localVarHeaderType); + + free(localVarPath); + free(keyQuery_username); + free(valueQuery_username); + keyValuePair_free(keyPairQuery_username); + free(keyQuery_password); + free(valueQuery_password); + keyValuePair_free(keyPairQuery_password); + return elementToReturn; end: - return NULL; + return NULL; + } // Logs out current logged in user session // -void UserAPI_logoutUser(apiClient_t *apiClient) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +UserAPI_logoutUser(apiClient_t *apiClient) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/logout") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/logout"); + // create the path + long sizeOfPath = strlen("/user/logout")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/logout"); - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "GET"); + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "GET"); - if(apiClient->response_code == 0) { - printf("%s\n", "successful operation"); - } - // No return type + if (apiClient->response_code == 0) { + printf("%s\n","successful operation"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); - - - - - free(localVarPath); } // Updated user // // This can only be done by the logged in user. // -void UserAPI_updateUser(apiClient_t *apiClient, char *username, user_t *body) { - list_t *localVarQueryParameters = NULL; - list_t *localVarHeaderParameters = NULL; - list_t *localVarFormParameters = NULL; - list_t *localVarHeaderType = NULL; - list_t *localVarContentType = NULL; - char *localVarBodyParameters = NULL; +void +UserAPI_updateUser(apiClient_t *apiClient ,char * username ,user_t * body) +{ + list_t *localVarQueryParameters = NULL; + list_t *localVarHeaderParameters = NULL; + list_t *localVarFormParameters = NULL; + list_t *localVarHeaderType = NULL; + list_t *localVarContentType = NULL; + char *localVarBodyParameters = NULL; - // create the path - long sizeOfPath = strlen("/user/{username}") + 1; - char *localVarPath = malloc(sizeOfPath); - snprintf(localVarPath, sizeOfPath, "/user/{username}"); + // create the path + long sizeOfPath = strlen("/user/{username}")+1; + char *localVarPath = malloc(sizeOfPath); + snprintf(localVarPath, sizeOfPath, "/user/{username}"); - // Path Params - long sizeOfPathParams_username = strlen(username) + 3 + strlen( - "{ username }"); - if(username == NULL) { - goto end; - } - char *localVarToReplace_username = malloc(sizeOfPathParams_username); - sprintf(localVarToReplace_username, "{%s}", "username"); + // Path Params + long sizeOfPathParams_username = strlen(username)+3 + strlen("{ username }"); + if(username == NULL) { + goto end; + } + char* localVarToReplace_username = malloc(sizeOfPathParams_username); + sprintf(localVarToReplace_username, "{%s}", "username"); - localVarPath = strReplace(localVarPath, localVarToReplace_username, - username); + localVarPath = strReplace(localVarPath, localVarToReplace_username, username); - // Body Param - cJSON *localVarSingleItemJSON_body; - if(body != NULL) { - // string - localVarSingleItemJSON_body = user_convertToJSON(body); - localVarBodyParameters = - cJSON_Print(localVarSingleItemJSON_body); - } - apiClient_invoke(apiClient, - localVarPath, - localVarQueryParameters, - localVarHeaderParameters, - localVarFormParameters, - localVarHeaderType, - localVarContentType, - localVarBodyParameters, - "PUT"); + // Body Param + cJSON *localVarSingleItemJSON_body; + if (body != NULL) + { + //string + localVarSingleItemJSON_body = user_convertToJSON(body); + localVarBodyParameters = cJSON_Print(localVarSingleItemJSON_body); + } + apiClient_invoke(apiClient, + localVarPath, + localVarQueryParameters, + localVarHeaderParameters, + localVarFormParameters, + localVarHeaderType, + localVarContentType, + localVarBodyParameters, + "PUT"); - if(apiClient->response_code == 400) { - printf("%s\n", "Invalid user supplied"); - } - if(apiClient->response_code == 404) { - printf("%s\n", "User not found"); - } - // No return type + if (apiClient->response_code == 400) { + printf("%s\n","Invalid user supplied"); + } + if (apiClient->response_code == 404) { + printf("%s\n","User not found"); + } + //No return type end: - if(apiClient->dataReceived) { - free(apiClient->dataReceived); - } + if (apiClient->dataReceived) { + free(apiClient->dataReceived); + } + + + + + + free(localVarPath); + free(localVarToReplace_username); + cJSON_Delete(localVarSingleItemJSON_body); + free(localVarBodyParameters); - - - - - free(localVarPath); - free(localVarToReplace_username); - cJSON_Delete(localVarSingleItemJSON_body); - free(localVarBodyParameters); } + diff --git a/samples/client/petstore/c/api/UserAPI.h b/samples/client/petstore/c/api/UserAPI.h index c9475c2e55d..57f04a72194 100644 --- a/samples/client/petstore/c/api/UserAPI.h +++ b/samples/client/petstore/c/api/UserAPI.h @@ -11,43 +11,53 @@ // // This can only be done by the logged in user. // -void UserAPI_createUser(apiClient_t *apiClient, user_t *body); +void +UserAPI_createUser(apiClient_t *apiClient ,user_t * body); // Creates list of users with given input array // -void UserAPI_createUsersWithArrayInput(apiClient_t *apiClient, list_t *body); +void +UserAPI_createUsersWithArrayInput(apiClient_t *apiClient ,list_t * body); // Creates list of users with given input array // -void UserAPI_createUsersWithListInput(apiClient_t *apiClient, list_t *body); +void +UserAPI_createUsersWithListInput(apiClient_t *apiClient ,list_t * body); // Delete user // // This can only be done by the logged in user. // -void UserAPI_deleteUser(apiClient_t *apiClient, char *username); +void +UserAPI_deleteUser(apiClient_t *apiClient ,char * username); // Get user by user name // -user_t *UserAPI_getUserByName(apiClient_t *apiClient, char *username); +user_t* +UserAPI_getUserByName(apiClient_t *apiClient ,char * username); // Logs user into the system // -char *UserAPI_loginUser(apiClient_t *apiClient, char *username, char *password); +char* +UserAPI_loginUser(apiClient_t *apiClient ,char * username ,char * password); // Logs out current logged in user session // -void UserAPI_logoutUser(apiClient_t *apiClient); +void +UserAPI_logoutUser(apiClient_t *apiClient); // Updated user // // This can only be done by the logged in user. // -void UserAPI_updateUser(apiClient_t *apiClient, char *username, user_t *body); +void +UserAPI_updateUser(apiClient_t *apiClient ,char * username ,user_t * body); + + diff --git a/samples/client/petstore/c/external/cJSON.c b/samples/client/petstore/c/external/cJSON.c index 78b3ecfec6f..cbdec4132f1 100644 --- a/samples/client/petstore/c/external/cJSON.c +++ b/samples/client/petstore/c/external/cJSON.c @@ -1,31 +1,30 @@ /* - Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + Copyright (c) 2009-2017 Dave Gamble and cJSON contributors - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - */ + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ /* cJSON */ /* JSON parser in C. */ /* disable warnings about old C89 functions in MSVC */ -#if !defined(_CRT_SECURE_NO_DEPRECATE) && \ - defined(_MSC_VER) +#if !defined(_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) #define _CRT_SECURE_NO_DEPRECATE #endif @@ -59,85 +58,85 @@ #include "cJSON.h" /* define our own boolean type */ -#define true ((cJSON_bool) 1) -#define false ((cJSON_bool) 0) +#define true ((cJSON_bool)1) +#define false ((cJSON_bool)0) typedef struct { - const unsigned char *json; - size_t position; + const unsigned char *json; + size_t position; } error; static error global_error = { NULL, 0 }; CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void) { - return (const char *) (global_error.json + global_error.position); + return (const char*) (global_error.json + global_error.position); } -CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON * item) { - if(!cJSON_IsString(item)) { - return NULL; - } +CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item) { + if (!cJSON_IsString(item)) { + return NULL; + } - return item->valuestring; + return item->valuestring; } /* This is a safeguard to prevent copy-pasters from using incompatible C and header files */ -#if (CJSON_VERSION_MAJOR != 1) || \ - (CJSON_VERSION_MINOR != 7) || \ - (CJSON_VERSION_PATCH != 7) - #error \ - cJSON.h and cJSON.c have different versions. Make sure that both have the same. +#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 7) + #error cJSON.h and cJSON.c have different versions. Make sure that both have the same. #endif -CJSON_PUBLIC(const char *) cJSON_Version(void) +CJSON_PUBLIC(const char*) cJSON_Version(void) { - static char version[15]; - sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, - CJSON_VERSION_PATCH); + static char version[15]; + sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH); - return version; + return version; } /* Case insensitive string comparison, doesn't consider two NULL pointers equal though */ -static int case_insensitive_strcmp(const unsigned char *string1, - const unsigned char *string2) { - if((string1 == NULL) || - (string2 == NULL)) - { - return 1; - } +static int case_insensitive_strcmp(const unsigned char *string1, const unsigned char *string2) +{ + if ((string1 == NULL) || (string2 == NULL)) + { + return 1; + } - if(string1 == string2) { - return 0; - } + if (string1 == string2) + { + return 0; + } - for( ; tolower(*string1) == tolower(*string2); - (void) string1++, string2++) - { - if(*string1 == '\0') { - return 0; - } - } + for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++) + { + if (*string1 == '\0') + { + return 0; + } + } - return tolower(*string1) - tolower(*string2); + return tolower(*string1) - tolower(*string2); } -typedef struct internal_hooks { - void *(*allocate)(size_t size); - void (*deallocate)(void *pointer); - void *(*reallocate)(void *pointer, size_t size); +typedef struct internal_hooks +{ + void *(*allocate)(size_t size); + void (*deallocate)(void *pointer); + void *(*reallocate)(void *pointer, size_t size); } internal_hooks; #if defined(_MSC_VER) /* work around MSVC error C2322: '...' address of dillimport '...' is not static */ -static void *internal_malloc(size_t size) { - return malloc(size); +static void *internal_malloc(size_t size) +{ + return malloc(size); } -static void internal_free(void *pointer) { - free(pointer); +static void internal_free(void *pointer) +{ + free(pointer); } -static void *internal_realloc(void *pointer, size_t size) { - return realloc(pointer, size); +static void *internal_realloc(void *pointer, size_t size) +{ + return realloc(pointer, size); } #else #define internal_malloc malloc @@ -145,2711 +144,2789 @@ static void *internal_realloc(void *pointer, size_t size) { #define internal_realloc realloc #endif -static internal_hooks global_hooks = -{ internal_malloc, internal_free, internal_realloc }; +static internal_hooks global_hooks = { internal_malloc, internal_free, internal_realloc }; -static unsigned char *cJSON_strdup(const unsigned char *string, - const internal_hooks *const hooks) { - size_t length = 0; - unsigned char *copy = NULL; +static unsigned char* cJSON_strdup(const unsigned char* string, const internal_hooks * const hooks) +{ + size_t length = 0; + unsigned char *copy = NULL; - if(string == NULL) { - return NULL; - } + if (string == NULL) + { + return NULL; + } - length = strlen((const char *) string) + sizeof(""); - copy = (unsigned char *) hooks->allocate(length); - if(copy == NULL) { - return NULL; - } - memcpy(copy, string, length); + length = strlen((const char*)string) + sizeof(""); + copy = (unsigned char*)hooks->allocate(length); + if (copy == NULL) + { + return NULL; + } + memcpy(copy, string, length); - return copy; + return copy; } -CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks * hooks) +CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks) { - if(hooks == NULL) { - /* Reset hooks */ - global_hooks.allocate = malloc; - global_hooks.deallocate = free; - global_hooks.reallocate = realloc; - return; - } + if (hooks == NULL) + { + /* Reset hooks */ + global_hooks.allocate = malloc; + global_hooks.deallocate = free; + global_hooks.reallocate = realloc; + return; + } - global_hooks.allocate = malloc; - if(hooks->malloc_fn != NULL) { - global_hooks.allocate = hooks->malloc_fn; - } + global_hooks.allocate = malloc; + if (hooks->malloc_fn != NULL) + { + global_hooks.allocate = hooks->malloc_fn; + } - global_hooks.deallocate = free; - if(hooks->free_fn != NULL) { - global_hooks.deallocate = hooks->free_fn; - } + global_hooks.deallocate = free; + if (hooks->free_fn != NULL) + { + global_hooks.deallocate = hooks->free_fn; + } - /* use realloc only if both free and malloc are used */ - global_hooks.reallocate = NULL; - if((global_hooks.allocate == malloc) && - (global_hooks.deallocate == free)) - { - global_hooks.reallocate = realloc; - } + /* use realloc only if both free and malloc are used */ + global_hooks.reallocate = NULL; + if ((global_hooks.allocate == malloc) && (global_hooks.deallocate == free)) + { + global_hooks.reallocate = realloc; + } } /* Internal constructor. */ -static cJSON *cJSON_New_Item(const internal_hooks *const hooks) { - cJSON *node = (cJSON *) hooks->allocate(sizeof(cJSON)); - if(node) { - memset(node, '\0', sizeof(cJSON)); - } +static cJSON *cJSON_New_Item(const internal_hooks * const hooks) +{ + cJSON* node = (cJSON*)hooks->allocate(sizeof(cJSON)); + if (node) + { + memset(node, '\0', sizeof(cJSON)); + } - return node; + return node; } /* Delete a cJSON structure. */ -CJSON_PUBLIC(void) cJSON_Delete(cJSON * item) +CJSON_PUBLIC(void) cJSON_Delete(cJSON *item) { - cJSON *next = NULL; - while(item != NULL) { - next = item->next; - if(!(item->type & cJSON_IsReference) && - (item->child != NULL)) - { - cJSON_Delete(item->child); - } - if(!(item->type & cJSON_IsReference) && - (item->valuestring != NULL)) - { - global_hooks.deallocate(item->valuestring); - } - if(!(item->type & cJSON_StringIsConst) && - (item->string != NULL)) - { - global_hooks.deallocate(item->string); - } - global_hooks.deallocate(item); - item = next; - } + cJSON *next = NULL; + while (item != NULL) + { + next = item->next; + if (!(item->type & cJSON_IsReference) && (item->child != NULL)) + { + cJSON_Delete(item->child); + } + if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL)) + { + global_hooks.deallocate(item->valuestring); + } + if (!(item->type & cJSON_StringIsConst) && (item->string != NULL)) + { + global_hooks.deallocate(item->string); + } + global_hooks.deallocate(item); + item = next; + } } /* get the decimal point character of the current locale */ -static unsigned char get_decimal_point(void) { +static unsigned char get_decimal_point(void) +{ #ifdef ENABLE_LOCALES - struct lconv *lconv = localeconv(); - return (unsigned char) lconv->decimal_point[0]; + struct lconv *lconv = localeconv(); + return (unsigned char) lconv->decimal_point[0]; #else - return '.'; + return '.'; #endif } -typedef struct { - const unsigned char *content; - size_t length; - size_t offset; - size_t depth; /* How deeply nested (in arrays/objects) is the input at the current offset. */ - internal_hooks hooks; +typedef struct +{ + const unsigned char *content; + size_t length; + size_t offset; + size_t depth; /* How deeply nested (in arrays/objects) is the input at the current offset. */ + internal_hooks hooks; } parse_buffer; /* check if the given size is left to read in a given parse buffer (starting with 1) */ -#define can_read(buffer, size) ((buffer != NULL) && \ - (((buffer)->offset + size) <= (buffer)->length)) +#define can_read(buffer, size) ((buffer != NULL) && (((buffer)->offset + size) <= (buffer)->length)) /* check if the buffer can be accessed at the given index (starting with 0) */ -#define can_access_at_index(buffer, index) ((buffer != NULL) && \ - (((buffer)->offset + index) < \ - (buffer)->length)) -#define cannot_access_at_index(buffer, \ - index) (!can_access_at_index(buffer, index)) +#define can_access_at_index(buffer, index) ((buffer != NULL) && (((buffer)->offset + index) < (buffer)->length)) +#define cannot_access_at_index(buffer, index) (!can_access_at_index(buffer, index)) /* get a pointer to the buffer at the position */ #define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset) /* Parse the input text to generate a number, and populate the result into item. */ -static cJSON_bool parse_number(cJSON *const item, - parse_buffer *const input_buffer) { - double number = 0; - unsigned char *after_end = NULL; - unsigned char number_c_string[64]; - unsigned char decimal_point = get_decimal_point(); - size_t i = 0; +static cJSON_bool parse_number(cJSON * const item, parse_buffer * const input_buffer) +{ + double number = 0; + unsigned char *after_end = NULL; + unsigned char number_c_string[64]; + unsigned char decimal_point = get_decimal_point(); + size_t i = 0; - if((input_buffer == NULL) || - (input_buffer->content == NULL)) - { - return false; - } + if ((input_buffer == NULL) || (input_buffer->content == NULL)) + { + return false; + } - /* copy the number into a temporary buffer and replace '.' with the decimal point - * of the current locale (for strtod) - * This also takes care of '\0' not necessarily being available for marking the end of the input */ - for(i = 0; (i < (sizeof(number_c_string) - 1)) && - can_access_at_index(input_buffer, i); i++) - { - switch(buffer_at_offset(input_buffer)[i]) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '+': - case '-': - case 'e': - case 'E': - number_c_string[i] = buffer_at_offset(input_buffer)[i]; - break; + /* copy the number into a temporary buffer and replace '.' with the decimal point + * of the current locale (for strtod) + * This also takes care of '\0' not necessarily being available for marking the end of the input */ + for (i = 0; (i < (sizeof(number_c_string) - 1)) && can_access_at_index(input_buffer, i); i++) + { + switch (buffer_at_offset(input_buffer)[i]) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '+': + case '-': + case 'e': + case 'E': + number_c_string[i] = buffer_at_offset(input_buffer)[i]; + break; - case '.': - number_c_string[i] = decimal_point; - break; + case '.': + number_c_string[i] = decimal_point; + break; - default: - goto loop_end; - } - } + default: + goto loop_end; + } + } loop_end: - number_c_string[i] = '\0'; + number_c_string[i] = '\0'; - number = strtod((const char *) number_c_string, (char **) &after_end); - if(number_c_string == after_end) { - return false; /* parse_error */ - } + number = strtod((const char*)number_c_string, (char**)&after_end); + if (number_c_string == after_end) + { + return false; /* parse_error */ + } - item->valuedouble = number; + item->valuedouble = number; - /* use saturation in case of overflow */ - if(number >= INT_MAX) { - item->valueint = INT_MAX; - } else if(number <= INT_MIN) { - item->valueint = INT_MIN; - } else { - item->valueint = (int) number; - } + /* use saturation in case of overflow */ + if (number >= INT_MAX) + { + item->valueint = INT_MAX; + } + else if (number <= INT_MIN) + { + item->valueint = INT_MIN; + } + else + { + item->valueint = (int)number; + } - item->type = cJSON_Number; + item->type = cJSON_Number; - input_buffer->offset += (size_t) (after_end - number_c_string); - return true; + input_buffer->offset += (size_t)(after_end - number_c_string); + return true; } /* don't ask me, but the original cJSON_SetNumberValue returns an integer or double */ -CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON * object, double number) +CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number) { - if(number >= INT_MAX) { - object->valueint = INT_MAX; - } else if(number <= INT_MIN) { - object->valueint = INT_MIN; - } else { - object->valueint = (int) number; - } + if (number >= INT_MAX) + { + object->valueint = INT_MAX; + } + else if (number <= INT_MIN) + { + object->valueint = INT_MIN; + } + else + { + object->valueint = (int)number; + } - return object->valuedouble = number; + return object->valuedouble = number; } -typedef struct { - unsigned char *buffer; - size_t length; - size_t offset; - size_t depth; /* current nesting depth (for formatted printing) */ - cJSON_bool noalloc; - cJSON_bool format; /* is this print a formatted print */ - internal_hooks hooks; +typedef struct +{ + unsigned char *buffer; + size_t length; + size_t offset; + size_t depth; /* current nesting depth (for formatted printing) */ + cJSON_bool noalloc; + cJSON_bool format; /* is this print a formatted print */ + internal_hooks hooks; } printbuffer; /* realloc printbuffer if necessary to have at least "needed" bytes more */ -static unsigned char *ensure(printbuffer *const p, size_t needed) { - unsigned char *newbuffer = NULL; - size_t newsize = 0; +static unsigned char* ensure(printbuffer * const p, size_t needed) +{ + unsigned char *newbuffer = NULL; + size_t newsize = 0; - if((p == NULL) || - (p->buffer == NULL)) - { - return NULL; - } + if ((p == NULL) || (p->buffer == NULL)) + { + return NULL; + } - if((p->length > 0) && - (p->offset >= p->length)) - { - /* make sure that offset is valid */ - return NULL; - } + if ((p->length > 0) && (p->offset >= p->length)) + { + /* make sure that offset is valid */ + return NULL; + } - if(needed > INT_MAX) { - /* sizes bigger than INT_MAX are currently not supported */ - return NULL; - } + if (needed > INT_MAX) + { + /* sizes bigger than INT_MAX are currently not supported */ + return NULL; + } - needed += p->offset + 1; - if(needed <= p->length) { - return p->buffer + p->offset; - } + needed += p->offset + 1; + if (needed <= p->length) + { + return p->buffer + p->offset; + } - if(p->noalloc) { - return NULL; - } + if (p->noalloc) { + return NULL; + } - /* calculate new buffer size */ - if(needed > (INT_MAX / 2)) { - /* overflow of int, use INT_MAX if possible */ - if(needed <= INT_MAX) { - newsize = INT_MAX; - } else { - return NULL; - } - } else { - newsize = needed * 2; - } + /* calculate new buffer size */ + if (needed > (INT_MAX / 2)) + { + /* overflow of int, use INT_MAX if possible */ + if (needed <= INT_MAX) + { + newsize = INT_MAX; + } + else + { + return NULL; + } + } + else + { + newsize = needed * 2; + } - if(p->hooks.reallocate != NULL) { - /* reallocate with realloc if available */ - newbuffer = (unsigned char *) p->hooks.reallocate(p->buffer, - newsize); - if(newbuffer == NULL) { - p->hooks.deallocate(p->buffer); - p->length = 0; - p->buffer = NULL; + if (p->hooks.reallocate != NULL) + { + /* reallocate with realloc if available */ + newbuffer = (unsigned char*)p->hooks.reallocate(p->buffer, newsize); + if (newbuffer == NULL) + { + p->hooks.deallocate(p->buffer); + p->length = 0; + p->buffer = NULL; - return NULL; - } - } else { - /* otherwise reallocate manually */ - newbuffer = (unsigned char *) p->hooks.allocate(newsize); - if(!newbuffer) { - p->hooks.deallocate(p->buffer); - p->length = 0; - p->buffer = NULL; + return NULL; + } + } + else + { + /* otherwise reallocate manually */ + newbuffer = (unsigned char*)p->hooks.allocate(newsize); + if (!newbuffer) + { + p->hooks.deallocate(p->buffer); + p->length = 0; + p->buffer = NULL; - return NULL; - } - if(newbuffer) { - memcpy(newbuffer, p->buffer, p->offset + 1); - } - p->hooks.deallocate(p->buffer); - } - p->length = newsize; - p->buffer = newbuffer; + return NULL; + } + if (newbuffer) + { + memcpy(newbuffer, p->buffer, p->offset + 1); + } + p->hooks.deallocate(p->buffer); + } + p->length = newsize; + p->buffer = newbuffer; - return newbuffer + p->offset; + return newbuffer + p->offset; } /* calculate the new length of the string in a printbuffer and update the offset */ -static void update_offset(printbuffer *const buffer) { - const unsigned char *buffer_pointer = NULL; - if((buffer == NULL) || - (buffer->buffer == NULL)) - { - return; - } - buffer_pointer = buffer->buffer + buffer->offset; +static void update_offset(printbuffer * const buffer) +{ + const unsigned char *buffer_pointer = NULL; + if ((buffer == NULL) || (buffer->buffer == NULL)) + { + return; + } + buffer_pointer = buffer->buffer + buffer->offset; - buffer->offset += strlen((const char *) buffer_pointer); + buffer->offset += strlen((const char*)buffer_pointer); } /* Render the number nicely from the given item into a string. */ -static cJSON_bool print_number(const cJSON *const item, - printbuffer *const output_buffer) { - unsigned char *output_pointer = NULL; - double d = item->valuedouble; - int length = 0; - size_t i = 0; - unsigned char number_buffer[26]; /* temporary buffer to print the number into */ - unsigned char decimal_point = get_decimal_point(); - double test; +static cJSON_bool print_number(const cJSON * const item, printbuffer * const output_buffer) +{ + unsigned char *output_pointer = NULL; + double d = item->valuedouble; + int length = 0; + size_t i = 0; + unsigned char number_buffer[26]; /* temporary buffer to print the number into */ + unsigned char decimal_point = get_decimal_point(); + double test; - if(output_buffer == NULL) { - return false; - } + if (output_buffer == NULL) + { + return false; + } - /* This checks for NaN and Infinity */ - if((d * 0) != 0) { - length = sprintf((char *) number_buffer, "null"); - } else { - /* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */ - length = sprintf((char *) number_buffer, "%1.15g", d); + /* This checks for NaN and Infinity */ + if ((d * 0) != 0) + { + length = sprintf((char*)number_buffer, "null"); + } + else + { + /* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */ + length = sprintf((char*)number_buffer, "%1.15g", d); - /* Check whether the original double can be recovered */ - if((sscanf((char *) number_buffer, "%lg", &test) != 1) || - ((double) test != d)) - { - /* If not, print with 17 decimal places of precision */ - length = sprintf((char *) number_buffer, "%1.17g", d); - } - } + /* Check whether the original double can be recovered */ + if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || ((double)test != d)) + { + /* If not, print with 17 decimal places of precision */ + length = sprintf((char*)number_buffer, "%1.17g", d); + } + } - /* sprintf failed or buffer overrun occured */ - if((length < 0) || - (length > (int) (sizeof(number_buffer) - 1))) - { - return false; - } + /* sprintf failed or buffer overrun occured */ + if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1))) + { + return false; + } - /* reserve appropriate space in the output */ - output_pointer = ensure(output_buffer, (size_t) length + sizeof("")); - if(output_pointer == NULL) { - return false; - } + /* reserve appropriate space in the output */ + output_pointer = ensure(output_buffer, (size_t)length + sizeof("")); + if (output_pointer == NULL) + { + return false; + } - /* copy the printed number to the output and replace locale - * dependent decimal point with '.' */ - for(i = 0; i < ((size_t) length); i++) { - if(number_buffer[i] == decimal_point) { - output_pointer[i] = '.'; - continue; - } + /* copy the printed number to the output and replace locale + * dependent decimal point with '.' */ + for (i = 0; i < ((size_t)length); i++) + { + if (number_buffer[i] == decimal_point) + { + output_pointer[i] = '.'; + continue; + } - output_pointer[i] = number_buffer[i]; - } - output_pointer[i] = '\0'; + output_pointer[i] = number_buffer[i]; + } + output_pointer[i] = '\0'; - output_buffer->offset += (size_t) length; + output_buffer->offset += (size_t)length; - return true; + return true; } /* parse 4 digit hexadecimal number */ -static unsigned parse_hex4(const unsigned char *const input) { - unsigned int h = 0; - size_t i = 0; +static unsigned parse_hex4(const unsigned char * const input) +{ + unsigned int h = 0; + size_t i = 0; - for(i = 0; i < 4; i++) { - /* parse digit */ - if((input[i] >= '0') && - (input[i] <= '9')) - { - h += (unsigned int) input[i] - '0'; - } else if((input[i] >= 'A') && - (input[i] <= 'F')) - { - h += (unsigned int) 10 + input[i] - 'A'; - } else if((input[i] >= 'a') && - (input[i] <= 'f')) - { - h += (unsigned int) 10 + input[i] - 'a'; - } else { /* invalid */ - return 0; - } + for (i = 0; i < 4; i++) + { + /* parse digit */ + if ((input[i] >= '0') && (input[i] <= '9')) + { + h += (unsigned int) input[i] - '0'; + } + else if ((input[i] >= 'A') && (input[i] <= 'F')) + { + h += (unsigned int) 10 + input[i] - 'A'; + } + else if ((input[i] >= 'a') && (input[i] <= 'f')) + { + h += (unsigned int) 10 + input[i] - 'a'; + } + else /* invalid */ + { + return 0; + } - if(i < 3) { - /* shift left to make place for the next nibble */ - h = h << 4; - } - } + if (i < 3) + { + /* shift left to make place for the next nibble */ + h = h << 4; + } + } - return h; + return h; } /* converts a UTF-16 literal to UTF-8 * A literal can be one or two sequences of the form \uXXXX */ -static unsigned char utf16_literal_to_utf8( - const unsigned char *const input_pointer, - const unsigned char *const input_end, unsigned char **output_pointer) { - long unsigned int codepoint = 0; - unsigned int first_code = 0; - const unsigned char *first_sequence = input_pointer; - unsigned char utf8_length = 0; - unsigned char utf8_position = 0; - unsigned char sequence_length = 0; - unsigned char first_byte_mark = 0; +static unsigned char utf16_literal_to_utf8(const unsigned char * const input_pointer, const unsigned char * const input_end, unsigned char **output_pointer) +{ + long unsigned int codepoint = 0; + unsigned int first_code = 0; + const unsigned char *first_sequence = input_pointer; + unsigned char utf8_length = 0; + unsigned char utf8_position = 0; + unsigned char sequence_length = 0; + unsigned char first_byte_mark = 0; - if((input_end - first_sequence) < 6) { - /* input ends unexpectedly */ - goto fail; - } + if ((input_end - first_sequence) < 6) + { + /* input ends unexpectedly */ + goto fail; + } - /* get the first utf16 sequence */ - first_code = parse_hex4(first_sequence + 2); + /* get the first utf16 sequence */ + first_code = parse_hex4(first_sequence + 2); - /* check that the code is valid */ - if(((first_code >= 0xDC00) && - (first_code <= 0xDFFF))) - { - goto fail; - } + /* check that the code is valid */ + if (((first_code >= 0xDC00) && (first_code <= 0xDFFF))) + { + goto fail; + } - /* UTF16 surrogate pair */ - if((first_code >= 0xD800) && - (first_code <= 0xDBFF)) - { - const unsigned char *second_sequence = first_sequence + 6; - unsigned int second_code = 0; - sequence_length = 12; /* \uXXXX\uXXXX */ + /* UTF16 surrogate pair */ + if ((first_code >= 0xD800) && (first_code <= 0xDBFF)) + { + const unsigned char *second_sequence = first_sequence + 6; + unsigned int second_code = 0; + sequence_length = 12; /* \uXXXX\uXXXX */ - if((input_end - second_sequence) < 6) { - /* input ends unexpectedly */ - goto fail; - } + if ((input_end - second_sequence) < 6) + { + /* input ends unexpectedly */ + goto fail; + } - if((second_sequence[0] != '\\') || - (second_sequence[1] != 'u')) - { - /* missing second half of the surrogate pair */ - goto fail; - } + if ((second_sequence[0] != '\\') || (second_sequence[1] != 'u')) + { + /* missing second half of the surrogate pair */ + goto fail; + } - /* get the second utf16 sequence */ - second_code = parse_hex4(second_sequence + 2); - /* check that the code is valid */ - if((second_code < 0xDC00) || - (second_code > 0xDFFF)) - { - /* invalid second half of the surrogate pair */ - goto fail; - } + /* get the second utf16 sequence */ + second_code = parse_hex4(second_sequence + 2); + /* check that the code is valid */ + if ((second_code < 0xDC00) || (second_code > 0xDFFF)) + { + /* invalid second half of the surrogate pair */ + goto fail; + } - /* calculate the unicode codepoint from the surrogate pair */ - codepoint = 0x10000 + - (((first_code & 0x3FF) << 10) | - (second_code & 0x3FF)); - } else { - sequence_length = 6; /* \uXXXX */ - codepoint = first_code; - } + /* calculate the unicode codepoint from the surrogate pair */ + codepoint = 0x10000 + (((first_code & 0x3FF) << 10) | (second_code & 0x3FF)); + } + else + { + sequence_length = 6; /* \uXXXX */ + codepoint = first_code; + } - /* encode as UTF-8 - * takes at maximum 4 bytes to encode: - * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ - if(codepoint < 0x80) { - /* normal ascii, encoding 0xxxxxxx */ - utf8_length = 1; - } else if(codepoint < 0x800) { - /* two bytes, encoding 110xxxxx 10xxxxxx */ - utf8_length = 2; - first_byte_mark = 0xC0; /* 11000000 */ - } else if(codepoint < 0x10000) { - /* three bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx */ - utf8_length = 3; - first_byte_mark = 0xE0; /* 11100000 */ - } else if(codepoint <= 0x10FFFF) { - /* four bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx */ - utf8_length = 4; - first_byte_mark = 0xF0; /* 11110000 */ - } else { - /* invalid unicode codepoint */ - goto fail; - } + /* encode as UTF-8 + * takes at maximum 4 bytes to encode: + * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ + if (codepoint < 0x80) + { + /* normal ascii, encoding 0xxxxxxx */ + utf8_length = 1; + } + else if (codepoint < 0x800) + { + /* two bytes, encoding 110xxxxx 10xxxxxx */ + utf8_length = 2; + first_byte_mark = 0xC0; /* 11000000 */ + } + else if (codepoint < 0x10000) + { + /* three bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx */ + utf8_length = 3; + first_byte_mark = 0xE0; /* 11100000 */ + } + else if (codepoint <= 0x10FFFF) + { + /* four bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx */ + utf8_length = 4; + first_byte_mark = 0xF0; /* 11110000 */ + } + else + { + /* invalid unicode codepoint */ + goto fail; + } - /* encode as utf8 */ - for(utf8_position = - (unsigned char) (utf8_length - 1); utf8_position > 0; - utf8_position--) { - /* 10xxxxxx */ - (*output_pointer)[utf8_position] = - (unsigned char) ((codepoint | 0x80) & 0xBF); - codepoint >>= 6; - } - /* encode first byte */ - if(utf8_length > 1) { - (*output_pointer)[0] = - (unsigned char) ((codepoint | first_byte_mark) & 0xFF); - } else { - (*output_pointer)[0] = (unsigned char) (codepoint & 0x7F); - } + /* encode as utf8 */ + for (utf8_position = (unsigned char)(utf8_length - 1); utf8_position > 0; utf8_position--) + { + /* 10xxxxxx */ + (*output_pointer)[utf8_position] = (unsigned char)((codepoint | 0x80) & 0xBF); + codepoint >>= 6; + } + /* encode first byte */ + if (utf8_length > 1) + { + (*output_pointer)[0] = (unsigned char)((codepoint | first_byte_mark) & 0xFF); + } + else + { + (*output_pointer)[0] = (unsigned char)(codepoint & 0x7F); + } - *output_pointer += utf8_length; + *output_pointer += utf8_length; - return sequence_length; + return sequence_length; fail: - return 0; + return 0; } /* Parse the input text into an unescaped cinput, and populate item. */ -static cJSON_bool parse_string(cJSON *const item, - parse_buffer *const input_buffer) { - const unsigned char *input_pointer = buffer_at_offset(input_buffer) + 1; - const unsigned char *input_end = buffer_at_offset(input_buffer) + 1; - unsigned char *output_pointer = NULL; - unsigned char *output = NULL; +static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_buffer) +{ + const unsigned char *input_pointer = buffer_at_offset(input_buffer) + 1; + const unsigned char *input_end = buffer_at_offset(input_buffer) + 1; + unsigned char *output_pointer = NULL; + unsigned char *output = NULL; - /* not a string */ - if(buffer_at_offset(input_buffer)[0] != '\"') { - goto fail; - } + /* not a string */ + if (buffer_at_offset(input_buffer)[0] != '\"') + { + goto fail; + } - { - /* calculate approximate size of the output (overestimate) */ - size_t allocation_length = 0; - size_t skipped_bytes = 0; - while(((size_t) (input_end - input_buffer->content) < - input_buffer->length) && - (*input_end != '\"')) - { - /* is escape sequence */ - if(input_end[0] == '\\') { - if((size_t) (input_end + 1 - - input_buffer->content) >= - input_buffer->length) { - /* prevent buffer overflow when last input character is a backslash */ - goto fail; - } - skipped_bytes++; - input_end++; - } - input_end++; - } - if(((size_t) (input_end - input_buffer->content) >= - input_buffer->length) || - (*input_end != '\"')) - { - goto fail; /* string ended unexpectedly */ - } + { + /* calculate approximate size of the output (overestimate) */ + size_t allocation_length = 0; + size_t skipped_bytes = 0; + while (((size_t)(input_end - input_buffer->content) < input_buffer->length) && (*input_end != '\"')) + { + /* is escape sequence */ + if (input_end[0] == '\\') + { + if ((size_t)(input_end + 1 - input_buffer->content) >= input_buffer->length) + { + /* prevent buffer overflow when last input character is a backslash */ + goto fail; + } + skipped_bytes++; + input_end++; + } + input_end++; + } + if (((size_t)(input_end - input_buffer->content) >= input_buffer->length) || (*input_end != '\"')) + { + goto fail; /* string ended unexpectedly */ + } - /* This is at most how much we need for the output */ - allocation_length = - (size_t) (input_end - buffer_at_offset(input_buffer)) - - skipped_bytes; - output = (unsigned char *) input_buffer->hooks.allocate( - allocation_length + sizeof("")); - if(output == NULL) { - goto fail; /* allocation failure */ - } - } + /* This is at most how much we need for the output */ + allocation_length = (size_t) (input_end - buffer_at_offset(input_buffer)) - skipped_bytes; + output = (unsigned char*)input_buffer->hooks.allocate(allocation_length + sizeof("")); + if (output == NULL) + { + goto fail; /* allocation failure */ + } + } - output_pointer = output; - /* loop through the string literal */ - while(input_pointer < input_end) { - if(*input_pointer != '\\') { - *output_pointer++ = *input_pointer++; - } - /* escape sequence */ - else { - unsigned char sequence_length = 2; - if((input_end - input_pointer) < 1) { - goto fail; - } + output_pointer = output; + /* loop through the string literal */ + while (input_pointer < input_end) + { + if (*input_pointer != '\\') + { + *output_pointer++ = *input_pointer++; + } + /* escape sequence */ + else + { + unsigned char sequence_length = 2; + if ((input_end - input_pointer) < 1) + { + goto fail; + } - switch(input_pointer[1]) { - case 'b': - *output_pointer++ = '\b'; - break; + switch (input_pointer[1]) + { + case 'b': + *output_pointer++ = '\b'; + break; + case 'f': + *output_pointer++ = '\f'; + break; + case 'n': + *output_pointer++ = '\n'; + break; + case 'r': + *output_pointer++ = '\r'; + break; + case 't': + *output_pointer++ = '\t'; + break; + case '\"': + case '\\': + case '/': + *output_pointer++ = input_pointer[1]; + break; - case 'f': - *output_pointer++ = '\f'; - break; + /* UTF-16 literal */ + case 'u': + sequence_length = utf16_literal_to_utf8(input_pointer, input_end, &output_pointer); + if (sequence_length == 0) + { + /* failed to convert UTF16-literal to UTF-8 */ + goto fail; + } + break; - case 'n': - *output_pointer++ = '\n'; - break; + default: + goto fail; + } + input_pointer += sequence_length; + } + } - case 'r': - *output_pointer++ = '\r'; - break; + /* zero terminate the output */ + *output_pointer = '\0'; - case 't': - *output_pointer++ = '\t'; - break; + item->type = cJSON_String; + item->valuestring = (char*)output; - case '\"': - case '\\': - case '/': - *output_pointer++ = input_pointer[1]; - break; + input_buffer->offset = (size_t) (input_end - input_buffer->content); + input_buffer->offset++; - /* UTF-16 literal */ - case 'u': - sequence_length = utf16_literal_to_utf8( - input_pointer, input_end, - &output_pointer); - if(sequence_length == 0) { - /* failed to convert UTF16-literal to UTF-8 */ - goto fail; - } - break; - - default: - goto fail; - } - input_pointer += sequence_length; - } - } - - /* zero terminate the output */ - *output_pointer = '\0'; - - item->type = cJSON_String; - item->valuestring = (char *) output; - - input_buffer->offset = (size_t) (input_end - input_buffer->content); - input_buffer->offset++; - - return true; + return true; fail: - if(output != NULL) { - input_buffer->hooks.deallocate(output); - } + if (output != NULL) + { + input_buffer->hooks.deallocate(output); + } - if(input_pointer != NULL) { - input_buffer->offset = - (size_t) (input_pointer - input_buffer->content); - } + if (input_pointer != NULL) + { + input_buffer->offset = (size_t)(input_pointer - input_buffer->content); + } - return false; + return false; } /* Render the cstring provided to an escaped version that can be printed. */ -static cJSON_bool print_string_ptr(const unsigned char *const input, - printbuffer *const output_buffer) { - const unsigned char *input_pointer = NULL; - unsigned char *output = NULL; - unsigned char *output_pointer = NULL; - size_t output_length = 0; - /* numbers of additional characters needed for escaping */ - size_t escape_characters = 0; +static cJSON_bool print_string_ptr(const unsigned char * const input, printbuffer * const output_buffer) +{ + const unsigned char *input_pointer = NULL; + unsigned char *output = NULL; + unsigned char *output_pointer = NULL; + size_t output_length = 0; + /* numbers of additional characters needed for escaping */ + size_t escape_characters = 0; - if(output_buffer == NULL) { - return false; - } + if (output_buffer == NULL) + { + return false; + } - /* empty string */ - if(input == NULL) { - output = ensure(output_buffer, sizeof("\"\"")); - if(output == NULL) { - return false; - } - strcpy((char *) output, "\"\""); + /* empty string */ + if (input == NULL) + { + output = ensure(output_buffer, sizeof("\"\"")); + if (output == NULL) + { + return false; + } + strcpy((char*)output, "\"\""); - return true; - } + return true; + } - /* set "flag" to 1 if something needs to be escaped */ - for(input_pointer = input; *input_pointer; input_pointer++) { - switch(*input_pointer) { - case '\"': - case '\\': - case '\b': - case '\f': - case '\n': - case '\r': - case '\t': - /* one character escape sequence */ - escape_characters++; - break; + /* set "flag" to 1 if something needs to be escaped */ + for (input_pointer = input; *input_pointer; input_pointer++) + { + switch (*input_pointer) + { + case '\"': + case '\\': + case '\b': + case '\f': + case '\n': + case '\r': + case '\t': + /* one character escape sequence */ + escape_characters++; + break; + default: + if (*input_pointer < 32) + { + /* UTF-16 escape sequence uXXXX */ + escape_characters += 5; + } + break; + } + } + output_length = (size_t)(input_pointer - input) + escape_characters; - default: - if(*input_pointer < 32) { - /* UTF-16 escape sequence uXXXX */ - escape_characters += 5; - } - break; - } - } - output_length = (size_t) (input_pointer - input) + escape_characters; + output = ensure(output_buffer, output_length + sizeof("\"\"")); + if (output == NULL) + { + return false; + } - output = ensure(output_buffer, output_length + sizeof("\"\"")); - if(output == NULL) { - return false; - } + /* no characters have to be escaped */ + if (escape_characters == 0) + { + output[0] = '\"'; + memcpy(output + 1, input, output_length); + output[output_length + 1] = '\"'; + output[output_length + 2] = '\0'; - /* no characters have to be escaped */ - if(escape_characters == 0) { - output[0] = '\"'; - memcpy(output + 1, input, output_length); - output[output_length + 1] = '\"'; - output[output_length + 2] = '\0'; + return true; + } - return true; - } + output[0] = '\"'; + output_pointer = output + 1; + /* copy the string */ + for (input_pointer = input; *input_pointer != '\0'; (void)input_pointer++, output_pointer++) + { + if ((*input_pointer > 31) && (*input_pointer != '\"') && (*input_pointer != '\\')) + { + /* normal character, copy */ + *output_pointer = *input_pointer; + } + else + { + /* character needs to be escaped */ + *output_pointer++ = '\\'; + switch (*input_pointer) + { + case '\\': + *output_pointer = '\\'; + break; + case '\"': + *output_pointer = '\"'; + break; + case '\b': + *output_pointer = 'b'; + break; + case '\f': + *output_pointer = 'f'; + break; + case '\n': + *output_pointer = 'n'; + break; + case '\r': + *output_pointer = 'r'; + break; + case '\t': + *output_pointer = 't'; + break; + default: + /* escape and print as unicode codepoint */ + sprintf((char*)output_pointer, "u%04x", *input_pointer); + output_pointer += 4; + break; + } + } + } + output[output_length + 1] = '\"'; + output[output_length + 2] = '\0'; - output[0] = '\"'; - output_pointer = output + 1; - /* copy the string */ - for(input_pointer = input; *input_pointer != '\0'; - (void) input_pointer++, output_pointer++) { - if((*input_pointer > 31) && - (*input_pointer != '\"') && - (*input_pointer != '\\')) - { - /* normal character, copy */ - *output_pointer = *input_pointer; - } else { - /* character needs to be escaped */ - *output_pointer++ = '\\'; - switch(*input_pointer) { - case '\\': - *output_pointer = '\\'; - break; - - case '\"': - *output_pointer = '\"'; - break; - - case '\b': - *output_pointer = 'b'; - break; - - case '\f': - *output_pointer = 'f'; - break; - - case '\n': - *output_pointer = 'n'; - break; - - case '\r': - *output_pointer = 'r'; - break; - - case '\t': - *output_pointer = 't'; - break; - - default: - /* escape and print as unicode codepoint */ - sprintf((char *) output_pointer, "u%04x", - *input_pointer); - output_pointer += 4; - break; - } - } - } - output[output_length + 1] = '\"'; - output[output_length + 2] = '\0'; - - return true; + return true; } /* Invoke print_string_ptr (which is useful) on an item. */ -static cJSON_bool print_string(const cJSON *const item, printbuffer *const p) { - return print_string_ptr((unsigned char *) item->valuestring, p); +static cJSON_bool print_string(const cJSON * const item, printbuffer * const p) +{ + return print_string_ptr((unsigned char*)item->valuestring, p); } /* Predeclare these prototypes. */ -static cJSON_bool parse_value(cJSON *const item, - parse_buffer *const input_buffer); -static cJSON_bool print_value(const cJSON *const item, - printbuffer *const output_buffer); -static cJSON_bool parse_array(cJSON *const item, - parse_buffer *const input_buffer); -static cJSON_bool print_array(const cJSON *const item, - printbuffer *const output_buffer); -static cJSON_bool parse_object(cJSON *const item, - parse_buffer *const input_buffer); -static cJSON_bool print_object(const cJSON *const item, - printbuffer *const output_buffer); +static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer); +static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer); +static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer); +static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer); +static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer); +static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer); /* Utility to jump whitespace and cr/lf */ -static parse_buffer *buffer_skip_whitespace(parse_buffer *const buffer) { - if((buffer == NULL) || - (buffer->content == NULL)) - { - return NULL; - } +static parse_buffer *buffer_skip_whitespace(parse_buffer * const buffer) +{ + if ((buffer == NULL) || (buffer->content == NULL)) + { + return NULL; + } - while(can_access_at_index(buffer, 0) && - (buffer_at_offset(buffer)[0] <= 32)) - { - buffer->offset++; - } + while (can_access_at_index(buffer, 0) && (buffer_at_offset(buffer)[0] <= 32)) + { + buffer->offset++; + } - if(buffer->offset == buffer->length) { - buffer->offset--; - } + if (buffer->offset == buffer->length) + { + buffer->offset--; + } - return buffer; + return buffer; } /* skip the UTF-8 BOM (byte order mark) if it is at the beginning of a buffer */ -static parse_buffer *skip_utf8_bom(parse_buffer *const buffer) { - if((buffer == NULL) || - (buffer->content == NULL) || - (buffer->offset != 0)) - { - return NULL; - } +static parse_buffer *skip_utf8_bom(parse_buffer * const buffer) +{ + if ((buffer == NULL) || (buffer->content == NULL) || (buffer->offset != 0)) + { + return NULL; + } - if(can_access_at_index(buffer, 4) && - (strncmp((const char *) buffer_at_offset(buffer), "\xEF\xBB\xBF", - 3) == 0)) - { - buffer->offset += 3; - } + if (can_access_at_index(buffer, 4) && (strncmp((const char*)buffer_at_offset(buffer), "\xEF\xBB\xBF", 3) == 0)) + { + buffer->offset += 3; + } - return buffer; + return buffer; } /* Parse an object - create a new root, and populate. */ -CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, - const char **return_parse_end, - cJSON_bool require_null_terminated) +CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated) { - parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } }; - cJSON *item = NULL; + parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } }; + cJSON *item = NULL; - /* reset error position */ - global_error.json = NULL; - global_error.position = 0; + /* reset error position */ + global_error.json = NULL; + global_error.position = 0; - if(value == NULL) { - goto fail; - } + if (value == NULL) + { + goto fail; + } - buffer.content = (const unsigned char *) value; - buffer.length = strlen((const char *) value) + sizeof(""); - buffer.offset = 0; - buffer.hooks = global_hooks; + buffer.content = (const unsigned char*)value; + buffer.length = strlen((const char*)value) + sizeof(""); + buffer.offset = 0; + buffer.hooks = global_hooks; - item = cJSON_New_Item(&global_hooks); - if(item == NULL) { /* memory fail */ - goto fail; - } + item = cJSON_New_Item(&global_hooks); + if (item == NULL) /* memory fail */ + { + goto fail; + } - if(!parse_value(item, buffer_skip_whitespace(skip_utf8_bom(&buffer)))) { - /* parse failure. ep is set. */ - goto fail; - } + if (!parse_value(item, buffer_skip_whitespace(skip_utf8_bom(&buffer)))) + { + /* parse failure. ep is set. */ + goto fail; + } - /* if we require null-terminated JSON without appended garbage, skip and then check for a null terminator */ - if(require_null_terminated) { - buffer_skip_whitespace(&buffer); - if((buffer.offset >= buffer.length) || - (buffer_at_offset(&buffer)[0] != '\0') ) - { - goto fail; - } - } - if(return_parse_end) { - *return_parse_end = (const char *) buffer_at_offset(&buffer); - } + /* if we require null-terminated JSON without appended garbage, skip and then check for a null terminator */ + if (require_null_terminated) + { + buffer_skip_whitespace(&buffer); + if ((buffer.offset >= buffer.length) || buffer_at_offset(&buffer)[0] != '\0') + { + goto fail; + } + } + if (return_parse_end) + { + *return_parse_end = (const char*)buffer_at_offset(&buffer); + } - return item; + return item; fail: - if(item != NULL) { - cJSON_Delete(item); - } + if (item != NULL) + { + cJSON_Delete(item); + } - if(value != NULL) { - error local_error; - local_error.json = (const unsigned char *) value; - local_error.position = 0; + if (value != NULL) + { + error local_error; + local_error.json = (const unsigned char*)value; + local_error.position = 0; - if(buffer.offset < buffer.length) { - local_error.position = buffer.offset; - } else if(buffer.length > 0) { - local_error.position = buffer.length - 1; - } + if (buffer.offset < buffer.length) + { + local_error.position = buffer.offset; + } + else if (buffer.length > 0) + { + local_error.position = buffer.length - 1; + } - if(return_parse_end != NULL) { - *return_parse_end = (const char *) local_error.json + - local_error.position; - } + if (return_parse_end != NULL) + { + *return_parse_end = (const char*)local_error.json + local_error.position; + } - global_error = local_error; - } + global_error = local_error; + } - return NULL; + return NULL; } /* Default options for cJSON_Parse */ CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value) { - return cJSON_ParseWithOpts(value, 0, 0); + return cJSON_ParseWithOpts(value, 0, 0); } #define cjson_min(a, b) ((a < b) ? a : b) -static unsigned char *print(const cJSON *const item, cJSON_bool format, - const internal_hooks *const hooks) { - static const size_t default_buffer_size = 256; - printbuffer buffer[1]; - unsigned char *printed = NULL; +static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks) +{ + static const size_t default_buffer_size = 256; + printbuffer buffer[1]; + unsigned char *printed = NULL; - memset(buffer, 0, sizeof(buffer)); + memset(buffer, 0, sizeof(buffer)); - /* create buffer */ - buffer->buffer = (unsigned char *) hooks->allocate(default_buffer_size); - buffer->length = default_buffer_size; - buffer->format = format; - buffer->hooks = *hooks; - if(buffer->buffer == NULL) { - goto fail; - } + /* create buffer */ + buffer->buffer = (unsigned char*) hooks->allocate(default_buffer_size); + buffer->length = default_buffer_size; + buffer->format = format; + buffer->hooks = *hooks; + if (buffer->buffer == NULL) + { + goto fail; + } - /* print the value */ - if(!print_value(item, buffer)) { - goto fail; - } - update_offset(buffer); + /* print the value */ + if (!print_value(item, buffer)) + { + goto fail; + } + update_offset(buffer); - /* check if reallocate is available */ - if(hooks->reallocate != NULL) { - printed = (unsigned char *) hooks->reallocate(buffer->buffer, - buffer->offset + - 1); - if(printed == NULL) { - goto fail; - } - buffer->buffer = NULL; - } else { /* otherwise copy the JSON over to a new buffer */ - printed = (unsigned char *) hooks->allocate(buffer->offset + 1); - if(printed == NULL) { - goto fail; - } - memcpy(printed, buffer->buffer, - cjson_min(buffer->length, buffer->offset + 1)); - printed[buffer->offset] = '\0'; /* just to be sure */ + /* check if reallocate is available */ + if (hooks->reallocate != NULL) + { + printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->offset + 1); + if (printed == NULL) { + goto fail; + } + buffer->buffer = NULL; + } + else /* otherwise copy the JSON over to a new buffer */ + { + printed = (unsigned char*) hooks->allocate(buffer->offset + 1); + if (printed == NULL) + { + goto fail; + } + memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1)); + printed[buffer->offset] = '\0'; /* just to be sure */ - /* free the buffer */ - hooks->deallocate(buffer->buffer); - } + /* free the buffer */ + hooks->deallocate(buffer->buffer); + } - return printed; + return printed; fail: - if(buffer->buffer != NULL) { - hooks->deallocate(buffer->buffer); - } + if (buffer->buffer != NULL) + { + hooks->deallocate(buffer->buffer); + } - if(printed != NULL) { - hooks->deallocate(printed); - } + if (printed != NULL) + { + hooks->deallocate(printed); + } - return NULL; + return NULL; } /* Render a cJSON item/entity/structure to text. */ -CJSON_PUBLIC(char *) cJSON_Print(const cJSON * item) +CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item) { - return (char *) print(item, true, &global_hooks); + return (char*)print(item, true, &global_hooks); } -CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON * item) +CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item) { - return (char *) print(item, false, &global_hooks); + return (char*)print(item, false, &global_hooks); } -CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON * item, int prebuffer, - cJSON_bool fmt) +CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt) { - printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } }; + printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } }; - if(prebuffer < 0) { - return NULL; - } + if (prebuffer < 0) + { + return NULL; + } - p.buffer = (unsigned char *) global_hooks.allocate((size_t) prebuffer); - if(!p.buffer) { - return NULL; - } + p.buffer = (unsigned char*)global_hooks.allocate((size_t)prebuffer); + if (!p.buffer) + { + return NULL; + } - p.length = (size_t) prebuffer; - p.offset = 0; - p.noalloc = false; - p.format = fmt; - p.hooks = global_hooks; + p.length = (size_t)prebuffer; + p.offset = 0; + p.noalloc = false; + p.format = fmt; + p.hooks = global_hooks; - if(!print_value(item, &p)) { - global_hooks.deallocate(p.buffer); - return NULL; - } + if (!print_value(item, &p)) + { + global_hooks.deallocate(p.buffer); + return NULL; + } - return (char *) p.buffer; + return (char*)p.buffer; } -CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON * item, char *buf, - const int len, - const cJSON_bool fmt) +CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buf, const int len, const cJSON_bool fmt) { - printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } }; + printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } }; - if((len < 0) || - (buf == NULL)) - { - return false; - } + if ((len < 0) || (buf == NULL)) + { + return false; + } - p.buffer = (unsigned char *) buf; - p.length = (size_t) len; - p.offset = 0; - p.noalloc = true; - p.format = fmt; - p.hooks = global_hooks; + p.buffer = (unsigned char*)buf; + p.length = (size_t)len; + p.offset = 0; + p.noalloc = true; + p.format = fmt; + p.hooks = global_hooks; - return print_value(item, &p); + return print_value(item, &p); } /* Parser core - when encountering text, process appropriately. */ -static cJSON_bool parse_value(cJSON *const item, - parse_buffer *const input_buffer) { - if((input_buffer == NULL) || - (input_buffer->content == NULL)) - { - return false; /* no input */ - } +static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer) +{ + if ((input_buffer == NULL) || (input_buffer->content == NULL)) + { + return false; /* no input */ + } - /* parse the different types of values */ - /* null */ - if(can_read(input_buffer, 4) && - (strncmp((const char *) buffer_at_offset(input_buffer), "null", - 4) == 0)) - { - item->type = cJSON_NULL; - input_buffer->offset += 4; - return true; - } - /* false */ - if(can_read(input_buffer, 5) && - (strncmp((const char *) buffer_at_offset(input_buffer), "false", - 5) == 0)) - { - item->type = cJSON_False; - input_buffer->offset += 5; - return true; - } - /* true */ - if(can_read(input_buffer, 4) && - (strncmp((const char *) buffer_at_offset(input_buffer), "true", - 4) == 0)) - { - item->type = cJSON_True; - item->valueint = 1; - input_buffer->offset += 4; - return true; - } - /* string */ - if(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == '\"')) - { - return parse_string(item, input_buffer); - } - /* number */ - if(can_access_at_index(input_buffer, 0) && - ((buffer_at_offset(input_buffer)[0] == '-') || - ((buffer_at_offset(input_buffer)[0] >= '0') && - (buffer_at_offset(input_buffer)[0] <= '9')))) - { - return parse_number(item, input_buffer); - } - /* array */ - if(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == '[')) - { - return parse_array(item, input_buffer); - } - /* object */ - if(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == '{')) - { - return parse_object(item, input_buffer); - } + /* parse the different types of values */ + /* null */ + if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "null", 4) == 0)) + { + item->type = cJSON_NULL; + input_buffer->offset += 4; + return true; + } + /* false */ + if (can_read(input_buffer, 5) && (strncmp((const char*)buffer_at_offset(input_buffer), "false", 5) == 0)) + { + item->type = cJSON_False; + input_buffer->offset += 5; + return true; + } + /* true */ + if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "true", 4) == 0)) + { + item->type = cJSON_True; + item->valueint = 1; + input_buffer->offset += 4; + return true; + } + /* string */ + if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '\"')) + { + return parse_string(item, input_buffer); + } + /* number */ + if (can_access_at_index(input_buffer, 0) && ((buffer_at_offset(input_buffer)[0] == '-') || ((buffer_at_offset(input_buffer)[0] >= '0') && (buffer_at_offset(input_buffer)[0] <= '9')))) + { + return parse_number(item, input_buffer); + } + /* array */ + if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '[')) + { + return parse_array(item, input_buffer); + } + /* object */ + if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '{')) + { + return parse_object(item, input_buffer); + } - return false; + return false; } /* Render a value to text. */ -static cJSON_bool print_value(const cJSON *const item, - printbuffer *const output_buffer) { - unsigned char *output = NULL; +static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer) +{ + unsigned char *output = NULL; - if((item == NULL) || - (output_buffer == NULL)) - { - return false; - } + if ((item == NULL) || (output_buffer == NULL)) + { + return false; + } - switch((item->type) & 0xFF) { - case cJSON_NULL: - output = ensure(output_buffer, 5); - if(output == NULL) { - return false; - } - strcpy((char *) output, "null"); - return true; + switch ((item->type) & 0xFF) + { + case cJSON_NULL: + output = ensure(output_buffer, 5); + if (output == NULL) + { + return false; + } + strcpy((char*)output, "null"); + return true; - case cJSON_False: - output = ensure(output_buffer, 6); - if(output == NULL) { - return false; - } - strcpy((char *) output, "false"); - return true; + case cJSON_False: + output = ensure(output_buffer, 6); + if (output == NULL) + { + return false; + } + strcpy((char*)output, "false"); + return true; - case cJSON_True: - output = ensure(output_buffer, 5); - if(output == NULL) { - return false; - } - strcpy((char *) output, "true"); - return true; + case cJSON_True: + output = ensure(output_buffer, 5); + if (output == NULL) + { + return false; + } + strcpy((char*)output, "true"); + return true; - case cJSON_Number: - return print_number(item, output_buffer); + case cJSON_Number: + return print_number(item, output_buffer); - case cJSON_Raw: - { - size_t raw_length = 0; - if(item->valuestring == NULL) { - return false; - } + case cJSON_Raw: + { + size_t raw_length = 0; + if (item->valuestring == NULL) + { + return false; + } - raw_length = strlen(item->valuestring) + sizeof(""); - output = ensure(output_buffer, raw_length); - if(output == NULL) { - return false; - } - memcpy(output, item->valuestring, raw_length); - return true; - } + raw_length = strlen(item->valuestring) + sizeof(""); + output = ensure(output_buffer, raw_length); + if (output == NULL) + { + return false; + } + memcpy(output, item->valuestring, raw_length); + return true; + } - case cJSON_String: - return print_string(item, output_buffer); + case cJSON_String: + return print_string(item, output_buffer); - case cJSON_Array: - return print_array(item, output_buffer); + case cJSON_Array: + return print_array(item, output_buffer); - case cJSON_Object: - return print_object(item, output_buffer); + case cJSON_Object: + return print_object(item, output_buffer); - default: - return false; - } + default: + return false; + } } /* Build an array from input text. */ -static cJSON_bool parse_array(cJSON *const item, - parse_buffer *const input_buffer) { - cJSON *head = NULL; /* head of the linked list */ - cJSON *current_item = NULL; +static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer) +{ + cJSON *head = NULL; /* head of the linked list */ + cJSON *current_item = NULL; - if(input_buffer->depth >= CJSON_NESTING_LIMIT) { - return false; /* to deeply nested */ - } - input_buffer->depth++; + if (input_buffer->depth >= CJSON_NESTING_LIMIT) + { + return false; /* to deeply nested */ + } + input_buffer->depth++; - if(buffer_at_offset(input_buffer)[0] != '[') { - /* not an array */ - goto fail; - } + if (buffer_at_offset(input_buffer)[0] != '[') + { + /* not an array */ + goto fail; + } - input_buffer->offset++; - buffer_skip_whitespace(input_buffer); - if(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == ']')) - { - /* empty array */ - goto success; - } + input_buffer->offset++; + buffer_skip_whitespace(input_buffer); + if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ']')) + { + /* empty array */ + goto success; + } - /* check if we skipped to the end of the buffer */ - if(cannot_access_at_index(input_buffer, 0)) { - input_buffer->offset--; - goto fail; - } + /* check if we skipped to the end of the buffer */ + if (cannot_access_at_index(input_buffer, 0)) + { + input_buffer->offset--; + goto fail; + } - /* step back to character in front of the first element */ - input_buffer->offset--; - /* loop through the comma separated array elements */ - do { - /* allocate next item */ - cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks)); - if(new_item == NULL) { - goto fail; /* allocation failure */ - } + /* step back to character in front of the first element */ + input_buffer->offset--; + /* loop through the comma separated array elements */ + do + { + /* allocate next item */ + cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks)); + if (new_item == NULL) + { + goto fail; /* allocation failure */ + } - /* attach next item to list */ - if(head == NULL) { - /* start the linked list */ - current_item = head = new_item; - } else { - /* add to the end and advance */ - current_item->next = new_item; - new_item->prev = current_item; - current_item = new_item; - } + /* attach next item to list */ + if (head == NULL) + { + /* start the linked list */ + current_item = head = new_item; + } + else + { + /* add to the end and advance */ + current_item->next = new_item; + new_item->prev = current_item; + current_item = new_item; + } - /* parse next value */ - input_buffer->offset++; - buffer_skip_whitespace(input_buffer); - if(!parse_value(current_item, input_buffer)) { - goto fail; /* failed to parse value */ - } - buffer_skip_whitespace(input_buffer); - } while(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == ',')); + /* parse next value */ + input_buffer->offset++; + buffer_skip_whitespace(input_buffer); + if (!parse_value(current_item, input_buffer)) + { + goto fail; /* failed to parse value */ + } + buffer_skip_whitespace(input_buffer); + } + while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ',')); - if(cannot_access_at_index(input_buffer, 0) || - (buffer_at_offset(input_buffer)[0] != ']') ) - { - goto fail; /* expected end of array */ - } + if (cannot_access_at_index(input_buffer, 0) || buffer_at_offset(input_buffer)[0] != ']') + { + goto fail; /* expected end of array */ + } success: - input_buffer->depth--; + input_buffer->depth--; - item->type = cJSON_Array; - item->child = head; + item->type = cJSON_Array; + item->child = head; - input_buffer->offset++; + input_buffer->offset++; - return true; + return true; fail: - if(head != NULL) { - cJSON_Delete(head); - } + if (head != NULL) + { + cJSON_Delete(head); + } - return false; + return false; } /* Render an array to text */ -static cJSON_bool print_array(const cJSON *const item, - printbuffer *const output_buffer) { - unsigned char *output_pointer = NULL; - size_t length = 0; - cJSON *current_element = item->child; +static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer) +{ + unsigned char *output_pointer = NULL; + size_t length = 0; + cJSON *current_element = item->child; - if(output_buffer == NULL) { - return false; - } + if (output_buffer == NULL) + { + return false; + } - /* Compose the output array. */ - /* opening square bracket */ - output_pointer = ensure(output_buffer, 1); - if(output_pointer == NULL) { - return false; - } + /* Compose the output array. */ + /* opening square bracket */ + output_pointer = ensure(output_buffer, 1); + if (output_pointer == NULL) + { + return false; + } - *output_pointer = '['; - output_buffer->offset++; - output_buffer->depth++; + *output_pointer = '['; + output_buffer->offset++; + output_buffer->depth++; - while(current_element != NULL) { - if(!print_value(current_element, output_buffer)) { - return false; - } - update_offset(output_buffer); - if(current_element->next) { - length = (size_t) (output_buffer->format ? 2 : 1); - output_pointer = ensure(output_buffer, length + 1); - if(output_pointer == NULL) { - return false; - } - *output_pointer++ = ','; - if(output_buffer->format) { - *output_pointer++ = ' '; - } - *output_pointer = '\0'; - output_buffer->offset += length; - } - current_element = current_element->next; - } + while (current_element != NULL) + { + if (!print_value(current_element, output_buffer)) + { + return false; + } + update_offset(output_buffer); + if (current_element->next) + { + length = (size_t) (output_buffer->format ? 2 : 1); + output_pointer = ensure(output_buffer, length + 1); + if (output_pointer == NULL) + { + return false; + } + *output_pointer++ = ','; + if(output_buffer->format) + { + *output_pointer++ = ' '; + } + *output_pointer = '\0'; + output_buffer->offset += length; + } + current_element = current_element->next; + } - output_pointer = ensure(output_buffer, 2); - if(output_pointer == NULL) { - return false; - } - *output_pointer++ = ']'; - *output_pointer = '\0'; - output_buffer->depth--; + output_pointer = ensure(output_buffer, 2); + if (output_pointer == NULL) + { + return false; + } + *output_pointer++ = ']'; + *output_pointer = '\0'; + output_buffer->depth--; - return true; + return true; } /* Build an object from the text. */ -static cJSON_bool parse_object(cJSON *const item, - parse_buffer *const input_buffer) { - cJSON *head = NULL; /* linked list head */ - cJSON *current_item = NULL; +static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer) +{ + cJSON *head = NULL; /* linked list head */ + cJSON *current_item = NULL; - if(input_buffer->depth >= CJSON_NESTING_LIMIT) { - return false; /* to deeply nested */ - } - input_buffer->depth++; + if (input_buffer->depth >= CJSON_NESTING_LIMIT) + { + return false; /* to deeply nested */ + } + input_buffer->depth++; - if(cannot_access_at_index(input_buffer, 0) || - (buffer_at_offset(input_buffer)[0] != '{')) - { - goto fail; /* not an object */ - } + if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '{')) + { + goto fail; /* not an object */ + } - input_buffer->offset++; - buffer_skip_whitespace(input_buffer); - if(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == '}')) - { - goto success; /* empty object */ - } + input_buffer->offset++; + buffer_skip_whitespace(input_buffer); + if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '}')) + { + goto success; /* empty object */ + } - /* check if we skipped to the end of the buffer */ - if(cannot_access_at_index(input_buffer, 0)) { - input_buffer->offset--; - goto fail; - } + /* check if we skipped to the end of the buffer */ + if (cannot_access_at_index(input_buffer, 0)) + { + input_buffer->offset--; + goto fail; + } - /* step back to character in front of the first element */ - input_buffer->offset--; - /* loop through the comma separated array elements */ - do { - /* allocate next item */ - cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks)); - if(new_item == NULL) { - goto fail; /* allocation failure */ - } + /* step back to character in front of the first element */ + input_buffer->offset--; + /* loop through the comma separated array elements */ + do + { + /* allocate next item */ + cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks)); + if (new_item == NULL) + { + goto fail; /* allocation failure */ + } - /* attach next item to list */ - if(head == NULL) { - /* start the linked list */ - current_item = head = new_item; - } else { - /* add to the end and advance */ - current_item->next = new_item; - new_item->prev = current_item; - current_item = new_item; - } + /* attach next item to list */ + if (head == NULL) + { + /* start the linked list */ + current_item = head = new_item; + } + else + { + /* add to the end and advance */ + current_item->next = new_item; + new_item->prev = current_item; + current_item = new_item; + } - /* parse the name of the child */ - input_buffer->offset++; - buffer_skip_whitespace(input_buffer); - if(!parse_string(current_item, input_buffer)) { - goto fail; /* faile to parse name */ - } - buffer_skip_whitespace(input_buffer); + /* parse the name of the child */ + input_buffer->offset++; + buffer_skip_whitespace(input_buffer); + if (!parse_string(current_item, input_buffer)) + { + goto fail; /* faile to parse name */ + } + buffer_skip_whitespace(input_buffer); - /* swap valuestring and string, because we parsed the name */ - current_item->string = current_item->valuestring; - current_item->valuestring = NULL; + /* swap valuestring and string, because we parsed the name */ + current_item->string = current_item->valuestring; + current_item->valuestring = NULL; - if(cannot_access_at_index(input_buffer, 0) || - (buffer_at_offset(input_buffer)[0] != ':')) - { - goto fail; /* invalid object */ - } + if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != ':')) + { + goto fail; /* invalid object */ + } - /* parse the value */ - input_buffer->offset++; - buffer_skip_whitespace(input_buffer); - if(!parse_value(current_item, input_buffer)) { - goto fail; /* failed to parse value */ - } - buffer_skip_whitespace(input_buffer); - } while(can_access_at_index(input_buffer, 0) && - (buffer_at_offset(input_buffer)[0] == ',')); + /* parse the value */ + input_buffer->offset++; + buffer_skip_whitespace(input_buffer); + if (!parse_value(current_item, input_buffer)) + { + goto fail; /* failed to parse value */ + } + buffer_skip_whitespace(input_buffer); + } + while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ',')); - if(cannot_access_at_index(input_buffer, 0) || - (buffer_at_offset(input_buffer)[0] != '}')) - { - goto fail; /* expected end of object */ - } + if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '}')) + { + goto fail; /* expected end of object */ + } success: - input_buffer->depth--; + input_buffer->depth--; - item->type = cJSON_Object; - item->child = head; + item->type = cJSON_Object; + item->child = head; - input_buffer->offset++; - return true; + input_buffer->offset++; + return true; fail: - if(head != NULL) { - cJSON_Delete(head); - } + if (head != NULL) + { + cJSON_Delete(head); + } - return false; + return false; } /* Render an object to text. */ -static cJSON_bool print_object(const cJSON *const item, - printbuffer *const output_buffer) { - unsigned char *output_pointer = NULL; - size_t length = 0; - cJSON *current_item = item->child; +static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer) +{ + unsigned char *output_pointer = NULL; + size_t length = 0; + cJSON *current_item = item->child; - if(output_buffer == NULL) { - return false; - } + if (output_buffer == NULL) + { + return false; + } - /* Compose the output: */ - length = (size_t) (output_buffer->format ? 2 : 1); /* fmt: {\n */ - output_pointer = ensure(output_buffer, length + 1); - if(output_pointer == NULL) { - return false; - } + /* Compose the output: */ + length = (size_t) (output_buffer->format ? 2 : 1); /* fmt: {\n */ + output_pointer = ensure(output_buffer, length + 1); + if (output_pointer == NULL) + { + return false; + } - *output_pointer++ = '{'; - output_buffer->depth++; - if(output_buffer->format) { - *output_pointer++ = '\n'; - } - output_buffer->offset += length; + *output_pointer++ = '{'; + output_buffer->depth++; + if (output_buffer->format) + { + *output_pointer++ = '\n'; + } + output_buffer->offset += length; - while(current_item) { - if(output_buffer->format) { - size_t i; - output_pointer = ensure(output_buffer, - output_buffer->depth); - if(output_pointer == NULL) { - return false; - } - for(i = 0; i < output_buffer->depth; i++) { - *output_pointer++ = '\t'; - } - output_buffer->offset += output_buffer->depth; - } + while (current_item) + { + if (output_buffer->format) + { + size_t i; + output_pointer = ensure(output_buffer, output_buffer->depth); + if (output_pointer == NULL) + { + return false; + } + for (i = 0; i < output_buffer->depth; i++) + { + *output_pointer++ = '\t'; + } + output_buffer->offset += output_buffer->depth; + } - /* print key */ - if(!print_string_ptr((unsigned char *) current_item->string, - output_buffer)) { - return false; - } - update_offset(output_buffer); + /* print key */ + if (!print_string_ptr((unsigned char*)current_item->string, output_buffer)) + { + return false; + } + update_offset(output_buffer); - length = (size_t) (output_buffer->format ? 2 : 1); - output_pointer = ensure(output_buffer, length); - if(output_pointer == NULL) { - return false; - } - *output_pointer++ = ':'; - if(output_buffer->format) { - *output_pointer++ = '\t'; - } - output_buffer->offset += length; + length = (size_t) (output_buffer->format ? 2 : 1); + output_pointer = ensure(output_buffer, length); + if (output_pointer == NULL) + { + return false; + } + *output_pointer++ = ':'; + if (output_buffer->format) + { + *output_pointer++ = '\t'; + } + output_buffer->offset += length; - /* print value */ - if(!print_value(current_item, output_buffer)) { - return false; - } - update_offset(output_buffer); + /* print value */ + if (!print_value(current_item, output_buffer)) + { + return false; + } + update_offset(output_buffer); - /* print comma if not last */ - length = - (size_t) ((output_buffer->format ? 1 : 0) + - (current_item->next ? 1 : 0)); - output_pointer = ensure(output_buffer, length + 1); - if(output_pointer == NULL) { - return false; - } - if(current_item->next) { - *output_pointer++ = ','; - } + /* print comma if not last */ + length = (size_t) ((output_buffer->format ? 1 : 0) + (current_item->next ? 1 : 0)); + output_pointer = ensure(output_buffer, length + 1); + if (output_pointer == NULL) + { + return false; + } + if (current_item->next) + { + *output_pointer++ = ','; + } - if(output_buffer->format) { - *output_pointer++ = '\n'; - } - *output_pointer = '\0'; - output_buffer->offset += length; + if (output_buffer->format) + { + *output_pointer++ = '\n'; + } + *output_pointer = '\0'; + output_buffer->offset += length; - current_item = current_item->next; - } + current_item = current_item->next; + } - output_pointer = - ensure(output_buffer, - output_buffer->format ? (output_buffer->depth + 1) : 2); - if(output_pointer == NULL) { - return false; - } - if(output_buffer->format) { - size_t i; - for(i = 0; i < (output_buffer->depth - 1); i++) { - *output_pointer++ = '\t'; - } - } - *output_pointer++ = '}'; - *output_pointer = '\0'; - output_buffer->depth--; + output_pointer = ensure(output_buffer, output_buffer->format ? (output_buffer->depth + 1) : 2); + if (output_pointer == NULL) + { + return false; + } + if (output_buffer->format) + { + size_t i; + for (i = 0; i < (output_buffer->depth - 1); i++) + { + *output_pointer++ = '\t'; + } + } + *output_pointer++ = '}'; + *output_pointer = '\0'; + output_buffer->depth--; - return true; + return true; } /* Get Array size/item / object item. */ -CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON * array) +CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array) { - cJSON *child = NULL; - size_t size = 0; + cJSON *child = NULL; + size_t size = 0; - if(array == NULL) { - return 0; - } + if (array == NULL) + { + return 0; + } - child = array->child; + child = array->child; - while(child != NULL) { - size++; - child = child->next; - } + while(child != NULL) + { + size++; + child = child->next; + } - /* FIXME: Can overflow here. Cannot be fixed without breaking the API */ + /* FIXME: Can overflow here. Cannot be fixed without breaking the API */ - return (int) size; + return (int)size; } -static cJSON *get_array_item(const cJSON *array, size_t index) { - cJSON *current_child = NULL; - - if(array == NULL) { - return NULL; - } - - current_child = array->child; - while((current_child != NULL) && - (index > 0)) - { - index--; - current_child = current_child->next; - } - - return current_child; -} - -CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON * array, int index) +static cJSON* get_array_item(const cJSON *array, size_t index) { - if(index < 0) { - return NULL; - } + cJSON *current_child = NULL; - return get_array_item(array, (size_t) index); + if (array == NULL) + { + return NULL; + } + + current_child = array->child; + while ((current_child != NULL) && (index > 0)) + { + index--; + current_child = current_child->next; + } + + return current_child; } -static cJSON *get_object_item(const cJSON *const object, const char *const name, - const cJSON_bool case_sensitive) { - cJSON *current_element = NULL; - - if((object == NULL) || - (name == NULL)) - { - return NULL; - } - - current_element = object->child; - if(case_sensitive) { - while((current_element != NULL) && - (strcmp(name, current_element->string) != 0)) - { - current_element = current_element->next; - } - } else { - while((current_element != NULL) && - (case_insensitive_strcmp((const unsigned char *) name, - (const unsigned char *) ( - current_element->string)) - != 0)) - { - current_element = current_element->next; - } - } - - return current_element; -} - -CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, - const char *const string) +CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index) { - return get_object_item(object, string, false); + if (index < 0) + { + return NULL; + } + + return get_array_item(array, (size_t)index); } -CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive( - const cJSON * const object, const char *const string) +static cJSON *get_object_item(const cJSON * const object, const char * const name, const cJSON_bool case_sensitive) { - return get_object_item(object, string, true); + cJSON *current_element = NULL; + + if ((object == NULL) || (name == NULL)) + { + return NULL; + } + + current_element = object->child; + if (case_sensitive) + { + while ((current_element != NULL) && (strcmp(name, current_element->string) != 0)) + { + current_element = current_element->next; + } + } + else + { + while ((current_element != NULL) && (case_insensitive_strcmp((const unsigned char*)name, (const unsigned char*)(current_element->string)) != 0)) + { + current_element = current_element->next; + } + } + + return current_element; } -CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON * object, - const char *string) +CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string) { - return cJSON_GetObjectItem(object, string) ? 1 : 0; + return get_object_item(object, string, false); +} + +CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string) +{ + return get_object_item(object, string, true); +} + +CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string) +{ + return cJSON_GetObjectItem(object, string) ? 1 : 0; } /* Utility for array list handling. */ -static void suffix_object(cJSON *prev, cJSON *item) { - prev->next = item; - item->prev = prev; +static void suffix_object(cJSON *prev, cJSON *item) +{ + prev->next = item; + item->prev = prev; } /* Utility for handling references. */ -static cJSON *create_reference(const cJSON *item, - const internal_hooks *const hooks) { - cJSON *reference = NULL; - if(item == NULL) { - return NULL; - } +static cJSON *create_reference(const cJSON *item, const internal_hooks * const hooks) +{ + cJSON *reference = NULL; + if (item == NULL) + { + return NULL; + } - reference = cJSON_New_Item(hooks); - if(reference == NULL) { - return NULL; - } + reference = cJSON_New_Item(hooks); + if (reference == NULL) + { + return NULL; + } - memcpy(reference, item, sizeof(cJSON)); - reference->string = NULL; - reference->type |= cJSON_IsReference; - reference->next = reference->prev = NULL; - return reference; + memcpy(reference, item, sizeof(cJSON)); + reference->string = NULL; + reference->type |= cJSON_IsReference; + reference->next = reference->prev = NULL; + return reference; } -static cJSON_bool add_item_to_array(cJSON *array, cJSON *item) { - cJSON *child = NULL; +static cJSON_bool add_item_to_array(cJSON *array, cJSON *item) +{ + cJSON *child = NULL; - if((item == NULL) || - (array == NULL)) - { - return false; - } + if ((item == NULL) || (array == NULL)) + { + return false; + } - child = array->child; + child = array->child; - if(child == NULL) { - /* list is empty, start new one */ - array->child = item; - } else { - /* append to the end */ - while(child->next) { - child = child->next; - } - suffix_object(child, item); - } + if (child == NULL) + { + /* list is empty, start new one */ + array->child = item; + } + else + { + /* append to the end */ + while (child->next) + { + child = child->next; + } + suffix_object(child, item); + } - return true; + return true; } /* Add item to array/object. */ -CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON * array, cJSON * item) +CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item) { - add_item_to_array(array, item); + add_item_to_array(array, item); } -#if defined(__clang__) || \ - (defined(__GNUC__) && \ - ((__GNUC__ > 4) || \ - ((__GNUC__ == 4) && \ - (__GNUC_MINOR__ > 5)))) +#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5)))) #pragma GCC diagnostic push #endif #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wcast-qual" #endif /* helper function to cast away const */ -static void *cast_away_const(const void *string) { - return (void *) string; +static void* cast_away_const(const void* string) +{ + return (void*)string; } -#if defined(__clang__) || \ - (defined(__GNUC__) && \ - ((__GNUC__ > 4) || \ - ((__GNUC__ == 4) && \ - (__GNUC_MINOR__ > 5)))) +#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5)))) #pragma GCC diagnostic pop #endif -static cJSON_bool add_item_to_object(cJSON *const object, - const char *const string, - cJSON *const item, - const internal_hooks *const hooks, - const cJSON_bool constant_key) +static cJSON_bool add_item_to_object(cJSON * const object, const char * const string, cJSON * const item, const internal_hooks * const hooks, const cJSON_bool constant_key) { - char *new_key = NULL; - int new_type = cJSON_Invalid; + char *new_key = NULL; + int new_type = cJSON_Invalid; - if((object == NULL) || - (string == NULL) || - (item == NULL)) - { - return false; - } + if ((object == NULL) || (string == NULL) || (item == NULL)) + { + return false; + } - if(constant_key) { - new_key = (char *) cast_away_const(string); - new_type = item->type | cJSON_StringIsConst; - } else { - new_key = (char *) cJSON_strdup((const unsigned char *) string, - hooks); - if(new_key == NULL) { - return false; - } + if (constant_key) + { + new_key = (char*)cast_away_const(string); + new_type = item->type | cJSON_StringIsConst; + } + else + { + new_key = (char*)cJSON_strdup((const unsigned char*)string, hooks); + if (new_key == NULL) + { + return false; + } - new_type = item->type & ~cJSON_StringIsConst; - } + new_type = item->type & ~cJSON_StringIsConst; + } - if(!(item->type & cJSON_StringIsConst) && - (item->string != NULL)) - { - hooks->deallocate(item->string); - } + if (!(item->type & cJSON_StringIsConst) && (item->string != NULL)) + { + hooks->deallocate(item->string); + } - item->string = new_key; - item->type = new_type; + item->string = new_key; + item->type = new_type; - return add_item_to_array(object, item); + return add_item_to_array(object, item); } -CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON * object, const char *string, - cJSON * item) +CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item) { - add_item_to_object(object, string, item, &global_hooks, false); + add_item_to_object(object, string, item, &global_hooks, false); } /* Add an item to an object with constant string as key */ -CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON * object, const char *string, - cJSON * item) +CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item) { - add_item_to_object(object, string, item, &global_hooks, true); + add_item_to_object(object, string, item, &global_hooks, true); } -CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON * array, cJSON * item) +CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item) { - if(array == NULL) { - return; - } + if (array == NULL) + { + return; + } - add_item_to_array(array, create_reference(item, &global_hooks)); + add_item_to_array(array, create_reference(item, &global_hooks)); } -CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON * object, - const char *string, - cJSON * item) +CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item) { - if((object == NULL) || - (string == NULL)) - { - return; - } + if ((object == NULL) || (string == NULL)) + { + return; + } - add_item_to_object(object, string, create_reference(item, - &global_hooks), &global_hooks, - false); + add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false); } -CJSON_PUBLIC(cJSON *) cJSON_AddNullToObject(cJSON * const object, - const char *const name) +CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name) { - cJSON *null = cJSON_CreateNull(); - if(add_item_to_object(object, name, null, &global_hooks, false)) { - return null; - } + cJSON *null = cJSON_CreateNull(); + if (add_item_to_object(object, name, null, &global_hooks, false)) + { + return null; + } - cJSON_Delete(null); - return NULL; + cJSON_Delete(null); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddTrueToObject(cJSON * const object, - const char *const name) +CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name) { - cJSON *true_item = cJSON_CreateTrue(); - if(add_item_to_object(object, name, true_item, &global_hooks, false)) { - return true_item; - } + cJSON *true_item = cJSON_CreateTrue(); + if (add_item_to_object(object, name, true_item, &global_hooks, false)) + { + return true_item; + } - cJSON_Delete(true_item); - return NULL; + cJSON_Delete(true_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddFalseToObject(cJSON * const object, - const char *const name) +CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name) { - cJSON *false_item = cJSON_CreateFalse(); - if(add_item_to_object(object, name, false_item, &global_hooks, false)) { - return false_item; - } + cJSON *false_item = cJSON_CreateFalse(); + if (add_item_to_object(object, name, false_item, &global_hooks, false)) + { + return false_item; + } - cJSON_Delete(false_item); - return NULL; + cJSON_Delete(false_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddBoolToObject(cJSON * const object, - const char *const name, - const cJSON_bool boolean) +CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean) { - cJSON *bool_item = cJSON_CreateBool(boolean); - if(add_item_to_object(object, name, bool_item, &global_hooks, false)) { - return bool_item; - } + cJSON *bool_item = cJSON_CreateBool(boolean); + if (add_item_to_object(object, name, bool_item, &global_hooks, false)) + { + return bool_item; + } - cJSON_Delete(bool_item); - return NULL; + cJSON_Delete(bool_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddNumberToObject(cJSON * const object, - const char *const name, - const double number) +CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number) { - cJSON *number_item = cJSON_CreateNumber(number); - if(add_item_to_object(object, name, number_item, &global_hooks, - false)) { - return number_item; - } + cJSON *number_item = cJSON_CreateNumber(number); + if (add_item_to_object(object, name, number_item, &global_hooks, false)) + { + return number_item; + } - cJSON_Delete(number_item); - return NULL; + cJSON_Delete(number_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddStringToObject(cJSON * const object, - const char *const name, - const char *const string) +CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string) { - cJSON *string_item = cJSON_CreateString(string); - if(add_item_to_object(object, name, string_item, &global_hooks, - false)) { - return string_item; - } + cJSON *string_item = cJSON_CreateString(string); + if (add_item_to_object(object, name, string_item, &global_hooks, false)) + { + return string_item; + } - cJSON_Delete(string_item); - return NULL; + cJSON_Delete(string_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddRawToObject(cJSON * const object, - const char *const name, - const char *const raw) +CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw) { - cJSON *raw_item = cJSON_CreateRaw(raw); - if(add_item_to_object(object, name, raw_item, &global_hooks, false)) { - return raw_item; - } + cJSON *raw_item = cJSON_CreateRaw(raw); + if (add_item_to_object(object, name, raw_item, &global_hooks, false)) + { + return raw_item; + } - cJSON_Delete(raw_item); - return NULL; + cJSON_Delete(raw_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddObjectToObject(cJSON * const object, - const char *const name) +CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name) { - cJSON *object_item = cJSON_CreateObject(); - if(add_item_to_object(object, name, object_item, &global_hooks, - false)) { - return object_item; - } + cJSON *object_item = cJSON_CreateObject(); + if (add_item_to_object(object, name, object_item, &global_hooks, false)) + { + return object_item; + } - cJSON_Delete(object_item); - return NULL; + cJSON_Delete(object_item); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_AddArrayToObject(cJSON * const object, - const char *const name) +CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name) { - cJSON *array = cJSON_CreateArray(); - if(add_item_to_object(object, name, array, &global_hooks, false)) { - return array; - } + cJSON *array = cJSON_CreateArray(); + if (add_item_to_object(object, name, array, &global_hooks, false)) + { + return array; + } - cJSON_Delete(array); - return NULL; + cJSON_Delete(array); + return NULL; } -CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON * parent, - cJSON * const item) +CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item) { - if((parent == NULL) || - (item == NULL)) - { - return NULL; - } + if ((parent == NULL) || (item == NULL)) + { + return NULL; + } - if(item->prev != NULL) { - /* not the first element */ - item->prev->next = item->next; - } - if(item->next != NULL) { - /* not the last element */ - item->next->prev = item->prev; - } + if (item->prev != NULL) + { + /* not the first element */ + item->prev->next = item->next; + } + if (item->next != NULL) + { + /* not the last element */ + item->next->prev = item->prev; + } - if(item == parent->child) { - /* first element */ - parent->child = item->next; - } - /* make sure the detached item doesn't point anywhere anymore */ - item->prev = NULL; - item->next = NULL; + if (item == parent->child) + { + /* first element */ + parent->child = item->next; + } + /* make sure the detached item doesn't point anywhere anymore */ + item->prev = NULL; + item->next = NULL; - return item; + return item; } -CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON * array, int which) +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which) { - if(which < 0) { - return NULL; - } + if (which < 0) + { + return NULL; + } - return cJSON_DetachItemViaPointer(array, - get_array_item(array, - (size_t) which)); + return cJSON_DetachItemViaPointer(array, get_array_item(array, (size_t)which)); } -CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON * array, int which) +CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which) { - cJSON_Delete(cJSON_DetachItemFromArray(array, which)); + cJSON_Delete(cJSON_DetachItemFromArray(array, which)); } -CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON * object, - const char *string) +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string) { - cJSON *to_detach = cJSON_GetObjectItem(object, string); + cJSON *to_detach = cJSON_GetObjectItem(object, string); - return cJSON_DetachItemViaPointer(object, to_detach); + return cJSON_DetachItemViaPointer(object, to_detach); } -CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON * object, - const char *string) +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string) { - cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string); + cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string); - return cJSON_DetachItemViaPointer(object, to_detach); + return cJSON_DetachItemViaPointer(object, to_detach); } -CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON * object, - const char *string) +CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string) { - cJSON_Delete(cJSON_DetachItemFromObject(object, string)); + cJSON_Delete(cJSON_DetachItemFromObject(object, string)); } -CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON * object, - const char *string) +CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string) { - cJSON_Delete(cJSON_DetachItemFromObjectCaseSensitive(object, string)); + cJSON_Delete(cJSON_DetachItemFromObjectCaseSensitive(object, string)); } /* Replace array/object items with new ones. */ -CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON * array, int which, - cJSON * newitem) +CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem) { - cJSON *after_inserted = NULL; + cJSON *after_inserted = NULL; - if(which < 0) { - return; - } + if (which < 0) + { + return; + } - after_inserted = get_array_item(array, (size_t) which); - if(after_inserted == NULL) { - add_item_to_array(array, newitem); - return; - } + after_inserted = get_array_item(array, (size_t)which); + if (after_inserted == NULL) + { + add_item_to_array(array, newitem); + return; + } - newitem->next = after_inserted; - newitem->prev = after_inserted->prev; - after_inserted->prev = newitem; - if(after_inserted == array->child) { - array->child = newitem; - } else { - newitem->prev->next = newitem; - } + newitem->next = after_inserted; + newitem->prev = after_inserted->prev; + after_inserted->prev = newitem; + if (after_inserted == array->child) + { + array->child = newitem; + } + else + { + newitem->prev->next = newitem; + } } -CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, - cJSON * const item, - cJSON * replacement) +CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement) { - if((parent == NULL) || - (replacement == NULL) || - (item == NULL)) - { - return false; - } + if ((parent == NULL) || (replacement == NULL) || (item == NULL)) + { + return false; + } - if(replacement == item) { - return true; - } + if (replacement == item) + { + return true; + } - replacement->next = item->next; - replacement->prev = item->prev; + replacement->next = item->next; + replacement->prev = item->prev; - if(replacement->next != NULL) { - replacement->next->prev = replacement; - } - if(replacement->prev != NULL) { - replacement->prev->next = replacement; - } - if(parent->child == item) { - parent->child = replacement; - } + if (replacement->next != NULL) + { + replacement->next->prev = replacement; + } + if (replacement->prev != NULL) + { + replacement->prev->next = replacement; + } + if (parent->child == item) + { + parent->child = replacement; + } - item->next = NULL; - item->prev = NULL; - cJSON_Delete(item); + item->next = NULL; + item->prev = NULL; + cJSON_Delete(item); - return true; + return true; } -CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON * array, int which, - cJSON * newitem) +CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem) { - if(which < 0) { - return; - } + if (which < 0) + { + return; + } - cJSON_ReplaceItemViaPointer(array, get_array_item(array, - (size_t) which), - newitem); + cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem); } -static cJSON_bool replace_item_in_object(cJSON *object, const char *string, - cJSON *replacement, - cJSON_bool case_sensitive) { - if((replacement == NULL) || - (string == NULL)) - { - return false; - } +static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive) +{ + if ((replacement == NULL) || (string == NULL)) + { + return false; + } - /* replace the name in the replacement */ - if(!(replacement->type & cJSON_StringIsConst) && - (replacement->string != NULL)) - { - cJSON_free(replacement->string); - } - replacement->string = (char *) cJSON_strdup( - (const unsigned char *) string, &global_hooks); - replacement->type &= ~cJSON_StringIsConst; + /* replace the name in the replacement */ + if (!(replacement->type & cJSON_StringIsConst) && (replacement->string != NULL)) + { + cJSON_free(replacement->string); + } + replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks); + replacement->type &= ~cJSON_StringIsConst; - cJSON_ReplaceItemViaPointer(object, - get_object_item(object, string, - case_sensitive), - replacement); + cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement); - return true; + return true; } -CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON * object, const char *string, - cJSON * newitem) +CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem) { - replace_item_in_object(object, string, newitem, false); + replace_item_in_object(object, string, newitem, false); } -CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON * object, - const char *string, - cJSON * newitem) +CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem) { - replace_item_in_object(object, string, newitem, true); + replace_item_in_object(object, string, newitem, true); } /* Create basic types: */ CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_NULL; - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = cJSON_NULL; + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_True; - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = cJSON_True; + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_False; - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = cJSON_False; + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool b) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = b ? cJSON_True : cJSON_False; - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = b ? cJSON_True : cJSON_False; + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_Number; - item->valuedouble = num; + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = cJSON_Number; + item->valuedouble = num; - /* use saturation in case of overflow */ - if(num >= INT_MAX) { - item->valueint = INT_MAX; - } else if(num <= INT_MIN) { - item->valueint = INT_MIN; - } else { - item->valueint = (int) num; - } - } + /* use saturation in case of overflow */ + if (num >= INT_MAX) + { + item->valueint = INT_MAX; + } + else if (num <= INT_MIN) + { + item->valueint = INT_MIN; + } + else + { + item->valueint = (int)num; + } + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_String; - item->valuestring = (char *) cJSON_strdup( - (const unsigned char *) string, &global_hooks); - if(!item->valuestring) { - cJSON_Delete(item); - return NULL; - } - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = cJSON_String; + item->valuestring = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks); + if(!item->valuestring) + { + cJSON_Delete(item); + return NULL; + } + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item != NULL) { - item->type = cJSON_String | cJSON_IsReference; - item->valuestring = (char *) cast_away_const(string); - } + cJSON *item = cJSON_New_Item(&global_hooks); + if (item != NULL) + { + item->type = cJSON_String | cJSON_IsReference; + item->valuestring = (char*)cast_away_const(string); + } - return item; + return item; } -CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON * child) +CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item != NULL) { - item->type = cJSON_Object | cJSON_IsReference; - item->child = (cJSON *) cast_away_const(child); - } + cJSON *item = cJSON_New_Item(&global_hooks); + if (item != NULL) { + item->type = cJSON_Object | cJSON_IsReference; + item->child = (cJSON*)cast_away_const(child); + } - return item; + return item; } -CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON * child) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item != NULL) { - item->type = cJSON_Array | cJSON_IsReference; - item->child = (cJSON *) cast_away_const(child); - } +CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child) { + cJSON *item = cJSON_New_Item(&global_hooks); + if (item != NULL) { + item->type = cJSON_Array | cJSON_IsReference; + item->child = (cJSON*)cast_away_const(child); + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_Raw; - item->valuestring = (char *) cJSON_strdup( - (const unsigned char *) raw, &global_hooks); - if(!item->valuestring) { - cJSON_Delete(item); - return NULL; - } - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type = cJSON_Raw; + item->valuestring = (char*)cJSON_strdup((const unsigned char*)raw, &global_hooks); + if(!item->valuestring) + { + cJSON_Delete(item); + return NULL; + } + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_Array; - } + cJSON *item = cJSON_New_Item(&global_hooks); + if(item) + { + item->type=cJSON_Array; + } - return item; + return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void) { - cJSON *item = cJSON_New_Item(&global_hooks); - if(item) { - item->type = cJSON_Object; - } + cJSON *item = cJSON_New_Item(&global_hooks); + if (item) + { + item->type = cJSON_Object; + } - return item; + return item; } /* Create Arrays: */ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count) { - size_t i = 0; - cJSON *n = NULL; - cJSON *p = NULL; - cJSON *a = NULL; + size_t i = 0; + cJSON *n = NULL; + cJSON *p = NULL; + cJSON *a = NULL; - if((count < 0) || - (numbers == NULL)) - { - return NULL; - } + if ((count < 0) || (numbers == NULL)) + { + return NULL; + } - a = cJSON_CreateArray(); - for(i = 0; a && - (i < (size_t) count); i++) - { - n = cJSON_CreateNumber(numbers[i]); - if(!n) { - cJSON_Delete(a); - return NULL; - } - if(!i) { - a->child = n; - } else { - suffix_object(p, n); - } - p = n; - } + a = cJSON_CreateArray(); + for(i = 0; a && (i < (size_t)count); i++) + { + n = cJSON_CreateNumber(numbers[i]); + if (!n) + { + cJSON_Delete(a); + return NULL; + } + if(!i) + { + a->child = n; + } + else + { + suffix_object(p, n); + } + p = n; + } - return a; + return a; } CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count) { - size_t i = 0; - cJSON *n = NULL; - cJSON *p = NULL; - cJSON *a = NULL; + size_t i = 0; + cJSON *n = NULL; + cJSON *p = NULL; + cJSON *a = NULL; - if((count < 0) || - (numbers == NULL)) - { - return NULL; - } + if ((count < 0) || (numbers == NULL)) + { + return NULL; + } - a = cJSON_CreateArray(); + a = cJSON_CreateArray(); - for(i = 0; a && - (i < (size_t) count); i++) - { - n = cJSON_CreateNumber((double) numbers[i]); - if(!n) { - cJSON_Delete(a); - return NULL; - } - if(!i) { - a->child = n; - } else { - suffix_object(p, n); - } - p = n; - } + for(i = 0; a && (i < (size_t)count); i++) + { + n = cJSON_CreateNumber((double)numbers[i]); + if(!n) + { + cJSON_Delete(a); + return NULL; + } + if(!i) + { + a->child = n; + } + else + { + suffix_object(p, n); + } + p = n; + } - return a; + return a; } CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count) { - size_t i = 0; - cJSON *n = NULL; - cJSON *p = NULL; - cJSON *a = NULL; + size_t i = 0; + cJSON *n = NULL; + cJSON *p = NULL; + cJSON *a = NULL; - if((count < 0) || - (numbers == NULL)) - { - return NULL; - } + if ((count < 0) || (numbers == NULL)) + { + return NULL; + } - a = cJSON_CreateArray(); + a = cJSON_CreateArray(); - for(i = 0; a && - (i < (size_t) count); i++) - { - n = cJSON_CreateNumber(numbers[i]); - if(!n) { - cJSON_Delete(a); - return NULL; - } - if(!i) { - a->child = n; - } else { - suffix_object(p, n); - } - p = n; - } + for(i = 0;a && (i < (size_t)count); i++) + { + n = cJSON_CreateNumber(numbers[i]); + if(!n) + { + cJSON_Delete(a); + return NULL; + } + if(!i) + { + a->child = n; + } + else + { + suffix_object(p, n); + } + p = n; + } - return a; + return a; } CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count) { - size_t i = 0; - cJSON *n = NULL; - cJSON *p = NULL; - cJSON *a = NULL; + size_t i = 0; + cJSON *n = NULL; + cJSON *p = NULL; + cJSON *a = NULL; - if((count < 0) || - (strings == NULL)) - { - return NULL; - } + if ((count < 0) || (strings == NULL)) + { + return NULL; + } - a = cJSON_CreateArray(); + a = cJSON_CreateArray(); - for(i = 0; a && - (i < (size_t) count); i++) - { - n = cJSON_CreateString(strings[i]); - if(!n) { - cJSON_Delete(a); - return NULL; - } - if(!i) { - a->child = n; - } else { - suffix_object(p, n); - } - p = n; - } + for (i = 0; a && (i < (size_t)count); i++) + { + n = cJSON_CreateString(strings[i]); + if(!n) + { + cJSON_Delete(a); + return NULL; + } + if(!i) + { + a->child = n; + } + else + { + suffix_object(p,n); + } + p = n; + } - return a; + return a; } /* Duplication */ -CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON * item, cJSON_bool recurse) +CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse) { - cJSON *newitem = NULL; - cJSON *child = NULL; - cJSON *next = NULL; - cJSON *newchild = NULL; + cJSON *newitem = NULL; + cJSON *child = NULL; + cJSON *next = NULL; + cJSON *newchild = NULL; - /* Bail on bad ptr */ - if(!item) { - goto fail; - } - /* Create new item */ - newitem = cJSON_New_Item(&global_hooks); - if(!newitem) { - goto fail; - } - /* Copy over all vars */ - newitem->type = item->type & (~cJSON_IsReference); - newitem->valueint = item->valueint; - newitem->valuedouble = item->valuedouble; - if(item->valuestring) { - newitem->valuestring = (char *) cJSON_strdup( - (unsigned char *) item->valuestring, &global_hooks); - if(!newitem->valuestring) { - goto fail; - } - } - if(item->string) { - newitem->string = - (item->type & - cJSON_StringIsConst) ? item->string : (char *) - cJSON_strdup(( - unsigned - char *) item->string, - &global_hooks); - if(!newitem->string) { - goto fail; - } - } - /* If non-recursive, then we're done! */ - if(!recurse) { - return newitem; - } - /* Walk the ->next chain for the child. */ - child = item->child; - while(child != NULL) { - newchild = cJSON_Duplicate(child, true); /* Duplicate (with recurse) each item in the ->next chain */ - if(!newchild) { - goto fail; - } - if(next != NULL) { - /* If newitem->child already set, then crosswire ->prev and ->next and move on */ - next->next = newchild; - newchild->prev = next; - next = newchild; - } else { - /* Set newitem->child and move to it */ - newitem->child = newchild; - next = newchild; - } - child = child->next; - } + /* Bail on bad ptr */ + if (!item) + { + goto fail; + } + /* Create new item */ + newitem = cJSON_New_Item(&global_hooks); + if (!newitem) + { + goto fail; + } + /* Copy over all vars */ + newitem->type = item->type & (~cJSON_IsReference); + newitem->valueint = item->valueint; + newitem->valuedouble = item->valuedouble; + if (item->valuestring) + { + newitem->valuestring = (char*)cJSON_strdup((unsigned char*)item->valuestring, &global_hooks); + if (!newitem->valuestring) + { + goto fail; + } + } + if (item->string) + { + newitem->string = (item->type&cJSON_StringIsConst) ? item->string : (char*)cJSON_strdup((unsigned char*)item->string, &global_hooks); + if (!newitem->string) + { + goto fail; + } + } + /* If non-recursive, then we're done! */ + if (!recurse) + { + return newitem; + } + /* Walk the ->next chain for the child. */ + child = item->child; + while (child != NULL) + { + newchild = cJSON_Duplicate(child, true); /* Duplicate (with recurse) each item in the ->next chain */ + if (!newchild) + { + goto fail; + } + if (next != NULL) + { + /* If newitem->child already set, then crosswire ->prev and ->next and move on */ + next->next = newchild; + newchild->prev = next; + next = newchild; + } + else + { + /* Set newitem->child and move to it */ + newitem->child = newchild; + next = newchild; + } + child = child->next; + } - return newitem; + return newitem; fail: - if(newitem != NULL) { - cJSON_Delete(newitem); - } + if (newitem != NULL) + { + cJSON_Delete(newitem); + } - return NULL; + return NULL; } CJSON_PUBLIC(void) cJSON_Minify(char *json) { - unsigned char *into = (unsigned char *) json; + unsigned char *into = (unsigned char*)json; - if(json == NULL) { - return; - } + if (json == NULL) + { + return; + } - while(*json) { - if(*json == ' ') { - json++; - } else if(*json == '\t') { - /* Whitespace characters. */ - json++; - } else if(*json == '\r') { - json++; - } else if(*json == '\n') { - json++; - } else if((*json == '/') && - (json[1] == '/')) - { - /* double-slash comments, to end of line. */ - while(*json && - (*json != '\n')) - { - json++; - } - } else if((*json == '/') && - (json[1] == '*')) - { - /* multiline comments. */ - while(*json && - !((*json == '*') && - (json[1] == '/'))) - { - json++; - } - json += 2; - } else if(*json == '\"') { - /* string literals, which are \" sensitive. */ - *into++ = (unsigned char) *json++; - while(*json && - (*json != '\"')) - { - if(*json == '\\') { - *into++ = (unsigned char) *json++; - } - *into++ = (unsigned char) *json++; - } - *into++ = (unsigned char) *json++; - } else { - /* All other characters. */ - *into++ = (unsigned char) *json++; - } - } + while (*json) + { + if (*json == ' ') + { + json++; + } + else if (*json == '\t') + { + /* Whitespace characters. */ + json++; + } + else if (*json == '\r') + { + json++; + } + else if (*json=='\n') + { + json++; + } + else if ((*json == '/') && (json[1] == '/')) + { + /* double-slash comments, to end of line. */ + while (*json && (*json != '\n')) + { + json++; + } + } + else if ((*json == '/') && (json[1] == '*')) + { + /* multiline comments. */ + while (*json && !((*json == '*') && (json[1] == '/'))) + { + json++; + } + json += 2; + } + else if (*json == '\"') + { + /* string literals, which are \" sensitive. */ + *into++ = (unsigned char)*json++; + while (*json && (*json != '\"')) + { + if (*json == '\\') + { + *into++ = (unsigned char)*json++; + } + *into++ = (unsigned char)*json++; + } + *into++ = (unsigned char)*json++; + } + else + { + /* All other characters. */ + *into++ = (unsigned char)*json++; + } + } - /* and null-terminate. */ - *into = '\0'; + /* and null-terminate. */ + *into = '\0'; } CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_Invalid; + return (item->type & 0xFF) == cJSON_Invalid; } CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_False; + return (item->type & 0xFF) == cJSON_False; } CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xff) == cJSON_True; + return (item->type & 0xff) == cJSON_True; } CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & (cJSON_True | cJSON_False)) != 0; + return (item->type & (cJSON_True | cJSON_False)) != 0; } CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_NULL; + return (item->type & 0xFF) == cJSON_NULL; } CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_Number; + return (item->type & 0xFF) == cJSON_Number; } CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_String; + return (item->type & 0xFF) == cJSON_String; } CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_Array; + return (item->type & 0xFF) == cJSON_Array; } CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_Object; + return (item->type & 0xFF) == cJSON_Object; } CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item) { - if(item == NULL) { - return false; - } + if (item == NULL) + { + return false; + } - return (item->type & 0xFF) == cJSON_Raw; + return (item->type & 0xFF) == cJSON_Raw; } -CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, - const cJSON * const b, - const cJSON_bool case_sensitive) +CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive) { - if((a == NULL) || - (b == NULL) || - ((a->type & 0xFF) != (b->type & 0xFF)) || - cJSON_IsInvalid(a)) - { - return false; - } + if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)) || cJSON_IsInvalid(a)) + { + return false; + } - /* check if type is valid */ - switch(a->type & 0xFF) { - case cJSON_False: - case cJSON_True: - case cJSON_NULL: - case cJSON_Number: - case cJSON_String: - case cJSON_Raw: - case cJSON_Array: - case cJSON_Object: - break; + /* check if type is valid */ + switch (a->type & 0xFF) + { + case cJSON_False: + case cJSON_True: + case cJSON_NULL: + case cJSON_Number: + case cJSON_String: + case cJSON_Raw: + case cJSON_Array: + case cJSON_Object: + break; - default: - return false; - } + default: + return false; + } - /* identical objects are equal */ - if(a == b) { - return true; - } + /* identical objects are equal */ + if (a == b) + { + return true; + } - switch(a->type & 0xFF) { - /* in these cases and equal type is enough */ - case cJSON_False: - case cJSON_True: - case cJSON_NULL: - return true; + switch (a->type & 0xFF) + { + /* in these cases and equal type is enough */ + case cJSON_False: + case cJSON_True: + case cJSON_NULL: + return true; - case cJSON_Number: - if(a->valuedouble == b->valuedouble) { - return true; - } - return false; + case cJSON_Number: + if (a->valuedouble == b->valuedouble) + { + return true; + } + return false; - case cJSON_String: - case cJSON_Raw: - if((a->valuestring == NULL) || - (b->valuestring == NULL)) - { - return false; - } - if(strcmp(a->valuestring, b->valuestring) == 0) { - return true; - } + case cJSON_String: + case cJSON_Raw: + if ((a->valuestring == NULL) || (b->valuestring == NULL)) + { + return false; + } + if (strcmp(a->valuestring, b->valuestring) == 0) + { + return true; + } - return false; + return false; - case cJSON_Array: - { - cJSON *a_element = a->child; - cJSON *b_element = b->child; + case cJSON_Array: + { + cJSON *a_element = a->child; + cJSON *b_element = b->child; - for( ; (a_element != NULL) && - (b_element != NULL); ) - { - if(!cJSON_Compare(a_element, b_element, - case_sensitive)) { - return false; - } + for (; (a_element != NULL) && (b_element != NULL);) + { + if (!cJSON_Compare(a_element, b_element, case_sensitive)) + { + return false; + } - a_element = a_element->next; - b_element = b_element->next; - } + a_element = a_element->next; + b_element = b_element->next; + } - /* one of the arrays is longer than the other */ - if(a_element != b_element) { - return false; - } + /* one of the arrays is longer than the other */ + if (a_element != b_element) { + return false; + } - return true; - } + return true; + } - case cJSON_Object: - { - cJSON *a_element = NULL; - cJSON *b_element = NULL; - cJSON_ArrayForEach(a_element, a) - { - /* TODO This has O(n^2) runtime, which is horrible! */ - b_element = get_object_item(b, a_element->string, - case_sensitive); - if(b_element == NULL) { - return false; - } + case cJSON_Object: + { + cJSON *a_element = NULL; + cJSON *b_element = NULL; + cJSON_ArrayForEach(a_element, a) + { + /* TODO This has O(n^2) runtime, which is horrible! */ + b_element = get_object_item(b, a_element->string, case_sensitive); + if (b_element == NULL) + { + return false; + } - if(!cJSON_Compare(a_element, b_element, - case_sensitive)) { - return false; - } - } + if (!cJSON_Compare(a_element, b_element, case_sensitive)) + { + return false; + } + } - /* doing this twice, once on a and b to prevent true comparison if a subset of b - * TODO: Do this the proper way, this is just a fix for now */ - cJSON_ArrayForEach(b_element, b) - { - a_element = get_object_item(a, b_element->string, - case_sensitive); - if(a_element == NULL) { - return false; - } + /* doing this twice, once on a and b to prevent true comparison if a subset of b + * TODO: Do this the proper way, this is just a fix for now */ + cJSON_ArrayForEach(b_element, b) + { + a_element = get_object_item(a, b_element->string, case_sensitive); + if (a_element == NULL) + { + return false; + } - if(!cJSON_Compare(b_element, a_element, - case_sensitive)) { - return false; - } - } + if (!cJSON_Compare(b_element, a_element, case_sensitive)) + { + return false; + } + } - return true; - } + return true; + } - default: - return false; - } + default: + return false; + } } CJSON_PUBLIC(void *) cJSON_malloc(size_t size) { - return global_hooks.allocate(size); + return global_hooks.allocate(size); } CJSON_PUBLIC(void) cJSON_free(void *object) { - global_hooks.deallocate(object); + global_hooks.deallocate(object); } diff --git a/samples/client/petstore/c/external/cJSON.h b/samples/client/petstore/c/external/cJSON.h index f35925db6ff..6e0bde93204 100644 --- a/samples/client/petstore/c/external/cJSON.h +++ b/samples/client/petstore/c/external/cJSON.h @@ -1,24 +1,24 @@ /* - Copyright (c) 2009-2017 Dave Gamble and cJSON contributors + Copyright (c) 2009-2017 Dave Gamble and cJSON contributors - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - */ + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #ifndef cJSON__h #define cJSON__h @@ -37,94 +37,87 @@ extern "C" /* cJSON Types: */ #define cJSON_Invalid (0) -#define cJSON_False (1 << 0) -#define cJSON_True (1 << 1) -#define cJSON_NULL (1 << 2) +#define cJSON_False (1 << 0) +#define cJSON_True (1 << 1) +#define cJSON_NULL (1 << 2) #define cJSON_Number (1 << 3) #define cJSON_String (1 << 4) -#define cJSON_Array (1 << 5) +#define cJSON_Array (1 << 5) #define cJSON_Object (1 << 6) -#define cJSON_Raw (1 << 7) /* raw json */ +#define cJSON_Raw (1 << 7) /* raw json */ #define cJSON_IsReference 256 #define cJSON_StringIsConst 512 /* The cJSON structure: */ -typedef struct cJSON { - /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */ - struct cJSON *next; - struct cJSON *prev; - /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ - struct cJSON *child; +typedef struct cJSON +{ + /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */ + struct cJSON *next; + struct cJSON *prev; + /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ + struct cJSON *child; - /* The type of the item, as above. */ - int type; + /* The type of the item, as above. */ + int type; - /* The item's string, if type==cJSON_String and type == cJSON_Raw */ - char *valuestring; - /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */ - int valueint; - /* The item's number, if type==cJSON_Number */ - double valuedouble; + /* The item's string, if type==cJSON_String and type == cJSON_Raw */ + char *valuestring; + /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */ + int valueint; + /* The item's number, if type==cJSON_Number */ + double valuedouble; - /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */ - char *string; + /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */ + char *string; } cJSON; -typedef struct cJSON_Hooks { - void *(*malloc_fn)(size_t sz); - void (*free_fn)(void *ptr); +typedef struct cJSON_Hooks +{ + void *(*malloc_fn)(size_t sz); + void (*free_fn)(void *ptr); } cJSON_Hooks; typedef int cJSON_bool; -#if !defined(__WINDOWS__) && \ - (defined(WIN32) || \ - defined(WIN64) || \ - defined(_MSC_VER) || \ - defined(_WIN32)) +#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)) #define __WINDOWS__ #endif #ifdef __WINDOWS__ /* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention. For windows you have 2 define options: - CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols - CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default) - CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol +CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols +CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default) +CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol - For *nix builds that support visibility attribute, you can define similar behavior by +For *nix builds that support visibility attribute, you can define similar behavior by - setting default visibility to hidden by adding - -fvisibility=hidden (for gcc) - or - -xldscope=hidden (for sun cc) - to CFLAGS +setting default visibility to hidden by adding +-fvisibility=hidden (for gcc) +or +-xldscope=hidden (for sun cc) +to CFLAGS - then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does +then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does - */ +*/ /* export symbols by default, this is necessary for copy pasting the C and header file */ -#if !defined(CJSON_HIDE_SYMBOLS) && \ - !defined(CJSON_IMPORT_SYMBOLS) && \ - !defined(CJSON_EXPORT_SYMBOLS) +#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS) #define CJSON_EXPORT_SYMBOLS #endif #if defined(CJSON_HIDE_SYMBOLS) -#define CJSON_PUBLIC(type) type __stdcall +#define CJSON_PUBLIC(type) type __stdcall #elif defined(CJSON_EXPORT_SYMBOLS) -#define CJSON_PUBLIC(type) __declspec(dllexport) type __stdcall +#define CJSON_PUBLIC(type) __declspec(dllexport) type __stdcall #elif defined(CJSON_IMPORT_SYMBOLS) -#define CJSON_PUBLIC(type) __declspec(dllimport) type __stdcall +#define CJSON_PUBLIC(type) __declspec(dllimport) type __stdcall #endif #else /* !WIN32 */ -#if (defined(__GNUC__) || \ - defined(__SUNPRO_CC) || \ - defined(__SUNPRO_C)) && \ - defined(CJSON_API_VISIBILITY) -#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type +#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY) +#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type #else #define CJSON_PUBLIC(type) type #endif @@ -137,51 +130,43 @@ typedef int cJSON_bool; #endif /* returns the version of cJSON as a string */ -CJSON_PUBLIC(const char *) cJSON_Version(void); +CJSON_PUBLIC(const char*) cJSON_Version(void); /* Supply malloc, realloc and free functions to cJSON */ -CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks * hooks); +CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks); /* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */ /* Supply a block of JSON, and this returns a cJSON object you can interrogate. */ CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value); /* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */ /* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */ -CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, - const char **return_parse_end, - cJSON_bool require_null_terminated); +CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated); /* Render a cJSON entity to text for transfer/storage. */ -CJSON_PUBLIC(char *) cJSON_Print(const cJSON * item); +CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item); /* Render a cJSON entity to text for transfer/storage without any formatting. */ -CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON * item); +CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item); /* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */ -CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON * item, int prebuffer, - cJSON_bool fmt); +CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt); /* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */ /* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */ -CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON * item, char *buffer, - const int length, - const cJSON_bool format); +CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format); /* Delete a cJSON entity and all subentities. */ -CJSON_PUBLIC(void) cJSON_Delete(cJSON * c); +CJSON_PUBLIC(void) cJSON_Delete(cJSON *c); /* Returns the number of items in an array (or object). */ -CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON * array); +CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array); /* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */ -CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON * array, int index); +CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index); /* Get item "string" from object. Case insensitive. */ -CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, - const char *const string); -CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive( - const cJSON * const object, const char *const string); -CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON * object, - const char *string); +CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string); +CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string); +CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string); /* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */ CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void); /* Check if the item is a string and return its valuestring */ -CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON * item); +CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item); /* These functions check the type of an item */ CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item); @@ -212,8 +197,8 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void); CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string); /* Create an object/arrray that only references it's elements so * they will not be freed by cJSON_Delete */ -CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON * child); -CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON * child); +CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child); +CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child); /* These utilities create an Array of count items. */ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count); @@ -222,109 +207,64 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count); /* Append item to the specified array/object. */ -CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON * array, cJSON * item); -CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON * object, const char *string, - cJSON * item); +CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item); +CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item); /* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object. * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before * writing to `item->string` */ -CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON * object, const char *string, - cJSON * item); +CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item); /* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */ -CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON * array, cJSON * item); -CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON * object, - const char *string, - cJSON * item); +CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item); +CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item); /* Remove/Detatch items from Arrays/Objects. */ -CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON * parent, - cJSON * const item); -CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON * array, int which); -CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON * array, int which); -CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON * object, - const char *string); -CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON * object, - const char *string); -CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON * object, - const char *string); -CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON * object, - const char *string); +CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item); +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which); +CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which); +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string); +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string); +CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string); +CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string); /* Update array items. */ -CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON * array, int which, - cJSON * newitem); /* Shifts pre-existing items to the right. */ -CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, - cJSON * const item, - cJSON * replacement); -CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON * array, int which, - cJSON * newitem); -CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON * object, const char *string, - cJSON * newitem); -CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON * object, - const char *string, - cJSON * newitem); +CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */ +CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement); +CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem); +CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem); +CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem); /* Duplicate a cJSON item */ -CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON * item, cJSON_bool recurse); +CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse); /* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will - need to be released. With recurse!=0, it will duplicate any children connected to the item. - The item->next and ->prev pointers are always zero on return from Duplicate. */ +need to be released. With recurse!=0, it will duplicate any children connected to the item. +The item->next and ->prev pointers are always zero on return from Duplicate. */ /* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal. * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */ -CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, - const cJSON * const b, - const cJSON_bool case_sensitive); +CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive); CJSON_PUBLIC(void) cJSON_Minify(char *json); /* Helper functions for creating and adding items to an object at the same time. * They return the added item or NULL on failure. */ -CJSON_PUBLIC(cJSON *) cJSON_AddNullToObject(cJSON * const object, - const char *const name); -CJSON_PUBLIC(cJSON *) cJSON_AddTrueToObject(cJSON * const object, - const char *const name); -CJSON_PUBLIC(cJSON *) cJSON_AddFalseToObject(cJSON * const object, - const char *const name); -CJSON_PUBLIC(cJSON *) cJSON_AddBoolToObject(cJSON * const object, - const char *const name, - const cJSON_bool boolean); -CJSON_PUBLIC(cJSON *) cJSON_AddNumberToObject(cJSON * const object, - const char *const name, - const double number); -CJSON_PUBLIC(cJSON *) cJSON_AddStringToObject(cJSON * const object, - const char *const name, - const char *const string); -CJSON_PUBLIC(cJSON *) cJSON_AddRawToObject(cJSON * const object, - const char *const name, - const char *const raw); -CJSON_PUBLIC(cJSON *) cJSON_AddObjectToObject(cJSON * const object, - const char *const name); -CJSON_PUBLIC(cJSON *) cJSON_AddArrayToObject(cJSON * const object, - const char *const name); +CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name); +CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name); +CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name); +CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean); +CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number); +CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string); +CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw); +CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name); +CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name); /* When assigning an integer value, it needs to be propagated to valuedouble too. */ -#define cJSON_SetIntValue(object, \ - number) ((object) ? (object)->valueint = \ - (object)->valuedouble = \ - (number) : (number)) +#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number)) /* helper for the cJSON_SetNumberValue macro */ -CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON * object, double number); -#define cJSON_SetNumberValue(object, \ - number) ((object != \ - NULL) ? cJSON_SetNumberHelper(object, \ - ( \ - double) \ - number) : ( \ - number)) +CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number); +#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number)) /* Macro for iterating over an array or object */ -#define cJSON_ArrayForEach(element, array) for(element = \ - (array != \ - NULL) ? (array)->child : \ - NULL; \ - element != NULL; \ - element = element->next) +#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next) /* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */ CJSON_PUBLIC(void *) cJSON_malloc(size_t size); diff --git a/samples/client/petstore/c/include/apiClient.h b/samples/client/petstore/c/include/apiClient.h index a000be9df12..aea3ec93738 100644 --- a/samples/client/petstore/c/include/apiClient.h +++ b/samples/client/petstore/c/include/apiClient.h @@ -10,27 +10,24 @@ #include "../include/keyValuePair.h" typedef struct apiClient_t { - char *basePath; - void *dataReceived; - long response_code; - list_t *apiKeys; - char *accessToken; + char *basePath; + void *dataReceived; + long response_code; + list_t *apiKeys; + char *accessToken; } apiClient_t; -typedef struct binary_t { - uint8_t *data; - unsigned int len; +typedef struct binary_t +{ + uint8_t* data; + unsigned int len; } binary_t; -apiClient_t *apiClient_create(); +apiClient_t* apiClient_create(); void apiClient_free(apiClient_t *apiClient); -void apiClient_invoke(apiClient_t *apiClient, char *operationParameter, - list_t *queryParameters, list_t *headerParameters, - list_t *formParameters, list_t *headerType, - list_t *contentType, char *bodyParameters, - char *requestType); +void apiClient_invoke(apiClient_t *apiClient,char* operationParameter, list_t *queryParameters, list_t *headerParameters, list_t *formParameters,list_t *headerType,list_t *contentType, char *bodyParameters, char *requestType); char *strReplace(char *orig, char *rep, char *with); diff --git a/samples/client/petstore/c/include/keyValuePair.h b/samples/client/petstore/c/include/keyValuePair.h index 710b46f30e3..90f92e71f66 100644 --- a/samples/client/petstore/c/include/keyValuePair.h +++ b/samples/client/petstore/c/include/keyValuePair.h @@ -1,11 +1,11 @@ #ifndef _keyValuePair_H_ #define _keyValuePair_H_ -#include +#include typedef struct keyValuePair_t { - char *key; - void *value; + char* key; + void* value; } keyValuePair_t; keyValuePair_t *keyValuePair_create(char *key, void *value); diff --git a/samples/client/petstore/c/include/list.h b/samples/client/petstore/c/include/list.h index ae35304139c..7d98d7f306b 100644 --- a/samples/client/petstore/c/include/list.h +++ b/samples/client/petstore/c/include/list.h @@ -9,40 +9,31 @@ typedef struct list_t list_t; typedef struct listEntry_t listEntry_t; struct listEntry_t { - listEntry_t *nextListEntry; - listEntry_t *prevListEntry; - void *data; + listEntry_t* nextListEntry; + listEntry_t* prevListEntry; + void* data; }; typedef struct list_t { - listEntry_t *firstEntry; - listEntry_t *lastEntry; + listEntry_t *firstEntry; + listEntry_t *lastEntry; - long count; + long count; } list_t; -#define list_ForEach(element, list) for(element = \ - (list != \ - NULL) ? (list)->firstEntry : \ - NULL; \ - element != NULL; \ - element = element->nextListEntry) +#define list_ForEach(element, list) for(element = (list != NULL) ? (list)->firstEntry : NULL; element != NULL; element = element->nextListEntry) -list_t *list_create(); -void list_free(list_t *listToFree); +list_t* list_create(); +void list_free(list_t* listToFree); -void list_addElement(list_t *list, void *dataToAddInList); -listEntry_t *list_getElementAt(list_t *list, long indexOfElement); -listEntry_t *list_getWithIndex(list_t *list, int index); -void list_removeElement(list_t *list, listEntry_t *elementToRemove); +void list_addElement(list_t* list, void* dataToAddInList); +listEntry_t* list_getElementAt(list_t *list, long indexOfElement); +listEntry_t* list_getWithIndex(list_t* list, int index); +void list_removeElement(list_t* list, listEntry_t* elementToRemove); -void list_iterateThroughListForward(list_t *list, void (*operationToPerform)( - listEntry_t *, - void *), void *additionalDataNeededForCallbackFunction); -void list_iterateThroughListBackward(list_t *list, void (*operationToPerform)( - listEntry_t *, - void *), void *additionalDataNeededForCallbackFunction); +void list_iterateThroughListForward(list_t* list, void (*operationToPerform)(listEntry_t*, void*), void *additionalDataNeededForCallbackFunction); +void list_iterateThroughListBackward(list_t* list, void (*operationToPerform)(listEntry_t*, void*), void *additionalDataNeededForCallbackFunction); -void listEntry_printAsInt(listEntry_t *listEntry, void *additionalData); +void listEntry_printAsInt(listEntry_t* listEntry, void *additionalData); void listEntry_free(listEntry_t *listEntry, void *additionalData); #endif // INCLUDE_LIST_H diff --git a/samples/client/petstore/c/model/api_response.c b/samples/client/petstore/c/model/api_response.c index 3201624063c..c7d728c2f89 100644 --- a/samples/client/petstore/c/model/api_response.c +++ b/samples/client/petstore/c/model/api_response.c @@ -5,104 +5,104 @@ -api_response_t *api_response_create(int code, char *type, char *message) { - api_response_t *api_response_local_var = malloc(sizeof(api_response_t)); - if(!api_response_local_var) { - return NULL; - } - api_response_local_var->code = code; - api_response_local_var->type = type; - api_response_local_var->message = message; +api_response_t *api_response_create( + int code, + char *type, + char *message + ) { + api_response_t *api_response_local_var = malloc(sizeof(api_response_t)); + if (!api_response_local_var) { + return NULL; + } + api_response_local_var->code = code; + api_response_local_var->type = type; + api_response_local_var->message = message; - return api_response_local_var; + return api_response_local_var; } void api_response_free(api_response_t *api_response) { - listEntry_t *listEntry; - free(api_response->type); - free(api_response->message); - free(api_response); + listEntry_t *listEntry; + free(api_response->type); + free(api_response->message); + free(api_response); } cJSON *api_response_convertToJSON(api_response_t *api_response) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - // api_response->code - if(api_response->code) { - if(cJSON_AddNumberToObject(item, "code", - api_response->code) == NULL) - { - goto fail; // Numeric - } - } + // api_response->code + if(api_response->code) { + if(cJSON_AddNumberToObject(item, "code", api_response->code) == NULL) { + goto fail; //Numeric + } + } - // api_response->type - if(api_response->type) { - if(cJSON_AddStringToObject(item, "type", - api_response->type) == NULL) - { - goto fail; // String - } - } + // api_response->type + if(api_response->type) { + if(cJSON_AddStringToObject(item, "type", api_response->type) == NULL) { + goto fail; //String + } + } - // api_response->message - if(api_response->message) { - if(cJSON_AddStringToObject(item, "message", - api_response->message) == NULL) - { - goto fail; // String - } - } + // api_response->message + if(api_response->message) { + if(cJSON_AddStringToObject(item, "message", api_response->message) == NULL) { + goto fail; //String + } + } - return item; + return item; fail: - if(item) { - cJSON_Delete(item); - } - return NULL; + if (item) { + cJSON_Delete(item); + } + return NULL; } -api_response_t *api_response_parseFromJSON(cJSON *api_responseJSON) { - api_response_t *api_response_local_var = NULL; +api_response_t *api_response_parseFromJSON(cJSON *api_responseJSON){ - // api_response->code - cJSON *code = - cJSON_GetObjectItemCaseSensitive(api_responseJSON, "code"); - if(code) { - if(!cJSON_IsNumber(code)) { - goto end; // Numeric - } - } + api_response_t *api_response_local_var = NULL; - // api_response->type - cJSON *type = - cJSON_GetObjectItemCaseSensitive(api_responseJSON, "type"); - if(type) { - if(!cJSON_IsString(type)) { - goto end; // String - } - } + // api_response->code + cJSON *code = cJSON_GetObjectItemCaseSensitive(api_responseJSON, "code"); + if (code) { + if(!cJSON_IsNumber(code)) + { + goto end; //Numeric + } + } - // api_response->message - cJSON *message = cJSON_GetObjectItemCaseSensitive(api_responseJSON, - "message"); - if(message) { - if(!cJSON_IsString(message)) { - goto end; // String - } - } + // api_response->type + cJSON *type = cJSON_GetObjectItemCaseSensitive(api_responseJSON, "type"); + if (type) { + if(!cJSON_IsString(type)) + { + goto end; //String + } + } + + // api_response->message + cJSON *message = cJSON_GetObjectItemCaseSensitive(api_responseJSON, "message"); + if (message) { + if(!cJSON_IsString(message)) + { + goto end; //String + } + } - api_response_local_var = api_response_create( - code ? code->valuedouble : 0, - type ? strdup(type->valuestring) : NULL, - message ? strdup(message->valuestring) : NULL - ); + api_response_local_var = api_response_create ( + code ? code->valuedouble : 0, + type ? strdup(type->valuestring) : NULL, + message ? strdup(message->valuestring) : NULL + ); - return api_response_local_var; + return api_response_local_var; end: - return NULL; + return NULL; + } diff --git a/samples/client/petstore/c/model/api_response.h b/samples/client/petstore/c/model/api_response.h index 73e92795eec..0b0866e3d5a 100644 --- a/samples/client/petstore/c/model/api_response.h +++ b/samples/client/petstore/c/model/api_response.h @@ -15,12 +15,17 @@ typedef struct api_response_t { - int code; // numeric - char *type; // string - char *message; // string + int code; //numeric + char *type; // string + char *message; // string + } api_response_t; -api_response_t *api_response_create(int code, char *type, char *message); +api_response_t *api_response_create( + int code, + char *type, + char *message +); void api_response_free(api_response_t *api_response); @@ -29,3 +34,4 @@ api_response_t *api_response_parseFromJSON(cJSON *api_responseJSON); cJSON *api_response_convertToJSON(api_response_t *api_response); #endif /* _api_response_H_ */ + diff --git a/samples/client/petstore/c/model/category.c b/samples/client/petstore/c/model/category.c index fe44d0afc96..518ccaee869 100644 --- a/samples/client/petstore/c/model/category.c +++ b/samples/client/petstore/c/model/category.c @@ -5,78 +5,83 @@ -category_t *category_create(long id, char *name) { - category_t *category_local_var = malloc(sizeof(category_t)); - if(!category_local_var) { - return NULL; - } - category_local_var->id = id; - category_local_var->name = name; +category_t *category_create( + long id, + char *name + ) { + category_t *category_local_var = malloc(sizeof(category_t)); + if (!category_local_var) { + return NULL; + } + category_local_var->id = id; + category_local_var->name = name; - return category_local_var; + return category_local_var; } void category_free(category_t *category) { - listEntry_t *listEntry; - free(category->name); - free(category); + listEntry_t *listEntry; + free(category->name); + free(category); } cJSON *category_convertToJSON(category_t *category) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - // category->id - if(category->id) { - if(cJSON_AddNumberToObject(item, "id", category->id) == NULL) { - goto fail; // Numeric - } - } + // category->id + if(category->id) { + if(cJSON_AddNumberToObject(item, "id", category->id) == NULL) { + goto fail; //Numeric + } + } - // category->name - if(category->name) { - if(cJSON_AddStringToObject(item, "name", - category->name) == NULL) - { - goto fail; // String - } - } + // category->name + if(category->name) { + if(cJSON_AddStringToObject(item, "name", category->name) == NULL) { + goto fail; //String + } + } - return item; + return item; fail: - if(item) { - cJSON_Delete(item); - } - return NULL; + if (item) { + cJSON_Delete(item); + } + return NULL; } -category_t *category_parseFromJSON(cJSON *categoryJSON) { - category_t *category_local_var = NULL; +category_t *category_parseFromJSON(cJSON *categoryJSON){ - // category->id - cJSON *id = cJSON_GetObjectItemCaseSensitive(categoryJSON, "id"); - if(id) { - if(!cJSON_IsNumber(id)) { - goto end; // Numeric - } - } + category_t *category_local_var = NULL; - // category->name - cJSON *name = cJSON_GetObjectItemCaseSensitive(categoryJSON, "name"); - if(name) { - if(!cJSON_IsString(name)) { - goto end; // String - } - } + // category->id + cJSON *id = cJSON_GetObjectItemCaseSensitive(categoryJSON, "id"); + if (id) { + if(!cJSON_IsNumber(id)) + { + goto end; //Numeric + } + } + + // category->name + cJSON *name = cJSON_GetObjectItemCaseSensitive(categoryJSON, "name"); + if (name) { + if(!cJSON_IsString(name)) + { + goto end; //String + } + } - category_local_var = category_create( - id ? id->valuedouble : 0, - name ? strdup(name->valuestring) : NULL - ); + category_local_var = category_create ( + id ? id->valuedouble : 0, + name ? strdup(name->valuestring) : NULL + ); - return category_local_var; + return category_local_var; end: - return NULL; + return NULL; + } diff --git a/samples/client/petstore/c/model/category.h b/samples/client/petstore/c/model/category.h index 27c9387e2f5..e63a04e096c 100644 --- a/samples/client/petstore/c/model/category.h +++ b/samples/client/petstore/c/model/category.h @@ -15,11 +15,15 @@ typedef struct category_t { - long id; // numeric - char *name; // string + long id; //numeric + char *name; // string + } category_t; -category_t *category_create(long id, char *name); +category_t *category_create( + long id, + char *name +); void category_free(category_t *category); @@ -28,3 +32,4 @@ category_t *category_parseFromJSON(cJSON *categoryJSON); cJSON *category_convertToJSON(category_t *category); #endif /* _category_H_ */ + diff --git a/samples/client/petstore/c/model/object.c b/samples/client/petstore/c/model/object.c index 410c31b6c6b..d106693842f 100644 --- a/samples/client/petstore/c/model/object.c +++ b/samples/client/petstore/c/model/object.c @@ -4,28 +4,28 @@ #include "object.h" object_t *object_create() { - object_t *object = malloc(sizeof(object_t)); + object_t *object = malloc(sizeof(object_t)); - return object; + return object; } void object_free(object_t *object) { - free(object); + free (object); } cJSON *object_convertToJSON(object_t *object) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - return item; + return item; fail: - cJSON_Delete(item); - return NULL; + cJSON_Delete(item); + return NULL; } -object_t *object_parseFromJSON(char *jsonString) { - object_t *object = NULL; +object_t *object_parseFromJSON(char *jsonString){ + object_t *object = NULL; - return object; + return object; end: - return NULL; + return NULL; } diff --git a/samples/client/petstore/c/model/object.h b/samples/client/petstore/c/model/object.h index 1dad2093fed..6b1a77fc508 100644 --- a/samples/client/petstore/c/model/object.h +++ b/samples/client/petstore/c/model/object.h @@ -12,7 +12,7 @@ typedef struct object_t { - void *temporary; + void *temporary; } object_t; object_t *object_create(); diff --git a/samples/client/petstore/c/model/order.c b/samples/client/petstore/c/model/order.c index de4c3db1959..5aafbecba35 100644 --- a/samples/client/petstore/c/model/order.c +++ b/samples/client/petstore/c/model/order.c @@ -4,182 +4,184 @@ #include "order.h" -char *statusorder_ToString(status_e status) { - char *statusArray[] = { "placed", "approved", "delivered" }; - return statusArray[status]; -} + char* statusorder_ToString(status_e status){ + char *statusArray[] = { "placed","approved","delivered" }; + return statusArray[status]; + } -status_e statusorder_FromString(char *status) { - int stringToReturn = 0; - char *statusArray[] = { "placed", "approved", "delivered" }; - size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]); - while(stringToReturn < sizeofArray) { - if(strcmp(status, statusArray[stringToReturn]) == 0) { - return stringToReturn; - } - stringToReturn++; - } - return 0; -} + status_e statusorder_FromString(char* status){ + int stringToReturn = 0; + char *statusArray[] = { "placed","approved","delivered" }; + size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]); + while(stringToReturn < sizeofArray) { + if(strcmp(status, statusArray[stringToReturn]) == 0) { + return stringToReturn; + } + stringToReturn++; + } + return 0; + } -order_t *order_create(long id, long petId, int quantity, char *shipDate, - status_e status, int complete) { - order_t *order_local_var = malloc(sizeof(order_t)); - if(!order_local_var) { - return NULL; - } - order_local_var->id = id; - order_local_var->petId = petId; - order_local_var->quantity = quantity; - order_local_var->shipDate = shipDate; - order_local_var->status = status; - order_local_var->complete = complete; +order_t *order_create( + long id, + long petId, + int quantity, + char *shipDate, + status_e status, + int complete + ) { + order_t *order_local_var = malloc(sizeof(order_t)); + if (!order_local_var) { + return NULL; + } + order_local_var->id = id; + order_local_var->petId = petId; + order_local_var->quantity = quantity; + order_local_var->shipDate = shipDate; + order_local_var->status = status; + order_local_var->complete = complete; - return order_local_var; + return order_local_var; } void order_free(order_t *order) { - listEntry_t *listEntry; - free(order->shipDate); - free(order); + listEntry_t *listEntry; + free(order->shipDate); + free(order); } cJSON *order_convertToJSON(order_t *order) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - // order->id - if(order->id) { - if(cJSON_AddNumberToObject(item, "id", order->id) == NULL) { - goto fail; // Numeric - } - } + // order->id + if(order->id) { + if(cJSON_AddNumberToObject(item, "id", order->id) == NULL) { + goto fail; //Numeric + } + } - // order->petId - if(order->petId) { - if(cJSON_AddNumberToObject(item, "petId", - order->petId) == NULL) - { - goto fail; // Numeric - } - } + // order->petId + if(order->petId) { + if(cJSON_AddNumberToObject(item, "petId", order->petId) == NULL) { + goto fail; //Numeric + } + } - // order->quantity - if(order->quantity) { - if(cJSON_AddNumberToObject(item, "quantity", - order->quantity) == NULL) - { - goto fail; // Numeric - } - } + // order->quantity + if(order->quantity) { + if(cJSON_AddNumberToObject(item, "quantity", order->quantity) == NULL) { + goto fail; //Numeric + } + } - // order->shipDate - if(order->shipDate) { - if(cJSON_AddStringToObject(item, "shipDate", - order->shipDate) == NULL) - { - goto fail; // Date-Time - } - } + // order->shipDate + if(order->shipDate) { + if(cJSON_AddStringToObject(item, "shipDate", order->shipDate) == NULL) { + goto fail; //Date-Time + } + } - // order->status - - if(cJSON_AddStringToObject(item, "status", - statusorder_ToString(order->status)) == NULL) - { - goto fail; // Enum - } + // order->status + + if(cJSON_AddStringToObject(item, "status", statusorder_ToString(order->status)) == NULL) + { + goto fail; //Enum + } + + // order->complete + if(order->complete) { + if(cJSON_AddBoolToObject(item, "complete", order->complete) == NULL) { + goto fail; //Bool + } + } - // order->complete - if(order->complete) { - if(cJSON_AddBoolToObject(item, "complete", - order->complete) == NULL) - { - goto fail; // Bool - } - } - - return item; + return item; fail: - if(item) { - cJSON_Delete(item); - } - return NULL; + if (item) { + cJSON_Delete(item); + } + return NULL; } -order_t *order_parseFromJSON(cJSON *orderJSON) { - order_t *order_local_var = NULL; +order_t *order_parseFromJSON(cJSON *orderJSON){ - // order->id - cJSON *id = cJSON_GetObjectItemCaseSensitive(orderJSON, "id"); - if(id) { - if(!cJSON_IsNumber(id)) { - goto end; // Numeric - } - } + order_t *order_local_var = NULL; - // order->petId - cJSON *petId = cJSON_GetObjectItemCaseSensitive(orderJSON, "petId"); - if(petId) { - if(!cJSON_IsNumber(petId)) { - goto end; // Numeric - } - } + // order->id + cJSON *id = cJSON_GetObjectItemCaseSensitive(orderJSON, "id"); + if (id) { + if(!cJSON_IsNumber(id)) + { + goto end; //Numeric + } + } - // order->quantity - cJSON *quantity = - cJSON_GetObjectItemCaseSensitive(orderJSON, "quantity"); - if(quantity) { - if(!cJSON_IsNumber(quantity)) { - goto end; // Numeric - } - } + // order->petId + cJSON *petId = cJSON_GetObjectItemCaseSensitive(orderJSON, "petId"); + if (petId) { + if(!cJSON_IsNumber(petId)) + { + goto end; //Numeric + } + } - // order->shipDate - cJSON *shipDate = - cJSON_GetObjectItemCaseSensitive(orderJSON, "shipDate"); - if(shipDate) { - if(!cJSON_IsString(shipDate)) { - goto end; // DateTime - } - } + // order->quantity + cJSON *quantity = cJSON_GetObjectItemCaseSensitive(orderJSON, "quantity"); + if (quantity) { + if(!cJSON_IsNumber(quantity)) + { + goto end; //Numeric + } + } - // order->status - cJSON *status = cJSON_GetObjectItemCaseSensitive(orderJSON, "status"); - status_e statusVariable; - if(status) { - if(!cJSON_IsString(status)) { - goto end; // Enum - } - statusVariable = statusorder_FromString(status->valuestring); - } + // order->shipDate + cJSON *shipDate = cJSON_GetObjectItemCaseSensitive(orderJSON, "shipDate"); + if (shipDate) { + if(!cJSON_IsString(shipDate)) + { + goto end; //DateTime + } + } - // order->complete - cJSON *complete = - cJSON_GetObjectItemCaseSensitive(orderJSON, "complete"); - if(complete) { - if(!cJSON_IsBool(complete)) { - goto end; // Bool - } - } + // order->status + cJSON *status = cJSON_GetObjectItemCaseSensitive(orderJSON, "status"); + status_e statusVariable; + if (status) { + if(!cJSON_IsString(status)) + { + goto end; //Enum + } + statusVariable = statusorder_FromString(status->valuestring); + } + + // order->complete + cJSON *complete = cJSON_GetObjectItemCaseSensitive(orderJSON, "complete"); + if (complete) { + if(!cJSON_IsBool(complete)) + { + goto end; //Bool + } + } - order_local_var = order_create( - id ? id->valuedouble : 0, - petId ? petId->valuedouble : 0, - quantity ? quantity->valuedouble : 0, - shipDate ? strdup(shipDate->valuestring) : NULL, - status ? statusVariable : -1, - complete ? complete->valueint : 0 - ); + order_local_var = order_create ( + id ? id->valuedouble : 0, + petId ? petId->valuedouble : 0, + quantity ? quantity->valuedouble : 0, + shipDate ? strdup(shipDate->valuestring) : NULL, + status ? statusVariable : -1, + complete ? complete->valueint : 0 + ); - return order_local_var; + return order_local_var; end: - return NULL; + return NULL; + } diff --git a/samples/client/petstore/c/model/order.h b/samples/client/petstore/c/model/order.h index ef99a5da98c..e7f814e1fa1 100644 --- a/samples/client/petstore/c/model/order.h +++ b/samples/client/petstore/c/model/order.h @@ -12,24 +12,31 @@ #include "../include/list.h" #include "../include/keyValuePair.h" -typedef enum { placed, approved, delivered } status_e; + typedef enum { placed, approved, delivered } status_e; -char *status_ToString(status_e status); + char* status_ToString(status_e status); -status_e status_FromString(char *status); + status_e status_FromString(char* status); typedef struct order_t { - long id; // numeric - long petId; // numeric - int quantity; // numeric - char *shipDate; // date time - status_e status; // enum - int complete; // boolean + long id; //numeric + long petId; //numeric + int quantity; //numeric + char *shipDate; //date time + status_e status; //enum + int complete; //boolean + } order_t; -order_t *order_create(long id, long petId, int quantity, char *shipDate, - status_e status, int complete); +order_t *order_create( + long id, + long petId, + int quantity, + char *shipDate, + status_e status, + int complete +); void order_free(order_t *order); @@ -38,3 +45,4 @@ order_t *order_parseFromJSON(cJSON *orderJSON); cJSON *order_convertToJSON(order_t *order); #endif /* _order_H_ */ + diff --git a/samples/client/petstore/c/model/pet.c b/samples/client/petstore/c/model/pet.c index 73b6c4e28f4..b25b785cc6b 100644 --- a/samples/client/petstore/c/model/pet.c +++ b/samples/client/petstore/c/model/pet.c @@ -4,247 +4,251 @@ #include "pet.h" -char *statuspet_ToString(status_e status) { - char *statusArray[] = { "available", "pending", "sold" }; - return statusArray[status]; -} + char* statuspet_ToString(status_e status){ + char *statusArray[] = { "available","pending","sold" }; + return statusArray[status]; + } -status_e statuspet_FromString(char *status) { - int stringToReturn = 0; - char *statusArray[] = { "available", "pending", "sold" }; - size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]); - while(stringToReturn < sizeofArray) { - if(strcmp(status, statusArray[stringToReturn]) == 0) { - return stringToReturn; - } - stringToReturn++; - } - return 0; -} + status_e statuspet_FromString(char* status){ + int stringToReturn = 0; + char *statusArray[] = { "available","pending","sold" }; + size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]); + while(stringToReturn < sizeofArray) { + if(strcmp(status, statusArray[stringToReturn]) == 0) { + return stringToReturn; + } + stringToReturn++; + } + return 0; + } -pet_t *pet_create(long id, category_t *category, char *name, list_t *photoUrls, - list_t *tags, status_e status) { - pet_t *pet_local_var = malloc(sizeof(pet_t)); - if(!pet_local_var) { - return NULL; - } - pet_local_var->id = id; - pet_local_var->category = category; - pet_local_var->name = name; - pet_local_var->photoUrls = photoUrls; - pet_local_var->tags = tags; - pet_local_var->status = status; +pet_t *pet_create( + long id, + category_t *category, + char *name, + list_t *photoUrls, + list_t *tags, + status_e status + ) { + pet_t *pet_local_var = malloc(sizeof(pet_t)); + if (!pet_local_var) { + return NULL; + } + pet_local_var->id = id; + pet_local_var->category = category; + pet_local_var->name = name; + pet_local_var->photoUrls = photoUrls; + pet_local_var->tags = tags; + pet_local_var->status = status; - return pet_local_var; + return pet_local_var; } void pet_free(pet_t *pet) { - listEntry_t *listEntry; - category_free(pet->category); - free(pet->name); - list_ForEach(listEntry, pet->photoUrls) { - free(listEntry->data); - } - list_free(pet->photoUrls); - list_ForEach(listEntry, pet->tags) { - tag_free(listEntry->data); - } - list_free(pet->tags); - free(pet); + listEntry_t *listEntry; + category_free(pet->category); + free(pet->name); + list_ForEach(listEntry, pet->photoUrls) { + free(listEntry->data); + } + list_free(pet->photoUrls); + list_ForEach(listEntry, pet->tags) { + tag_free(listEntry->data); + } + list_free(pet->tags); + free(pet); } cJSON *pet_convertToJSON(pet_t *pet) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - // pet->id - if(pet->id) { - if(cJSON_AddNumberToObject(item, "id", pet->id) == NULL) { - goto fail; // Numeric - } - } + // pet->id + if(pet->id) { + if(cJSON_AddNumberToObject(item, "id", pet->id) == NULL) { + goto fail; //Numeric + } + } - // pet->category - if(pet->category) { - cJSON *category_local_JSON = category_convertToJSON( - pet->category); - if(category_local_JSON == NULL) { - goto fail; // model - } - cJSON_AddItemToObject(item, "category", category_local_JSON); - if(item->child == NULL) { - goto fail; - } - } + // pet->category + if(pet->category) { + cJSON *category_local_JSON = category_convertToJSON(pet->category); + if(category_local_JSON == NULL) { + goto fail; //model + } + cJSON_AddItemToObject(item, "category", category_local_JSON); + if(item->child == NULL) { + goto fail; + } + } - // pet->name - if(!pet->name) { - goto fail; - } - - if(cJSON_AddStringToObject(item, "name", pet->name) == NULL) { - goto fail; // String - } + // pet->name + if (!pet->name) { + goto fail; + } + + if(cJSON_AddStringToObject(item, "name", pet->name) == NULL) { + goto fail; //String + } - // pet->photoUrls - if(!pet->photoUrls) { - goto fail; - } + // pet->photoUrls + if (!pet->photoUrls) { + goto fail; + } + + cJSON *photo_urls = cJSON_AddArrayToObject(item, "photoUrls"); + if(photo_urls == NULL) { + goto fail; //primitive container + } - cJSON *photo_urls = cJSON_AddArrayToObject(item, "photoUrls"); - if(photo_urls == NULL) { - goto fail; // primitive container - } - - listEntry_t *photo_urlsListEntry; - list_ForEach(photo_urlsListEntry, pet->photoUrls) { - if(cJSON_AddStringToObject(photo_urls, "", - (char *) photo_urlsListEntry->data) - == NULL) - { - goto fail; - } - } + listEntry_t *photo_urlsListEntry; + list_ForEach(photo_urlsListEntry, pet->photoUrls) { + if(cJSON_AddStringToObject(photo_urls, "", (char*)photo_urlsListEntry->data) == NULL) + { + goto fail; + } + } - // pet->tags - if(pet->tags) { - cJSON *tags = cJSON_AddArrayToObject(item, "tags"); - if(tags == NULL) { - goto fail; // nonprimitive container - } + // pet->tags + if(pet->tags) { + cJSON *tags = cJSON_AddArrayToObject(item, "tags"); + if(tags == NULL) { + goto fail; //nonprimitive container + } - listEntry_t *tagsListEntry; - if(pet->tags) { - list_ForEach(tagsListEntry, pet->tags) { - cJSON *itemLocal = tag_convertToJSON( - tagsListEntry->data); - if(itemLocal == NULL) { - goto fail; - } - cJSON_AddItemToArray(tags, itemLocal); - } - } - } + listEntry_t *tagsListEntry; + if (pet->tags) { + list_ForEach(tagsListEntry, pet->tags) { + cJSON *itemLocal = tag_convertToJSON(tagsListEntry->data); + if(itemLocal == NULL) { + goto fail; + } + cJSON_AddItemToArray(tags, itemLocal); + } + } + } - // pet->status + // pet->status + + if(cJSON_AddStringToObject(item, "status", statuspet_ToString(pet->status)) == NULL) + { + goto fail; //Enum + } + - if(cJSON_AddStringToObject(item, "status", - statuspet_ToString(pet->status)) == NULL) - { - goto fail; // Enum - } - - - return item; + return item; fail: - if(item) { - cJSON_Delete(item); - } - return NULL; + if (item) { + cJSON_Delete(item); + } + return NULL; } -pet_t *pet_parseFromJSON(cJSON *petJSON) { - pet_t *pet_local_var = NULL; +pet_t *pet_parseFromJSON(cJSON *petJSON){ - // pet->id - cJSON *id = cJSON_GetObjectItemCaseSensitive(petJSON, "id"); - if(id) { - if(!cJSON_IsNumber(id)) { - goto end; // Numeric - } - } + pet_t *pet_local_var = NULL; - // pet->category - cJSON *category = cJSON_GetObjectItemCaseSensitive(petJSON, "category"); - category_t *category_local_nonprim = NULL; - if(category) { - category_local_nonprim = category_parseFromJSON(category); // nonprimitive - } + // pet->id + cJSON *id = cJSON_GetObjectItemCaseSensitive(petJSON, "id"); + if (id) { + if(!cJSON_IsNumber(id)) + { + goto end; //Numeric + } + } - // pet->name - cJSON *name = cJSON_GetObjectItemCaseSensitive(petJSON, "name"); - if(!name) { - goto end; - } + // pet->category + cJSON *category = cJSON_GetObjectItemCaseSensitive(petJSON, "category"); + category_t *category_local_nonprim = NULL; + if (category) { + category_local_nonprim = category_parseFromJSON(category); //nonprimitive + } + + // pet->name + cJSON *name = cJSON_GetObjectItemCaseSensitive(petJSON, "name"); + if (!name) { + goto end; + } + + + if(!cJSON_IsString(name)) + { + goto end; //String + } + + // pet->photoUrls + cJSON *photoUrls = cJSON_GetObjectItemCaseSensitive(petJSON, "photoUrls"); + if (!photoUrls) { + goto end; + } + + list_t *photo_urlsList; + + cJSON *photo_urls_local; + if(!cJSON_IsArray(photoUrls)) { + goto end;//primitive container + } + photo_urlsList = list_create(); + + cJSON_ArrayForEach(photo_urls_local, photoUrls) + { + if(!cJSON_IsString(photo_urls_local)) + { + goto end; + } + list_addElement(photo_urlsList , strdup(photo_urls_local->valuestring)); + } + + // pet->tags + cJSON *tags = cJSON_GetObjectItemCaseSensitive(petJSON, "tags"); + list_t *tagsList; + if (tags) { + cJSON *tags_local_nonprimitive; + if(!cJSON_IsArray(tags)){ + goto end; //nonprimitive container + } + + tagsList = list_create(); + + cJSON_ArrayForEach(tags_local_nonprimitive,tags ) + { + if(!cJSON_IsObject(tags_local_nonprimitive)){ + goto end; + } + tag_t *tagsItem = tag_parseFromJSON(tags_local_nonprimitive); + + list_addElement(tagsList, tagsItem); + } + } + + // pet->status + cJSON *status = cJSON_GetObjectItemCaseSensitive(petJSON, "status"); + status_e statusVariable; + if (status) { + if(!cJSON_IsString(status)) + { + goto end; //Enum + } + statusVariable = statuspet_FromString(status->valuestring); + } - if(!cJSON_IsString(name)) { - goto end; // String - } + pet_local_var = pet_create ( + id ? id->valuedouble : 0, + category ? category_local_nonprim : NULL, + strdup(name->valuestring), + photo_urlsList, + tags ? tagsList : NULL, + status ? statusVariable : -1 + ); - // pet->photoUrls - cJSON *photoUrls = - cJSON_GetObjectItemCaseSensitive(petJSON, "photoUrls"); - if(!photoUrls) { - goto end; - } - - list_t *photo_urlsList; - - cJSON *photo_urls_local; - if(!cJSON_IsArray(photoUrls)) { - goto end; // primitive container - } - photo_urlsList = list_create(); - - cJSON_ArrayForEach(photo_urls_local, photoUrls) - { - if(!cJSON_IsString(photo_urls_local)) { - goto end; - } - list_addElement(photo_urlsList, - strdup(photo_urls_local->valuestring)); - } - - // pet->tags - cJSON *tags = cJSON_GetObjectItemCaseSensitive(petJSON, "tags"); - list_t *tagsList; - if(tags) { - cJSON *tags_local_nonprimitive; - if(!cJSON_IsArray(tags)) { - goto end; // nonprimitive container - } - - tagsList = list_create(); - - cJSON_ArrayForEach(tags_local_nonprimitive, tags) - { - if(!cJSON_IsObject(tags_local_nonprimitive)) { - goto end; - } - tag_t *tagsItem = tag_parseFromJSON( - tags_local_nonprimitive); - - list_addElement(tagsList, tagsItem); - } - } - - // pet->status - cJSON *status = cJSON_GetObjectItemCaseSensitive(petJSON, "status"); - status_e statusVariable; - if(status) { - if(!cJSON_IsString(status)) { - goto end; // Enum - } - statusVariable = statuspet_FromString(status->valuestring); - } - - - pet_local_var = pet_create( - id ? id->valuedouble : 0, - category ? category_local_nonprim : NULL, - strdup(name->valuestring), - photo_urlsList, - tags ? tagsList : NULL, - status ? statusVariable : -1 - ); - - return pet_local_var; + return pet_local_var; end: - return NULL; + return NULL; + } diff --git a/samples/client/petstore/c/model/pet.h b/samples/client/petstore/c/model/pet.h index da5b3df5e7a..a29280648d8 100644 --- a/samples/client/petstore/c/model/pet.h +++ b/samples/client/petstore/c/model/pet.h @@ -14,24 +14,31 @@ #include "category.h" #include "tag.h" -typedef enum { available, pending, sold } status_e; + typedef enum { available, pending, sold } status_e; -char *status_ToString(status_e status); + char* status_ToString(status_e status); -status_e status_FromString(char *status); + status_e status_FromString(char* status); typedef struct pet_t { - long id; // numeric - category_t *category; // model - char *name; // string - list_t *photoUrls; // primitive container - list_t *tags; // nonprimitive container - status_e status; // enum + long id; //numeric + category_t *category; //model + char *name; // string + list_t *photoUrls; //primitive container + list_t *tags; //nonprimitive container + status_e status; //enum + } pet_t; -pet_t *pet_create(long id, category_t *category, char *name, list_t *photoUrls, - list_t *tags, status_e status); +pet_t *pet_create( + long id, + category_t *category, + char *name, + list_t *photoUrls, + list_t *tags, + status_e status +); void pet_free(pet_t *pet); @@ -40,3 +47,4 @@ pet_t *pet_parseFromJSON(cJSON *petJSON); cJSON *pet_convertToJSON(pet_t *pet); #endif /* _pet_H_ */ + diff --git a/samples/client/petstore/c/model/tag.c b/samples/client/petstore/c/model/tag.c index ca6c9e9184e..63450378b9f 100644 --- a/samples/client/petstore/c/model/tag.c +++ b/samples/client/petstore/c/model/tag.c @@ -5,76 +5,83 @@ -tag_t *tag_create(long id, char *name) { - tag_t *tag_local_var = malloc(sizeof(tag_t)); - if(!tag_local_var) { - return NULL; - } - tag_local_var->id = id; - tag_local_var->name = name; +tag_t *tag_create( + long id, + char *name + ) { + tag_t *tag_local_var = malloc(sizeof(tag_t)); + if (!tag_local_var) { + return NULL; + } + tag_local_var->id = id; + tag_local_var->name = name; - return tag_local_var; + return tag_local_var; } void tag_free(tag_t *tag) { - listEntry_t *listEntry; - free(tag->name); - free(tag); + listEntry_t *listEntry; + free(tag->name); + free(tag); } cJSON *tag_convertToJSON(tag_t *tag) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - // tag->id - if(tag->id) { - if(cJSON_AddNumberToObject(item, "id", tag->id) == NULL) { - goto fail; // Numeric - } - } + // tag->id + if(tag->id) { + if(cJSON_AddNumberToObject(item, "id", tag->id) == NULL) { + goto fail; //Numeric + } + } - // tag->name - if(tag->name) { - if(cJSON_AddStringToObject(item, "name", tag->name) == NULL) { - goto fail; // String - } - } + // tag->name + if(tag->name) { + if(cJSON_AddStringToObject(item, "name", tag->name) == NULL) { + goto fail; //String + } + } - return item; + return item; fail: - if(item) { - cJSON_Delete(item); - } - return NULL; + if (item) { + cJSON_Delete(item); + } + return NULL; } -tag_t *tag_parseFromJSON(cJSON *tagJSON) { - tag_t *tag_local_var = NULL; +tag_t *tag_parseFromJSON(cJSON *tagJSON){ - // tag->id - cJSON *id = cJSON_GetObjectItemCaseSensitive(tagJSON, "id"); - if(id) { - if(!cJSON_IsNumber(id)) { - goto end; // Numeric - } - } + tag_t *tag_local_var = NULL; - // tag->name - cJSON *name = cJSON_GetObjectItemCaseSensitive(tagJSON, "name"); - if(name) { - if(!cJSON_IsString(name)) { - goto end; // String - } - } + // tag->id + cJSON *id = cJSON_GetObjectItemCaseSensitive(tagJSON, "id"); + if (id) { + if(!cJSON_IsNumber(id)) + { + goto end; //Numeric + } + } + + // tag->name + cJSON *name = cJSON_GetObjectItemCaseSensitive(tagJSON, "name"); + if (name) { + if(!cJSON_IsString(name)) + { + goto end; //String + } + } - tag_local_var = tag_create( - id ? id->valuedouble : 0, - name ? strdup(name->valuestring) : NULL - ); + tag_local_var = tag_create ( + id ? id->valuedouble : 0, + name ? strdup(name->valuestring) : NULL + ); - return tag_local_var; + return tag_local_var; end: - return NULL; + return NULL; + } diff --git a/samples/client/petstore/c/model/tag.h b/samples/client/petstore/c/model/tag.h index 235f7b2ea45..26f70686658 100644 --- a/samples/client/petstore/c/model/tag.h +++ b/samples/client/petstore/c/model/tag.h @@ -15,11 +15,15 @@ typedef struct tag_t { - long id; // numeric - char *name; // string + long id; //numeric + char *name; // string + } tag_t; -tag_t *tag_create(long id, char *name); +tag_t *tag_create( + long id, + char *name +); void tag_free(tag_t *tag); @@ -28,3 +32,4 @@ tag_t *tag_parseFromJSON(cJSON *tagJSON); cJSON *tag_convertToJSON(tag_t *tag); #endif /* _tag_H_ */ + diff --git a/samples/client/petstore/c/model/user.c b/samples/client/petstore/c/model/user.c index a12f59bb3d4..b480c68203f 100644 --- a/samples/client/petstore/c/model/user.c +++ b/samples/client/petstore/c/model/user.c @@ -5,209 +5,208 @@ -user_t *user_create(long id, char *username, char *firstName, char *lastName, - char *email, char *password, char *phone, int userStatus) { - user_t *user_local_var = malloc(sizeof(user_t)); - if(!user_local_var) { - return NULL; - } - user_local_var->id = id; - user_local_var->username = username; - user_local_var->firstName = firstName; - user_local_var->lastName = lastName; - user_local_var->email = email; - user_local_var->password = password; - user_local_var->phone = phone; - user_local_var->userStatus = userStatus; +user_t *user_create( + long id, + char *username, + char *firstName, + char *lastName, + char *email, + char *password, + char *phone, + int userStatus + ) { + user_t *user_local_var = malloc(sizeof(user_t)); + if (!user_local_var) { + return NULL; + } + user_local_var->id = id; + user_local_var->username = username; + user_local_var->firstName = firstName; + user_local_var->lastName = lastName; + user_local_var->email = email; + user_local_var->password = password; + user_local_var->phone = phone; + user_local_var->userStatus = userStatus; - return user_local_var; + return user_local_var; } void user_free(user_t *user) { - listEntry_t *listEntry; - free(user->username); - free(user->firstName); - free(user->lastName); - free(user->email); - free(user->password); - free(user->phone); - free(user); + listEntry_t *listEntry; + free(user->username); + free(user->firstName); + free(user->lastName); + free(user->email); + free(user->password); + free(user->phone); + free(user); } cJSON *user_convertToJSON(user_t *user) { - cJSON *item = cJSON_CreateObject(); + cJSON *item = cJSON_CreateObject(); - // user->id - if(user->id) { - if(cJSON_AddNumberToObject(item, "id", user->id) == NULL) { - goto fail; // Numeric - } - } + // user->id + if(user->id) { + if(cJSON_AddNumberToObject(item, "id", user->id) == NULL) { + goto fail; //Numeric + } + } - // user->username - if(user->username) { - if(cJSON_AddStringToObject(item, "username", - user->username) == NULL) - { - goto fail; // String - } - } + // user->username + if(user->username) { + if(cJSON_AddStringToObject(item, "username", user->username) == NULL) { + goto fail; //String + } + } - // user->firstName - if(user->firstName) { - if(cJSON_AddStringToObject(item, "firstName", - user->firstName) == NULL) - { - goto fail; // String - } - } + // user->firstName + if(user->firstName) { + if(cJSON_AddStringToObject(item, "firstName", user->firstName) == NULL) { + goto fail; //String + } + } - // user->lastName - if(user->lastName) { - if(cJSON_AddStringToObject(item, "lastName", - user->lastName) == NULL) - { - goto fail; // String - } - } + // user->lastName + if(user->lastName) { + if(cJSON_AddStringToObject(item, "lastName", user->lastName) == NULL) { + goto fail; //String + } + } - // user->email - if(user->email) { - if(cJSON_AddStringToObject(item, "email", - user->email) == NULL) - { - goto fail; // String - } - } + // user->email + if(user->email) { + if(cJSON_AddStringToObject(item, "email", user->email) == NULL) { + goto fail; //String + } + } - // user->password - if(user->password) { - if(cJSON_AddStringToObject(item, "password", - user->password) == NULL) - { - goto fail; // String - } - } + // user->password + if(user->password) { + if(cJSON_AddStringToObject(item, "password", user->password) == NULL) { + goto fail; //String + } + } - // user->phone - if(user->phone) { - if(cJSON_AddStringToObject(item, "phone", - user->phone) == NULL) - { - goto fail; // String - } - } + // user->phone + if(user->phone) { + if(cJSON_AddStringToObject(item, "phone", user->phone) == NULL) { + goto fail; //String + } + } - // user->userStatus - if(user->userStatus) { - if(cJSON_AddNumberToObject(item, "userStatus", - user->userStatus) == NULL) - { - goto fail; // Numeric - } - } + // user->userStatus + if(user->userStatus) { + if(cJSON_AddNumberToObject(item, "userStatus", user->userStatus) == NULL) { + goto fail; //Numeric + } + } - return item; + return item; fail: - if(item) { - cJSON_Delete(item); - } - return NULL; + if (item) { + cJSON_Delete(item); + } + return NULL; } -user_t *user_parseFromJSON(cJSON *userJSON) { - user_t *user_local_var = NULL; +user_t *user_parseFromJSON(cJSON *userJSON){ - // user->id - cJSON *id = cJSON_GetObjectItemCaseSensitive(userJSON, "id"); - if(id) { - if(!cJSON_IsNumber(id)) { - goto end; // Numeric - } - } + user_t *user_local_var = NULL; - // user->username - cJSON *username = - cJSON_GetObjectItemCaseSensitive(userJSON, "username"); - if(username) { - if(!cJSON_IsString(username)) { - goto end; // String - } - } + // user->id + cJSON *id = cJSON_GetObjectItemCaseSensitive(userJSON, "id"); + if (id) { + if(!cJSON_IsNumber(id)) + { + goto end; //Numeric + } + } - // user->firstName - cJSON *firstName = cJSON_GetObjectItemCaseSensitive(userJSON, - "firstName"); - if(firstName) { - if(!cJSON_IsString(firstName)) { - goto end; // String - } - } + // user->username + cJSON *username = cJSON_GetObjectItemCaseSensitive(userJSON, "username"); + if (username) { + if(!cJSON_IsString(username)) + { + goto end; //String + } + } - // user->lastName - cJSON *lastName = - cJSON_GetObjectItemCaseSensitive(userJSON, "lastName"); - if(lastName) { - if(!cJSON_IsString(lastName)) { - goto end; // String - } - } + // user->firstName + cJSON *firstName = cJSON_GetObjectItemCaseSensitive(userJSON, "firstName"); + if (firstName) { + if(!cJSON_IsString(firstName)) + { + goto end; //String + } + } - // user->email - cJSON *email = cJSON_GetObjectItemCaseSensitive(userJSON, "email"); - if(email) { - if(!cJSON_IsString(email)) { - goto end; // String - } - } + // user->lastName + cJSON *lastName = cJSON_GetObjectItemCaseSensitive(userJSON, "lastName"); + if (lastName) { + if(!cJSON_IsString(lastName)) + { + goto end; //String + } + } - // user->password - cJSON *password = - cJSON_GetObjectItemCaseSensitive(userJSON, "password"); - if(password) { - if(!cJSON_IsString(password)) { - goto end; // String - } - } + // user->email + cJSON *email = cJSON_GetObjectItemCaseSensitive(userJSON, "email"); + if (email) { + if(!cJSON_IsString(email)) + { + goto end; //String + } + } - // user->phone - cJSON *phone = cJSON_GetObjectItemCaseSensitive(userJSON, "phone"); - if(phone) { - if(!cJSON_IsString(phone)) { - goto end; // String - } - } + // user->password + cJSON *password = cJSON_GetObjectItemCaseSensitive(userJSON, "password"); + if (password) { + if(!cJSON_IsString(password)) + { + goto end; //String + } + } - // user->userStatus - cJSON *userStatus = cJSON_GetObjectItemCaseSensitive(userJSON, - "userStatus"); - if(userStatus) { - if(!cJSON_IsNumber(userStatus)) { - goto end; // Numeric - } - } + // user->phone + cJSON *phone = cJSON_GetObjectItemCaseSensitive(userJSON, "phone"); + if (phone) { + if(!cJSON_IsString(phone)) + { + goto end; //String + } + } + + // user->userStatus + cJSON *userStatus = cJSON_GetObjectItemCaseSensitive(userJSON, "userStatus"); + if (userStatus) { + if(!cJSON_IsNumber(userStatus)) + { + goto end; //Numeric + } + } - user_local_var = user_create( - id ? id->valuedouble : 0, - username ? strdup(username->valuestring) : NULL, - firstName ? strdup(firstName->valuestring) : NULL, - lastName ? strdup(lastName->valuestring) : NULL, - email ? strdup(email->valuestring) : NULL, - password ? strdup(password->valuestring) : NULL, - phone ? strdup(phone->valuestring) : NULL, - userStatus ? userStatus->valuedouble : 0 - ); + user_local_var = user_create ( + id ? id->valuedouble : 0, + username ? strdup(username->valuestring) : NULL, + firstName ? strdup(firstName->valuestring) : NULL, + lastName ? strdup(lastName->valuestring) : NULL, + email ? strdup(email->valuestring) : NULL, + password ? strdup(password->valuestring) : NULL, + phone ? strdup(phone->valuestring) : NULL, + userStatus ? userStatus->valuedouble : 0 + ); - return user_local_var; + return user_local_var; end: - return NULL; + return NULL; + } diff --git a/samples/client/petstore/c/model/user.h b/samples/client/petstore/c/model/user.h index dfb704efb26..954bc64a128 100644 --- a/samples/client/petstore/c/model/user.h +++ b/samples/client/petstore/c/model/user.h @@ -15,18 +15,27 @@ typedef struct user_t { - long id; // numeric - char *username; // string - char *firstName; // string - char *lastName; // string - char *email; // string - char *password; // string - char *phone; // string - int userStatus; // numeric + long id; //numeric + char *username; // string + char *firstName; // string + char *lastName; // string + char *email; // string + char *password; // string + char *phone; // string + int userStatus; //numeric + } user_t; -user_t *user_create(long id, char *username, char *firstName, char *lastName, - char *email, char *password, char *phone, int userStatus); +user_t *user_create( + long id, + char *username, + char *firstName, + char *lastName, + char *email, + char *password, + char *phone, + int userStatus +); void user_free(user_t *user); @@ -35,3 +44,4 @@ user_t *user_parseFromJSON(cJSON *userJSON); cJSON *user_convertToJSON(user_t *user); #endif /* _user_H_ */ + diff --git a/samples/client/petstore/c/src/apiClient.c b/samples/client/petstore/c/src/apiClient.c index eb569bd27a3..492b0563203 100644 --- a/samples/client/petstore/c/src/apiClient.c +++ b/samples/client/petstore/c/src/apiClient.c @@ -10,451 +10,448 @@ size_t writeDataCallback(void *buffer, size_t size, size_t nmemb, void *userp); apiClient_t *apiClient_create() { - curl_global_init(CURL_GLOBAL_ALL); - apiClient_t *apiClient = malloc(sizeof(apiClient_t)); - apiClient->basePath = "http://petstore.swagger.io/v2"; - apiClient->dataReceived = NULL; - apiClient->response_code = 0; - apiClient->apiKeys = NULL; - apiClient->accessToken = NULL; + curl_global_init(CURL_GLOBAL_ALL); + apiClient_t *apiClient = malloc(sizeof(apiClient_t)); + apiClient->basePath = "http://petstore.swagger.io/v2"; + apiClient->dataReceived = NULL; + apiClient->response_code = 0; + apiClient->apiKeys = NULL; + apiClient->accessToken = NULL; - return apiClient; + return apiClient; } void apiClient_free(apiClient_t *apiClient) { - if(apiClient->accessToken) { - list_free(apiClient->apiKeys); - } - if(apiClient->accessToken) { - free(apiClient->accessToken); - } - free(apiClient); - curl_global_cleanup(); + if(apiClient->accessToken) { + list_free(apiClient->apiKeys); + } + if(apiClient->accessToken) { + free(apiClient->accessToken); + } + free(apiClient); + curl_global_cleanup(); } void replaceSpaceWithPlus(char *stringToProcess) { - for(int i = 0; i < strlen(stringToProcess); i++) { - if(stringToProcess[i] == ' ') { - stringToProcess[i] = '+'; - } - } + for(int i = 0; i < strlen(stringToProcess); i++) { + if(stringToProcess[i] == ' ') { + stringToProcess[i] = '+'; + } + } } -char *assembleTargetUrl(char *basePath, char *operationParameter, - list_t *queryParameters) { - int neededBufferSizeForQueryParameters = 0; - listEntry_t *listEntry; +char *assembleTargetUrl(char *basePath, + char *operationParameter, + list_t *queryParameters) { + int neededBufferSizeForQueryParameters = 0; + listEntry_t *listEntry; - if(queryParameters != NULL) { - list_ForEach(listEntry, queryParameters) { - keyValuePair_t *pair = listEntry->data; - neededBufferSizeForQueryParameters += - strlen(pair->key) + strlen(pair->value); - } + if(queryParameters != NULL) { + list_ForEach(listEntry, queryParameters) { + keyValuePair_t *pair = listEntry->data; + neededBufferSizeForQueryParameters += + strlen(pair->key) + strlen(pair->value); + } - neededBufferSizeForQueryParameters += - (queryParameters->count * 2); // each keyValuePair is separated by a = and a & except the last, but this makes up for the ? at the beginning - } + neededBufferSizeForQueryParameters += + (queryParameters->count * 2); // each keyValuePair is separated by a = and a & except the last, but this makes up for the ? at the beginning + } - int operationParameterLength = 0; - int basePathLength = strlen(basePath); - bool slashNeedsToBeAppendedToBasePath = false; + int operationParameterLength = 0; + int basePathLength = strlen(basePath); + bool slashNeedsToBeAppendedToBasePath = false; - if(operationParameter != NULL) { - operationParameterLength = (1 + strlen(operationParameter)); - } - if(basePath[strlen(basePath) - 1] != '/') { - slashNeedsToBeAppendedToBasePath = true; - basePathLength++; - } + if(operationParameter != NULL) { + operationParameterLength = (1 + strlen(operationParameter)); + } + if(basePath[strlen(basePath) - 1] != '/') { + slashNeedsToBeAppendedToBasePath = true; + basePathLength++; + } - char *targetUrl = - malloc( - neededBufferSizeForQueryParameters + basePathLength + operationParameterLength + - 1); + char *targetUrl = + malloc( + neededBufferSizeForQueryParameters + basePathLength + operationParameterLength + + 1); - strcpy(targetUrl, basePath); + strcpy(targetUrl, basePath); - if(operationParameter != NULL) { - strcat(targetUrl, operationParameter); - } + if(operationParameter != NULL) { + strcat(targetUrl, operationParameter); + } - if(queryParameters != NULL) { - strcat(targetUrl, "?"); - list_ForEach(listEntry, queryParameters) { - keyValuePair_t *pair = listEntry->data; - replaceSpaceWithPlus(pair->key); - strcat(targetUrl, pair->key); - strcat(targetUrl, "="); - replaceSpaceWithPlus(pair->value); - strcat(targetUrl, pair->value); - if(listEntry->nextListEntry != NULL) { - strcat(targetUrl, "&"); - } - } - } + if(queryParameters != NULL) { + strcat(targetUrl, "?"); + list_ForEach(listEntry, queryParameters) { + keyValuePair_t *pair = listEntry->data; + replaceSpaceWithPlus(pair->key); + strcat(targetUrl, pair->key); + strcat(targetUrl, "="); + replaceSpaceWithPlus(pair->value); + strcat(targetUrl, pair->value); + if(listEntry->nextListEntry != NULL) { + strcat(targetUrl, "&"); + } + } + } - return targetUrl; + return targetUrl; } char *assembleHeaderField(char *key, char *value) { - char *header = malloc(strlen(key) + strlen(value) + 3); + char *header = malloc(strlen(key) + strlen(value) + 3); - strcpy(header, key), - strcat(header, ": "); - strcat(header, value); + strcpy(header, key), + strcat(header, ": "); + strcat(header, value); - return header; + return header; } void postData(CURL *handle, char *bodyParameters) { - curl_easy_setopt(handle, CURLOPT_POSTFIELDS, bodyParameters); - curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE_LARGE, - strlen(bodyParameters)); + curl_easy_setopt(handle, CURLOPT_POSTFIELDS, bodyParameters); + curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE_LARGE, + strlen(bodyParameters)); } int lengthOfKeyPair(keyValuePair_t *keyPair) { - long length = 0; - if((keyPair->key != NULL) && - (keyPair->value != NULL) ) - { - length = strlen(keyPair->key) + strlen(keyPair->value); - return length; - } - return 0; + long length = 0; + if((keyPair->key != NULL) && + (keyPair->value != NULL) ) + { + length = strlen(keyPair->key) + strlen(keyPair->value); + return length; + } + return 0; } -void apiClient_invoke(apiClient_t *apiClient, char *operationParameter, - list_t *queryParameters, list_t *headerParameters, - list_t *formParameters, list_t *headerType, - list_t *contentType, char *bodyParameters, - char *requestType) { - CURL *handle = curl_easy_init(); - CURLcode res; +void apiClient_invoke(apiClient_t *apiClient, + char *operationParameter, + list_t *queryParameters, + list_t *headerParameters, + list_t *formParameters, + list_t *headerType, + list_t *contentType, + char *bodyParameters, + char *requestType) { + CURL *handle = curl_easy_init(); + CURLcode res; - if(handle) { - listEntry_t *listEntry; - curl_mime *mime = NULL; - struct curl_slist *headers = NULL; - char *buffContent = NULL; - char *buffHeader = NULL; - binary_t *fileVar = NULL; - char *formString = NULL; + if(handle) { + listEntry_t *listEntry; + curl_mime *mime = NULL; + struct curl_slist *headers = NULL; + char *buffContent = NULL; + char *buffHeader = NULL; + binary_t *fileVar = NULL; + char *formString = NULL; - if(headerType != NULL) { - list_ForEach(listEntry, headerType) { - if(strstr((char *) listEntry->data, - "xml") == NULL) - { - buffHeader = malloc(strlen( - "Accept: ") + - strlen((char *) - listEntry-> - data) + 1); - sprintf(buffHeader, "%s%s", "Accept: ", - (char *) listEntry->data); - headers = curl_slist_append(headers, - buffHeader); - free(buffHeader); - } - } - } - if(contentType != NULL) { - list_ForEach(listEntry, contentType) { - if(strstr((char *) listEntry->data, - "xml") == NULL) - { - buffContent = - malloc(strlen( - "Content-Type: ") + strlen( - (char *) - listEntry->data) + - 1); - sprintf(buffContent, "%s%s", - "Content-Type: ", - (char *) listEntry->data); - headers = curl_slist_append(headers, - buffContent); - } - } - } else { - headers = curl_slist_append(headers, - "Content-Type: application/json"); - } + if(headerType != NULL) { + list_ForEach(listEntry, headerType) { + if(strstr((char *) listEntry->data, + "xml") == NULL) + { + buffHeader = malloc(strlen( + "Accept: ") + + strlen((char *) + listEntry-> + data) + 1); + sprintf(buffHeader, "%s%s", "Accept: ", + (char *) listEntry->data); + headers = curl_slist_append(headers, + buffHeader); + free(buffHeader); + } + } + } + if(contentType != NULL) { + list_ForEach(listEntry, contentType) { + if(strstr((char *) listEntry->data, + "xml") == NULL) + { + buffContent = + malloc(strlen( + "Content-Type: ") + strlen( + (char *) + listEntry->data) + + 1); + sprintf(buffContent, "%s%s", + "Content-Type: ", + (char *) listEntry->data); + headers = curl_slist_append(headers, + buffContent); + } + } + } else { + headers = curl_slist_append(headers, + "Content-Type: application/json"); + } - if(requestType != NULL) { - curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST, - requestType); - } + if(requestType != NULL) { + curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST, + requestType); + } - if(formParameters != NULL) { - if(strstr(buffContent, - "application/x-www-form-urlencoded") != NULL) - { - long parameterLength = 0; - long keyPairLength = 0; - list_ForEach(listEntry, formParameters) { - keyValuePair_t *keyPair = - listEntry->data; + if(formParameters != NULL) { + if(strstr(buffContent, + "application/x-www-form-urlencoded") != NULL) + { + long parameterLength = 0; + long keyPairLength = 0; + list_ForEach(listEntry, formParameters) { + keyValuePair_t *keyPair = + listEntry->data; - keyPairLength = - lengthOfKeyPair(keyPair) + 1; + keyPairLength = + lengthOfKeyPair(keyPair) + 1; - if(listEntry->nextListEntry != NULL) { - parameterLength++; - } - parameterLength = parameterLength + - keyPairLength; - } + if(listEntry->nextListEntry != NULL) { + parameterLength++; + } + parameterLength = parameterLength + + keyPairLength; + } - formString = malloc(parameterLength + 1); - memset(formString, 0, parameterLength + 1); + formString = malloc(parameterLength + 1); + memset(formString, 0, parameterLength + 1); - list_ForEach(listEntry, formParameters) { - keyValuePair_t *keyPair = - listEntry->data; - if((keyPair->key != NULL) && - (keyPair->value != NULL) ) - { - strcat(formString, - keyPair->key); - strcat(formString, "="); - strcat(formString, - keyPair->value); - if(listEntry->nextListEntry != - NULL) - { - strcat(formString, "&"); - } - } - } - curl_easy_setopt(handle, CURLOPT_POSTFIELDS, - formString); - } - if(strstr(buffContent, "multipart/form-data") != NULL) { - mime = curl_mime_init(handle); - list_ForEach(listEntry, formParameters) { - keyValuePair_t *keyValuePair = - listEntry->data; + list_ForEach(listEntry, formParameters) { + keyValuePair_t *keyPair = + listEntry->data; + if((keyPair->key != NULL) && + (keyPair->value != NULL) ) + { + strcat(formString, + keyPair->key); + strcat(formString, "="); + strcat(formString, + keyPair->value); + if(listEntry->nextListEntry != + NULL) + { + strcat(formString, "&"); + } + } + } + curl_easy_setopt(handle, CURLOPT_POSTFIELDS, + formString); + } + if(strstr(buffContent, "multipart/form-data") != NULL) { + mime = curl_mime_init(handle); + list_ForEach(listEntry, formParameters) { + keyValuePair_t *keyValuePair = + listEntry->data; - if((keyValuePair->key != NULL) && - (keyValuePair->value != NULL) ) - { - curl_mimepart *part = - curl_mime_addpart(mime); + if((keyValuePair->key != NULL) && + (keyValuePair->value != NULL) ) + { + curl_mimepart *part = + curl_mime_addpart(mime); - curl_mime_name(part, - keyValuePair->key); + curl_mime_name(part, + keyValuePair->key); - if(strcmp(keyValuePair->key, - "file") == 0) - { - memcpy(&fileVar, - keyValuePair->value, - sizeof(fileVar)); - curl_mime_data(part, - fileVar->data, - fileVar->len); - curl_mime_filename(part, - "image.png"); - } else { - curl_mime_data(part, - keyValuePair->value, - CURL_ZERO_TERMINATED); - } - } - } - curl_easy_setopt(handle, CURLOPT_MIMEPOST, - mime); - } - } + if(strcmp(keyValuePair->key, + "file") == 0) + { + memcpy(&fileVar, + keyValuePair->value, + sizeof(fileVar)); + curl_mime_data(part, + fileVar->data, + fileVar->len); + curl_mime_filename(part, + "image.png"); + } else { + curl_mime_data(part, + keyValuePair->value, + CURL_ZERO_TERMINATED); + } + } + } + curl_easy_setopt(handle, CURLOPT_MIMEPOST, + mime); + } + } - list_ForEach(listEntry, headerParameters) { - keyValuePair_t *keyValuePair = listEntry->data; - if((keyValuePair->key != NULL) && - (keyValuePair->value != NULL) ) - { - char *headerValueToWrite = assembleHeaderField( - keyValuePair->key, keyValuePair->value); - curl_slist_append(headers, headerValueToWrite); - free(headerValueToWrite); - } - } - // this would only be generated for apiKey authentication - if(apiClient->apiKeys != NULL) { - list_ForEach(listEntry, apiClient->apiKeys) { - keyValuePair_t *apiKey = listEntry->data; - if((apiKey->key != NULL) && - (apiKey->value != NULL) ) - { - char *headerValueToWrite = - assembleHeaderField( - apiKey->key, - apiKey->value); - curl_slist_append(headers, - headerValueToWrite); - free(headerValueToWrite); - } - } - } + list_ForEach(listEntry, headerParameters) { + keyValuePair_t *keyValuePair = listEntry->data; + if((keyValuePair->key != NULL) && + (keyValuePair->value != NULL) ) + { + char *headerValueToWrite = assembleHeaderField( + keyValuePair->key, keyValuePair->value); + curl_slist_append(headers, headerValueToWrite); + free(headerValueToWrite); + } + } + // this would only be generated for apiKey authentication + if (apiClient->apiKeys != NULL) + { + list_ForEach(listEntry, apiClient->apiKeys) { + keyValuePair_t *apiKey = listEntry->data; + if((apiKey->key != NULL) && + (apiKey->value != NULL) ) + { + char *headerValueToWrite = assembleHeaderField( + apiKey->key, apiKey->value); + curl_slist_append(headers, headerValueToWrite); + free(headerValueToWrite); + } + } + } - char *targetUrl = - assembleTargetUrl(apiClient->basePath, - operationParameter, - queryParameters); + char *targetUrl = + assembleTargetUrl(apiClient->basePath, + operationParameter, + queryParameters); - curl_easy_setopt(handle, CURLOPT_URL, targetUrl); - curl_easy_setopt(handle, - CURLOPT_WRITEFUNCTION, - writeDataCallback); - curl_easy_setopt(handle, - CURLOPT_WRITEDATA, - &apiClient->dataReceived); - curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(handle, CURLOPT_VERBOSE, 0); // to get curl debug msg 0: to disable, 1L:to enable + curl_easy_setopt(handle, CURLOPT_URL, targetUrl); + curl_easy_setopt(handle, + CURLOPT_WRITEFUNCTION, + writeDataCallback); + curl_easy_setopt(handle, + CURLOPT_WRITEDATA, + &apiClient->dataReceived); + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers); + curl_easy_setopt(handle, CURLOPT_VERBOSE, 0); // to get curl debug msg 0: to disable, 1L:to enable - // this would only be generated for OAuth2 authentication - if(apiClient->accessToken != NULL) { - // curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_BEARER); - curl_easy_setopt(handle, - CURLOPT_XOAUTH2_BEARER, - apiClient->accessToken); - } + // this would only be generated for OAuth2 authentication + if(apiClient->accessToken != NULL) { + // curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_BEARER); + curl_easy_setopt(handle, + CURLOPT_XOAUTH2_BEARER, + apiClient->accessToken); + } - if(bodyParameters != NULL) { - postData(handle, bodyParameters); - } + if(bodyParameters != NULL) { + postData(handle, bodyParameters); + } - res = curl_easy_perform(handle); + res = curl_easy_perform(handle); - curl_slist_free_all(headers); + curl_slist_free_all(headers); - free(targetUrl); + free(targetUrl); - if(contentType != NULL) { - free(buffContent); - } + if(contentType != NULL) { + free(buffContent); + } - if(res == CURLE_OK) { - curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, - &apiClient->response_code); - } else { - char *url, *ip, *scheme; - long port; - curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, &url); - curl_easy_getinfo(handle, CURLINFO_PRIMARY_IP, &ip); - curl_easy_getinfo(handle, CURLINFO_PRIMARY_PORT, &port); - curl_easy_getinfo(handle, CURLINFO_SCHEME, &scheme); - fprintf(stderr, - "curl_easy_perform() failed\n\nURL: %s\nIP: %s\nPORT: %li\nSCHEME: %s\nStrERROR: %s\n", url, ip, port, scheme, - curl_easy_strerror(res)); - } + if(res == CURLE_OK) { + curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &apiClient->response_code); + } else { + char *url,*ip,*scheme; + long port; + curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, &url); + curl_easy_getinfo(handle, CURLINFO_PRIMARY_IP, &ip); + curl_easy_getinfo(handle, CURLINFO_PRIMARY_PORT, &port); + curl_easy_getinfo(handle, CURLINFO_SCHEME, &scheme); + fprintf(stderr, "curl_easy_perform() failed\n\nURL: %s\nIP: %s\nPORT: %li\nSCHEME: %s\nStrERROR: %s\n",url,ip,port,scheme, + curl_easy_strerror(res)); + } - curl_easy_cleanup(handle); - if(formParameters != NULL) { - free(formString); - curl_mime_free(mime); - } - } + curl_easy_cleanup(handle); + if(formParameters != NULL) { + free(formString); + curl_mime_free(mime); + } + } } size_t writeDataCallback(void *buffer, size_t size, size_t nmemb, void *userp) { - *(char **) userp = strdup(buffer); + *(char **) userp = strdup(buffer); - return size * nmemb; + return size * nmemb; } char *strReplace(char *orig, char *rep, char *with) { - char *result; // the return string - char *ins; // the next insert point - char *tmp; // varies - int lenRep; // length of rep (the string to remove) - int lenWith; // length of with (the string to replace rep with) - int lenFront; // distance between rep and end of last rep - int count; // number of replacements + char *result; // the return string + char *ins; // the next insert point + char *tmp; // varies + int lenRep; // length of rep (the string to remove) + int lenWith; // length of with (the string to replace rep with) + int lenFront; // distance between rep and end of last rep + int count; // number of replacements - // sanity checks and initialization - if(!orig || - !rep) - { - return NULL; - } - lenRep = strlen(rep); - if(lenRep == 0) { - return NULL; // empty rep causes infinite loop during count - } - if(!with) { - with = ""; - } - lenWith = strlen(with); + // sanity checks and initialization + if(!orig || !rep) + { + return NULL; + } + lenRep = strlen(rep); + if(lenRep == 0) { + return NULL; // empty rep causes infinite loop during count + } + if(!with) { + with = ""; + } + lenWith = strlen(with); - // count the number of replacements needed - ins = orig; - for(count = 0; tmp = strstr(ins, rep); ++count) { - ins = tmp + lenRep; - } + // count the number of replacements needed + ins = orig; + for(count = 0; tmp = strstr(ins, rep); ++count) { + ins = tmp + lenRep; + } - tmp = result = malloc(strlen(orig) + (lenWith - lenRep) * count + 1); + tmp = result = malloc(strlen(orig) + (lenWith - lenRep) * count + 1); - if(!result) { - return NULL; - } - char *originalPointer = orig; // copying original pointer to free the memory - // first time through the loop, all the variable are set correctly - // from here on, - // tmp points to the end of the result string - // ins points to the next occurrence of rep in orig - // orig points to the remainder of orig after "end of rep" - while(count--) { - ins = strstr(orig, rep); - lenFront = ins - orig; - tmp = strncpy(tmp, orig, lenFront) + lenFront; - tmp = strcpy(tmp, with) + lenWith; - orig += lenFront + lenRep; // move to next "end of rep" - } - strcpy(tmp, orig); - free(originalPointer); - return result; + if(!result) { + return NULL; + } + char *originalPointer = orig; // copying original pointer to free the memory + // first time through the loop, all the variable are set correctly + // from here on, + // tmp points to the end of the result string + // ins points to the next occurrence of rep in orig + // orig points to the remainder of orig after "end of rep" + while(count--) { + ins = strstr(orig, rep); + lenFront = ins - orig; + tmp = strncpy(tmp, orig, lenFront) + lenFront; + tmp = strcpy(tmp, with) + lenWith; + orig += lenFront + lenRep; // move to next "end of rep" + } + strcpy(tmp, orig); + free(originalPointer); + return result; } -char *sbi_base64encode(const void *b64_encode_this, - int encode_this_many_bytes) { +char *sbi_base64encode (const void *b64_encode_this, int encode_this_many_bytes){ #ifdef OPENSSL - BIO *b64_bio, *mem_bio; // Declares two OpenSSL BIOs: a base64 filter and a memory BIO. - BUF_MEM *mem_bio_mem_ptr; // Pointer to a "memory BIO" structure holding our base64 data. - b64_bio = BIO_new(BIO_f_base64()); // Initialize our base64 filter BIO. - mem_bio = BIO_new(BIO_s_mem()); // Initialize our memory sink BIO. - BIO_push(b64_bio, mem_bio); // Link the BIOs by creating a filter-sink BIO chain. - BIO_set_flags(b64_bio, BIO_FLAGS_BASE64_NO_NL); // No newlines every 64 characters or less. - BIO_write(b64_bio, b64_encode_this, encode_this_many_bytes); // Records base64 encoded data. - BIO_flush(b64_bio); // Flush data. Necessary for b64 encoding, because of pad characters. - BIO_get_mem_ptr(mem_bio, &mem_bio_mem_ptr); // Store address of mem_bio's memory structure. - BIO_set_close(mem_bio, BIO_NOCLOSE); // Permit access to mem_ptr after BIOs are destroyed. - BIO_free_all(b64_bio); // Destroys all BIOs in chain, starting with b64 (i.e. the 1st one). - BUF_MEM_grow(mem_bio_mem_ptr, (*mem_bio_mem_ptr).length + 1); // Makes space for end null. - (*mem_bio_mem_ptr).data[(*mem_bio_mem_ptr).length] = '\0'; // Adds null-terminator to tail. - return (*mem_bio_mem_ptr).data; // Returns base-64 encoded data. (See: "buf_mem_st" struct). + BIO *b64_bio, *mem_bio; //Declares two OpenSSL BIOs: a base64 filter and a memory BIO. + BUF_MEM *mem_bio_mem_ptr; //Pointer to a "memory BIO" structure holding our base64 data. + b64_bio = BIO_new(BIO_f_base64()); //Initialize our base64 filter BIO. + mem_bio = BIO_new(BIO_s_mem()); //Initialize our memory sink BIO. + BIO_push(b64_bio, mem_bio); //Link the BIOs by creating a filter-sink BIO chain. + BIO_set_flags(b64_bio, BIO_FLAGS_BASE64_NO_NL); //No newlines every 64 characters or less. + BIO_write(b64_bio, b64_encode_this, encode_this_many_bytes); //Records base64 encoded data. + BIO_flush(b64_bio); //Flush data. Necessary for b64 encoding, because of pad characters. + BIO_get_mem_ptr(mem_bio, &mem_bio_mem_ptr); //Store address of mem_bio's memory structure. + BIO_set_close(mem_bio, BIO_NOCLOSE); //Permit access to mem_ptr after BIOs are destroyed. + BIO_free_all(b64_bio); //Destroys all BIOs in chain, starting with b64 (i.e. the 1st one). + BUF_MEM_grow(mem_bio_mem_ptr, (*mem_bio_mem_ptr).length + 1); //Makes space for end null. + (*mem_bio_mem_ptr).data[(*mem_bio_mem_ptr).length] = '\0'; //Adds null-terminator to tail. + return (*mem_bio_mem_ptr).data; //Returns base-64 encoded data. (See: "buf_mem_st" struct). #endif } -char *sbi_base64decode(const void *b64_decode_this, - int decode_this_many_bytes) { +char *sbi_base64decode (const void *b64_decode_this, int decode_this_many_bytes){ #ifdef OPENSSL - BIO *b64_bio, *mem_bio; // Declares two OpenSSL BIOs: a base64 filter and a memory BIO. - char *base64_decoded = calloc( (decode_this_many_bytes * 3) / 4 + 1, - sizeof(char) ); // +1 = null. - b64_bio = BIO_new(BIO_f_base64()); // Initialize our base64 filter BIO. - mem_bio = BIO_new(BIO_s_mem()); // Initialize our memory source BIO. - BIO_write(mem_bio, b64_decode_this, decode_this_many_bytes); // Base64 data saved in source. - BIO_push(b64_bio, mem_bio); // Link the BIOs by creating a filter-source BIO chain. - BIO_set_flags(b64_bio, BIO_FLAGS_BASE64_NO_NL); // Don't require trailing newlines. - int decoded_byte_index = 0; // Index where the next base64_decoded byte should be written. - while(0 < BIO_read(b64_bio, base64_decoded + decoded_byte_index, 1) ) { // Read byte-by-byte. - decoded_byte_index++; // Increment the index until read of BIO decoded data is complete. - } // Once we're done reading decoded data, BIO_read returns -1 even though there's no error. - BIO_free_all(b64_bio); // Destroys all BIOs in chain, starting with b64 (i.e. the 1st one). - return base64_decoded; // Returns base-64 decoded data with trailing null terminator. + BIO *b64_bio, *mem_bio; //Declares two OpenSSL BIOs: a base64 filter and a memory BIO. + char *base64_decoded = calloc( (decode_this_many_bytes*3)/4+1, sizeof(char) ); //+1 = null. + b64_bio = BIO_new(BIO_f_base64()); //Initialize our base64 filter BIO. + mem_bio = BIO_new(BIO_s_mem()); //Initialize our memory source BIO. + BIO_write(mem_bio, b64_decode_this, decode_this_many_bytes); //Base64 data saved in source. + BIO_push(b64_bio, mem_bio); //Link the BIOs by creating a filter-source BIO chain. + BIO_set_flags(b64_bio, BIO_FLAGS_BASE64_NO_NL); //Don't require trailing newlines. + int decoded_byte_index = 0; //Index where the next base64_decoded byte should be written. + while ( 0 < BIO_read(b64_bio, base64_decoded+decoded_byte_index, 1) ){ //Read byte-by-byte. + decoded_byte_index++; //Increment the index until read of BIO decoded data is complete. + } //Once we're done reading decoded data, BIO_read returns -1 even though there's no error. + BIO_free_all(b64_bio); //Destroys all BIOs in chain, starting with b64 (i.e. the 1st one). + return base64_decoded; //Returns base-64 decoded data with trailing null terminator. #endif } diff --git a/samples/client/petstore/c/src/apiKey.c b/samples/client/petstore/c/src/apiKey.c index a7e000eb3b1..2bf8fc3e9d0 100644 --- a/samples/client/petstore/c/src/apiKey.c +++ b/samples/client/petstore/c/src/apiKey.c @@ -3,12 +3,12 @@ #include "../include/keyValuePair.h" keyValuePair_t *keyValuePair_create(char *key, void *value) { - keyValuePair_t *keyValuePair = malloc(sizeof(keyValuePair_t)); - keyValuePair->key = key; - keyValuePair->value = value; - return keyValuePair; + keyValuePair_t *keyValuePair = malloc(sizeof(keyValuePair_t)); + keyValuePair->key = key; + keyValuePair->value = value; + return keyValuePair; } void keyValuePair_free(keyValuePair_t *keyValuePair) { - free(keyValuePair); + free(keyValuePair); } diff --git a/samples/client/petstore/c/src/list.c b/samples/client/petstore/c/src/list.c index dc3f78dab76..73eee13c24d 100644 --- a/samples/client/petstore/c/src/list.c +++ b/samples/client/petstore/c/src/list.c @@ -4,161 +4,163 @@ #include "../include/list.h" static listEntry_t *listEntry_create(void *data) { - listEntry_t *createdListEntry = malloc(sizeof(listEntry_t)); - if(createdListEntry == NULL) { - // TODO Malloc Failure - return NULL; - } - createdListEntry->data = data; + listEntry_t *createdListEntry = malloc(sizeof(listEntry_t)); + if(createdListEntry == NULL) { + // TODO Malloc Failure + return NULL; + } + createdListEntry->data = data; - return createdListEntry; + return createdListEntry; } void listEntry_free(listEntry_t *listEntry, void *additionalData) { - free(listEntry); + free(listEntry); } void listEntry_printAsInt(listEntry_t *listEntry, void *additionalData) { - printf("%i\n", *((int *) (listEntry->data))); + printf("%i\n", *((int *) (listEntry->data))); } list_t *list_create() { - list_t *createdList = malloc(sizeof(list_t)); - if(createdList == NULL) { - // TODO Malloc Failure - return NULL; - } - createdList->firstEntry = NULL; - createdList->lastEntry = NULL; - createdList->count = 0; + list_t *createdList = malloc(sizeof(list_t)); + if(createdList == NULL) { + // TODO Malloc Failure + return NULL; + } + createdList->firstEntry = NULL; + createdList->lastEntry = NULL; + createdList->count = 0; - return createdList; + return createdList; } -void list_iterateThroughListForward(list_t *list, void (*operationToPerform)( - listEntry_t *, - void *callbackFunctionUsedData), +void list_iterateThroughListForward(list_t *list, + void (*operationToPerform)( + listEntry_t *, + void *callbackFunctionUsedData), void *additionalDataNeededForCallbackFunction) { - listEntry_t *currentListEntry = list->firstEntry; - listEntry_t *nextListEntry; + listEntry_t *currentListEntry = list->firstEntry; + listEntry_t *nextListEntry; - if(currentListEntry == NULL) { - return; - } + if(currentListEntry == NULL) { + return; + } - nextListEntry = currentListEntry->nextListEntry; + nextListEntry = currentListEntry->nextListEntry; - operationToPerform(currentListEntry, - additionalDataNeededForCallbackFunction); - currentListEntry = nextListEntry; + operationToPerform(currentListEntry, + additionalDataNeededForCallbackFunction); + currentListEntry = nextListEntry; - while(currentListEntry != NULL) { - nextListEntry = currentListEntry->nextListEntry; - operationToPerform(currentListEntry, - additionalDataNeededForCallbackFunction); - currentListEntry = nextListEntry; - } + while(currentListEntry != NULL) { + nextListEntry = currentListEntry->nextListEntry; + operationToPerform(currentListEntry, + additionalDataNeededForCallbackFunction); + currentListEntry = nextListEntry; + } } -void list_iterateThroughListBackward(list_t *list, void (*operationToPerform)( - listEntry_t *, - void *callbackFunctionUsedData), +void list_iterateThroughListBackward(list_t *list, + void (*operationToPerform)( + listEntry_t *, + void *callbackFunctionUsedData), void *additionalDataNeededForCallbackFunction) { - listEntry_t *currentListEntry = list->lastEntry; - listEntry_t *nextListEntry = currentListEntry->prevListEntry; + listEntry_t *currentListEntry = list->lastEntry; + listEntry_t *nextListEntry = currentListEntry->prevListEntry; - if(currentListEntry == NULL) { - return; - } + if(currentListEntry == NULL) { + return; + } - operationToPerform(currentListEntry, - additionalDataNeededForCallbackFunction); - currentListEntry = nextListEntry; + operationToPerform(currentListEntry, + additionalDataNeededForCallbackFunction); + currentListEntry = nextListEntry; - while(currentListEntry != NULL) { - nextListEntry = currentListEntry->prevListEntry; - operationToPerform(currentListEntry, - additionalDataNeededForCallbackFunction); - currentListEntry = nextListEntry; - } + while(currentListEntry != NULL) { + nextListEntry = currentListEntry->prevListEntry; + operationToPerform(currentListEntry, + additionalDataNeededForCallbackFunction); + currentListEntry = nextListEntry; + } } void list_free(list_t *list) { - list_iterateThroughListForward(list, listEntry_free, NULL); - free(list); + list_iterateThroughListForward(list, listEntry_free, NULL); + free(list); } void list_addElement(list_t *list, void *dataToAddInList) { - listEntry_t *newListEntry = listEntry_create(dataToAddInList); - if(newListEntry == NULL) { - // TODO Malloc Failure - return; - } - if(list->firstEntry == NULL) { - list->firstEntry = newListEntry; - list->lastEntry = newListEntry; + listEntry_t *newListEntry = listEntry_create(dataToAddInList); + if(newListEntry == NULL) { + // TODO Malloc Failure + return; + } + if(list->firstEntry == NULL) { + list->firstEntry = newListEntry; + list->lastEntry = newListEntry; - newListEntry->prevListEntry = NULL; - newListEntry->nextListEntry = NULL; + newListEntry->prevListEntry = NULL; + newListEntry->nextListEntry = NULL; - list->count++; + list->count++; - return; - } + return; + } - list->lastEntry->nextListEntry = newListEntry; - newListEntry->prevListEntry = list->lastEntry; - newListEntry->nextListEntry = NULL; - list->lastEntry = newListEntry; + list->lastEntry->nextListEntry = newListEntry; + newListEntry->prevListEntry = list->lastEntry; + newListEntry->nextListEntry = NULL; + list->lastEntry = newListEntry; - list->count++; + list->count++; } void list_removeElement(list_t *list, listEntry_t *elementToRemove) { - listEntry_t *elementBeforeElementToRemove = - elementToRemove->prevListEntry; - listEntry_t *elementAfterElementToRemove = - elementToRemove->nextListEntry; + listEntry_t *elementBeforeElementToRemove = + elementToRemove->prevListEntry; + listEntry_t *elementAfterElementToRemove = + elementToRemove->nextListEntry; - if(elementBeforeElementToRemove != NULL) { - elementBeforeElementToRemove->nextListEntry = - elementAfterElementToRemove; - } else { - list->firstEntry = elementAfterElementToRemove; - } + if(elementBeforeElementToRemove != NULL) { + elementBeforeElementToRemove->nextListEntry = + elementAfterElementToRemove; + } else { + list->firstEntry = elementAfterElementToRemove; + } - if(elementAfterElementToRemove != NULL) { - elementAfterElementToRemove->prevListEntry = - elementBeforeElementToRemove; - } else { - list->lastEntry = elementBeforeElementToRemove; - } + if(elementAfterElementToRemove != NULL) { + elementAfterElementToRemove->prevListEntry = + elementBeforeElementToRemove; + } else { + list->lastEntry = elementBeforeElementToRemove; + } - listEntry_free(elementToRemove, NULL); + listEntry_free(elementToRemove, NULL); - list->count--; + list->count--; } listEntry_t *list_getElementAt(list_t *list, long indexOfElement) { - listEntry_t *currentListEntry; + listEntry_t *currentListEntry; - if((list->count / 2) > indexOfElement) { - currentListEntry = list->firstEntry; + if((list->count / 2) > indexOfElement) { + currentListEntry = list->firstEntry; - for(int i = 0; i < indexOfElement; i++) { - currentListEntry = currentListEntry->nextListEntry; - } + for(int i = 0; i < indexOfElement; i++) { + currentListEntry = currentListEntry->nextListEntry; + } - return currentListEntry; - } else { - currentListEntry = list->lastEntry; + return currentListEntry; + } else { + currentListEntry = list->lastEntry; - for(int i = 1; i < (list->count - indexOfElement); i++) { - currentListEntry = currentListEntry->prevListEntry; - } + for(int i = 1; i < (list->count - indexOfElement); i++) { + currentListEntry = currentListEntry->prevListEntry; + } - return currentListEntry; - } + return currentListEntry; + } } From 2dc022087462ec8b61ffc79cd18ddd5351f5107a Mon Sep 17 00:00:00 2001 From: Thibault Duperron Date: Wed, 27 Nov 2019 11:04:43 +0100 Subject: [PATCH 27/96] Add mutable model option to kotlin generators (#4115) * Add mutable model option to kotlin generators fix #3803 * doc * Change template name to modelMutable * Samples --- bin/kotlin-springboot-petstore-all.sh | 3 +- ...pringboot-petstore-server-model-mutable.sh | 35 ++++ bin/kotlin-vertx-server-petstore.sh | 2 +- docs/generators/kotlin-server.md | 1 + docs/generators/kotlin-spring.md | 1 + docs/generators/kotlin-vertx.md | 1 + docs/generators/kotlin.md | 1 + .../languages/AbstractKotlinCodegen.java | 5 + .../kotlin-client/data_class_opt_var.mustache | 2 +- .../kotlin-client/data_class_req_var.mustache | 2 +- .../kotlin-client/modelMutable.mustache | 1 + .../kotlin-server/data_class_opt_var.mustache | 2 +- .../kotlin-server/data_class_req_var.mustache | 2 +- .../kotlin-server/modelMutable.mustache | 1 + .../kotlin-spring/dataClassOptVar.mustache | 2 +- .../kotlin-spring/dataClassReqVar.mustache | 2 +- .../kotlin-spring/interfaceOptVar.mustache | 2 +- .../kotlin-spring/interfaceReqVar.mustache | 2 +- .../kotlin-spring/modelMutable.mustache | 1 + .../kotlin-vertx-server/data_class.mustache | 4 +- .../data_class_opt_var.mustache | 2 +- .../data_class_req_var.mustache | 2 +- .../kotlin-vertx-server/modelMutable.mustache | 1 + .../org/openapitools/codegen/TestUtils.java | 24 +++ .../codegen/java/jaxrs/JavaJaxrsBaseTest.java | 53 ++--- .../kotlin/KotlinModelCodegenTest.java | 72 +++++++ .../.openapi-generator-ignore | 23 +++ .../.openapi-generator/VERSION | 1 + .../kotlin-springboot-modelMutable/README.md | 21 ++ .../build.gradle.kts | 54 +++++ .../kotlin-springboot-modelMutable/pom.xml | 153 +++++++++++++++ .../settings.gradle | 15 ++ .../kotlin/org/openapitools/Application.kt | 14 ++ .../kotlin/org/openapitools/api/Exceptions.kt | 29 +++ .../kotlin/org/openapitools/api/PetApi.kt | 184 ++++++++++++++++++ .../org/openapitools/api/PetApiService.kt | 22 +++ .../org/openapitools/api/PetApiServiceImpl.kt | 40 ++++ .../kotlin/org/openapitools/api/StoreApi.kt | 107 ++++++++++ .../org/openapitools/api/StoreApiService.kt | 13 ++ .../openapitools/api/StoreApiServiceImpl.kt | 23 +++ .../kotlin/org/openapitools/api/UserApi.kt | 161 +++++++++++++++ .../org/openapitools/api/UserApiService.kt | 21 ++ .../openapitools/api/UserApiServiceImpl.kt | 39 ++++ .../kotlin/org/openapitools/model/Category.kt | 29 +++ .../openapitools/model/ModelApiResponse.kt | 33 ++++ .../kotlin/org/openapitools/model/Order.kt | 60 ++++++ .../main/kotlin/org/openapitools/model/Pet.kt | 64 ++++++ .../main/kotlin/org/openapitools/model/Tag.kt | 29 +++ .../kotlin/org/openapitools/model/User.kt | 53 +++++ .../src/main/resources/application.yaml | 10 + .../kotlin/org/openapitools/api/PetApiTest.kt | 148 ++++++++++++++ .../org/openapitools/api/StoreApiTest.kt | 77 ++++++++ .../org/openapitools/api/UserApiTest.kt | 143 ++++++++++++++ 53 files changed, 1743 insertions(+), 49 deletions(-) create mode 100755 bin/kotlin-springboot-petstore-server-model-mutable.sh create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/modelMutable.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-server/modelMutable.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-spring/modelMutable.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-vertx-server/modelMutable.mustache create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinModelCodegenTest.java create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator-ignore create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator/VERSION create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/README.md create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/pom.xml create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/settings.gradle create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/Application.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/Exceptions.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApi.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiService.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApi.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiService.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiServiceImpl.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApi.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiService.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiServiceImpl.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Category.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/ModelApiResponse.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Order.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Pet.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Tag.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/User.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/main/resources/application.yaml create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/PetApiTest.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/StoreApiTest.kt create mode 100644 samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/UserApiTest.kt diff --git a/bin/kotlin-springboot-petstore-all.sh b/bin/kotlin-springboot-petstore-all.sh index b0ba7a6e825..b24ada15722 100755 --- a/bin/kotlin-springboot-petstore-all.sh +++ b/bin/kotlin-springboot-petstore-all.sh @@ -1,4 +1,5 @@ #!/bin/sh ./bin/kotlin-springboot-petstore-server.sh -./bin/kotlin-springboot-petstore-server-reactive.sh \ No newline at end of file +./bin/kotlin-springboot-petstore-server-reactive.sh +./bin/kotlin-springboot-petstore-server-model-mutable.sh diff --git a/bin/kotlin-springboot-petstore-server-model-mutable.sh b/bin/kotlin-springboot-petstore-server-model-mutable.sh new file mode 100755 index 00000000000..ed3712db26a --- /dev/null +++ b/bin/kotlin-springboot-petstore-server-model-mutable.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=$(ls -ld "$SCRIPT") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=$(dirname "$SCRIPT")/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=$(dirname "$SCRIPT")/.. + APP_DIR=$(cd "${APP_DIR}"; pwd) +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn clean package +fi + +export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-spring -g kotlin-spring -o samples/server/petstore/kotlin-springboot-modelMutable --additional-properties=library=spring-boot,beanValidations=true,swaggerAnnotations=true,serviceImplementation=true,serializableModel=true,modelMutable=true" + +echo "Cleaning previously generated files if any from samples/server/petstore/kotlin-springboot" +rm -rf samples/server/petstore/kotlin-springboot-modelMutable + +echo "Generating Kotling Spring Boot server..." +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/kotlin-vertx-server-petstore.sh b/bin/kotlin-vertx-server-petstore.sh index 73d0d087f3b..7cfc82179c5 100755 --- a/bin/kotlin-vertx-server-petstore.sh +++ b/bin/kotlin-vertx-server-petstore.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin-vertx -o samples/server/petstore/kotlin/vertx" +ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin-vertx -o samples/server/petstore/kotlin/vertx --additional-properties=modelMutable=false" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md index eb66b331ffa..d84d2857173 100644 --- a/docs/generators/kotlin-server.md +++ b/docs/generators/kotlin-server.md @@ -15,6 +15,7 @@ sidebar_label: kotlin-server |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi| |parcelizeModels|toggle "@Parcelize" for generated models| |null| |serializableModel|boolean - toggle "implements Serializable" for generated models| |null| +|modelMutable|Create mutable models| |false| |library|library template (sub-template)|

**ktor**
ktor framework
|ktor| |featureAutoHead|Automatically provide responses to HEAD requests for existing routes that have the GET verb defined.| |true| |featureConditionalHeaders|Avoid sending content if client already has same content, by checking ETag or LastModified properties.| |false| diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index a93641a10ce..5d67f4b8ec4 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -15,6 +15,7 @@ sidebar_label: kotlin-spring |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi| |parcelizeModels|toggle "@Parcelize" for generated models| |null| |serializableModel|boolean - toggle "implements Serializable" for generated models| |null| +|modelMutable|Create mutable models| |false| |title|server title name or client service name| |OpenAPI Kotlin Spring| |basePackage|base package (invokerPackage) for generated code| |org.openapitools| |serverPort|configuration the port in which the sever is to run on| |8080| diff --git a/docs/generators/kotlin-vertx.md b/docs/generators/kotlin-vertx.md index 6c50f140b78..496f1a7ef0d 100644 --- a/docs/generators/kotlin-vertx.md +++ b/docs/generators/kotlin-vertx.md @@ -15,3 +15,4 @@ sidebar_label: kotlin-vertx |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi| |parcelizeModels|toggle "@Parcelize" for generated models| |null| |serializableModel|boolean - toggle "implements Serializable" for generated models| |null| +|modelMutable|Create mutable models| |false| diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index ec9a4e0332a..d64fd3964ff 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -15,6 +15,7 @@ sidebar_label: kotlin |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi| |parcelizeModels|toggle "@Parcelize" for generated models| |null| |serializableModel|boolean - toggle "implements Serializable" for generated models| |null| +|modelMutable|Create mutable models| |false| |dateLibrary|Option. Date library to use|
**string**
String
**java8**
Java 8 native JSR310 (jvm only)
**threetenbp**
Threetenbp (jvm only)
|java8| |collectionType|Option. Collection type to use|
**array**
kotlin.Array
**list**
kotlin.collections.List
|array| |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.
**multiplatform**
Platform: Kotlin multiplatform. HTTP client: Ktor 1.2.4. JSON processing: Kotlinx Serialization: 0.12.0.
|jvm-okhttp4| 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 733cdd47b47..606e0564c44 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 @@ -43,6 +43,9 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co public enum SERIALIZATION_LIBRARY_TYPE {moshi, gson} + public static final String MODEL_MUTABLE = "modelMutable"; + public static final String MODEL_MUTABLE_DESC = "Create mutable models"; + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractKotlinCodegen.class); protected String artifactId; @@ -225,6 +228,8 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co cliOptions.add(new CliOption(CodegenConstants.PARCELIZE_MODELS, CodegenConstants.PARCELIZE_MODELS_DESC)); cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC)); + + cliOptions.add(CliOption.newBoolean(MODEL_MUTABLE, MODEL_MUTABLE_DESC, false)); } @Override 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 9a32aebeb5d..ff0fc3a4ce5 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 @@ -9,4 +9,4 @@ @SerializedName("{{{vendorExtensions.x-base-name-literal}}}") {{/gson}} {{/jvm}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}val {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/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 c03711b6884..23943c6913d 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 @@ -9,4 +9,4 @@ @SerializedName("{{{vendorExtensions.x-base-name-literal}}}") {{/gson}} {{/jvm}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}val {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/modelMutable.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/modelMutable.mustache new file mode 100644 index 00000000000..4c7f3900717 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/modelMutable.mustache @@ -0,0 +1 @@ +{{#modelMutable}}var{{/modelMutable}}{{^modelMutable}}val{{/modelMutable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache index 8bcc20d0fca..b1060118732 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache @@ -1,4 +1,4 @@ {{#description}} /* {{{description}}} */ {{/description}} - val {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file + {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/data_class_req_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/data_class_req_var.mustache index f8ffa6cde82..c79bfec01bd 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/data_class_req_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/data_class_req_var.mustache @@ -1,4 +1,4 @@ {{#description}} /* {{{description}}} */ {{/description}} - val {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file + {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/modelMutable.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/modelMutable.mustache new file mode 100644 index 00000000000..4c7f3900717 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-server/modelMutable.mustache @@ -0,0 +1 @@ +{{#modelMutable}}var{{/modelMutable}}{{^modelMutable}}val{{/modelMutable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache index 767595052b7..799807798da 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache @@ -1,4 +1,4 @@ {{#useBeanValidation}}{{#required}} {{^isReadOnly}}@get:NotNull{{/isReadOnly}} {{/required}}{{>beanValidationModel}}{{/useBeanValidation}}{{#swaggerAnnotations}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}value = "{{{description}}}"){{/swaggerAnnotations}} - @JsonProperty("{{{baseName}}}"){{#isInherited}} override{{/isInherited}} val {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file + @JsonProperty("{{{baseName}}}"){{#isInherited}} override{{/isInherited}} {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassReqVar.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassReqVar.mustache index f53fadc9b18..b7765a3e42b 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassReqVar.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassReqVar.mustache @@ -1,4 +1,4 @@ {{#useBeanValidation}}{{#required}} {{^isReadOnly}}@get:NotNull{{/isReadOnly}} {{/required}}{{>beanValidationModel}}{{/useBeanValidation}}{{#swaggerAnnotations}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}value = "{{{description}}}"){{/swaggerAnnotations}} - @JsonProperty("{{{baseName}}}"){{#isInherited}} override{{/isInherited}} val {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isReadOnly}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}{{/isReadOnly}} \ No newline at end of file + @JsonProperty("{{{baseName}}}"){{#isInherited}} override{{/isInherited}} {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isReadOnly}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}{{/isReadOnly}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache index 8db4ba7698f..8b3a9b23599 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache @@ -1,3 +1,3 @@ {{#swaggerAnnotations}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}value = "{{{description}}}"){{/swaggerAnnotations}} - val {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? {{^discriminator}}= {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}{{/discriminator}} \ No newline at end of file + {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? {{^discriminator}}= {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}{{/discriminator}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceReqVar.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceReqVar.mustache index 5f6eea31139..747a12292be 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceReqVar.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceReqVar.mustache @@ -1,3 +1,3 @@ {{#swaggerAnnotations}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}value = "{{{description}}}"){{/swaggerAnnotations}} - val {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file + {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/modelMutable.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/modelMutable.mustache new file mode 100644 index 00000000000..4c7f3900717 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/modelMutable.mustache @@ -0,0 +1 @@ +{{#modelMutable}}var{{/modelMutable}}{{^modelMutable}}val{{/modelMutable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class.mustache index d4c099d64ea..74aa6aa1f26 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class.mustache @@ -36,7 +36,7 @@ data class {{classname}} ( } {{/isEnum}}{{/vars}}{{/hasEnums}} {{#requiredVars}} - var {{{name}}} get() = _{{{name}}} ?: throw IllegalArgumentException("{{{name}}} is required") - set(value){ _{{{name}}} = value } + {{>modelMutable}} {{{name}}} get() = _{{{name}}} ?: throw IllegalArgumentException("{{{name}}} is required") + {{#modelMutable}}set(value){ _{{{name}}} = value }{{/modelMutable}} {{/requiredVars}} } diff --git a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache index 809b0075868..b1060118732 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache @@ -1,4 +1,4 @@ {{#description}} /* {{{description}}} */ {{/description}} - var {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file + {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_req_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_req_var.mustache index 66ec56120be..6a5b5280bb7 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_req_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_req_var.mustache @@ -1,4 +1,4 @@ {{#description}} /* {{{description}}} */ {{/description}} - @SerializedName("{{{name}}}") private var _{{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? \ No newline at end of file + @SerializedName("{{{name}}}") private {{>modelMutable}} _{{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/modelMutable.mustache b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/modelMutable.mustache new file mode 100644 index 00000000000..4c7f3900717 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/modelMutable.mustache @@ -0,0 +1 @@ +{{#modelMutable}}var{{/modelMutable}}{{^modelMutable}}val{{/modelMutable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java index 6c1d9a12b1f..9f970a6597d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java @@ -1,5 +1,6 @@ package org.openapitools.codegen; +import static org.testng.Assert.assertNotNull; import static org.testng.Assert.fail; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertFalse; @@ -104,4 +105,27 @@ public class TestUtils { fail("Java parse problem: " + filename, ex); } } + + + public static void assertFileContains(MockDefaultGenerator generator, String path, String... lines) { + final String generatedFile = generator.getFiles().get(path); + if (null == generatedFile) { + fail("File " + path + " not found in " + generator.getFiles().keySet()); + } + String file = linearize(generatedFile); + assertNotNull(file); + for (String line : lines) + assertTrue(file.contains(linearize(line))); + } + + private static String linearize(String target) { + return target.replaceAll("\r?\n", "").replaceAll("\\s+", "\\s"); + } + + public static void assertFileNotContains(MockDefaultGenerator generator, String path, String... lines) { + String file = linearize(generator.getFiles().get(path)); + assertNotNull(file); + for (String line : lines) + assertFalse(file.contains(linearize(line))); + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java index 0b782aa3c4e..ca580b8a75d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java @@ -14,9 +14,8 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; +import static org.openapitools.codegen.TestUtils.assertFileContains; +import static org.openapitools.codegen.TestUtils.assertFileNotContains; public abstract class JavaJaxrsBaseTest { @@ -34,9 +33,9 @@ public abstract class JavaJaxrsBaseTest { codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true"); - ClientOptInput input = new ClientOptInput(); - input.setOpenAPI(openAPI); - input.setConfig(codegen); + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); MockDefaultGenerator generator = new MockDefaultGenerator(); generator.opts(input).generate(); @@ -47,19 +46,9 @@ public abstract class JavaJaxrsBaseTest { " @JsonSubTypes.Type(value = Dog.class, name = \"Dog\"),\n" + " @JsonSubTypes.Type(value = Cat.class, name = \"Cat\"),\n" + "})"; - checkFileContains(generator, outputPath + "/src/gen/java/org/openapitools/model/Animal.java", jsonTypeInfo, jsonSubType); + assertFileContains(generator, outputPath + "/src/gen/java/org/openapitools/model/Animal.java", jsonTypeInfo, jsonSubType); } - private void checkFileContains(MockDefaultGenerator generator, String path, String... lines) { - String file = linearize(generator.getFiles().get(path)); - assertNotNull(file); - for (String line : lines) - assertTrue(file.contains(linearize(line))); - } - - private String linearize(String target) { - return target.replaceAll("\r?\n", "").replaceAll("\\s+", "\\s"); - } @Test public void doNotGenerateJsonAnnotationForPolymorphismIfJsonExclude() throws IOException { @@ -74,9 +63,9 @@ public abstract class JavaJaxrsBaseTest { codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true"); - ClientOptInput input = new ClientOptInput(); - input.setOpenAPI(openAPI); - input.setConfig(codegen); + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); MockDefaultGenerator generator = new MockDefaultGenerator(); generator.opts(input).generate(); @@ -87,15 +76,9 @@ public abstract class JavaJaxrsBaseTest { " @JsonSubTypes.Type(value = Dog.class, name = \"Dog\"),\n" + " @JsonSubTypes.Type(value = Cat.class, name = \"Cat\"),\n" + "})"; - checkFileNotContains(generator, outputPath + "/src/gen/java/org/openapitools/model/Animal.java", jsonTypeInfo, jsonSubType); + assertFileNotContains(generator, outputPath + "/src/gen/java/org/openapitools/model/Animal.java", jsonTypeInfo, jsonSubType); } - private void checkFileNotContains(MockDefaultGenerator generator, String path, String... lines) { - String file = linearize(generator.getFiles().get(path)); - assertNotNull(file); - for (String line : lines) - assertFalse(file.contains(linearize(line))); - } @Test public void doNotAddDefaultValueDocumentationForContainers() throws IOException { @@ -109,14 +92,14 @@ public abstract class JavaJaxrsBaseTest { codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true"); - ClientOptInput input = new ClientOptInput(); - input.setOpenAPI(openAPI); - input.setConfig(codegen); + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); MockDefaultGenerator generator = new MockDefaultGenerator(); generator.opts(input).generate(); - checkFileNotContains(generator, outputPath + "/src/gen/java/org/openapitools/api/ExamplesApi.java", "DefaultValue"); + assertFileNotContains(generator, outputPath + "/src/gen/java/org/openapitools/api/ExamplesApi.java", "DefaultValue"); } @Test @@ -133,13 +116,13 @@ public abstract class JavaJaxrsBaseTest { codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true"); - ClientOptInput input = new ClientOptInput(); - input.setOpenAPI(openAPI); - input.setConfig(codegen); + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); MockDefaultGenerator generator = new MockDefaultGenerator(); generator.opts(input).generate(); - checkFileContains(generator, outputPath + "/src/gen/java/org/openapitools/api/ExamplesApi.java", "DefaultValue"); + assertFileContains(generator, outputPath + "/src/gen/java/org/openapitools/api/ExamplesApi.java", "DefaultValue"); } } 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 new file mode 100644 index 00000000000..5975d0a5622 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinModelCodegenTest.java @@ -0,0 +1,72 @@ +package org.openapitools.codegen.kotlin; + +import io.swagger.parser.OpenAPIParser; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.parser.core.models.ParseOptions; +import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.MockDefaultGenerator; +import org.openapitools.codegen.languages.AbstractKotlinCodegen; +import org.openapitools.codegen.languages.KotlinClientCodegen; +import org.openapitools.codegen.languages.KotlinServerCodegen; +import org.openapitools.codegen.languages.KotlinSpringServerCodegen; +import org.openapitools.codegen.languages.KotlinVertxServerCodegen; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import static org.openapitools.codegen.TestUtils.assertFileContains; + +public class KotlinModelCodegenTest { + + @DataProvider(name = "generators") + public Object[][] client() { + return new Object[][]{ + {new KotlinClientCodegen()}, + {new KotlinServerCodegen()}, + {new KotlinSpringServerCodegen()}, + {new KotlinVertxServerCodegen()}, + }; + } + + @Test(dataProvider = "generators") + public void modelAsValues(AbstractKotlinCodegen codegen) throws IOException { + String classNameProp = "val className"; + String colorProp = "val color"; + + checkModel(codegen, false, classNameProp, colorProp); + } + + @Test(dataProvider = "generators") + private void modelMutable(AbstractKotlinCodegen codegen) throws IOException { + String classNameProp = "var className"; + String colorProp = "var color"; + + checkModel(codegen, true, classNameProp, colorProp); + } + + private void checkModel(AbstractKotlinCodegen codegen, boolean mutable, String... props) 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(); + codegen.setOutputDir(output.getAbsolutePath()); + + codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "models"); + codegen.additionalProperties().put(AbstractKotlinCodegen.MODEL_MUTABLE, mutable); + + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); + + MockDefaultGenerator generator = new MockDefaultGenerator(); + generator.opts(input).generate(); + + assertFileContains(generator, outputPath + "/src/main/kotlin/models/Animal.kt", props); + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator-ignore b/samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/.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/kotlin-springboot-modelMutable/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator/VERSION new file mode 100644 index 00000000000..d168f1d8bda --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/README.md b/samples/server/petstore/kotlin-springboot-modelMutable/README.md new file mode 100644 index 00000000000..b6865a08113 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/README.md @@ -0,0 +1,21 @@ +# openAPIPetstore + +This Kotlin based [Spring Boot](https://spring.io/projects/spring-boot) application has been generated using the [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator). + +## Getting Started + +This document assumes you have either maven or gradle available, either via the wrapper or otherwise. This does not come with a gradle / maven wrapper checked in. + +By default a [`pom.xml`](pom.xml) file will be generated. If you specified `gradleBuildFile=true` when generating this project, a `build.gradle.kts` will also be generated. Note this uses [Gradle Kotlin DSL](https://github.com/gradle/kotlin-dsl). + +To build the project using maven, run: +```bash +mvn package && java -jar target/openapi-spring-1.0.0.jar +``` + +To build the project using gradle, run: +```bash +gradle build && java -jar build/libs/openapi-spring-1.0.0.jar +``` + +If all builds successfully, the server should run on [http://localhost:8080/](http://localhost:8080/) diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts b/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts new file mode 100644 index 00000000000..26f4601e570 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts @@ -0,0 +1,54 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +buildscript { + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") + } +} + +group = "org.openapitools" +version = "1.0.0" + +repositories { + jcenter() + mavenCentral() +} + +tasks.withType { + kotlinOptions.jvmTarget = "1.8" +} + +plugins { + val kotlinVersion = "1.3.30" + id("org.jetbrains.kotlin.jvm") version kotlinVersion + id("org.jetbrains.kotlin.plugin.jpa") version kotlinVersion + id("org.jetbrains.kotlin.plugin.spring") version kotlinVersion + id("org.springframework.boot") version "2.2.0.M3" + id("io.spring.dependency-management") version "1.0.5.RELEASE" +} + +dependencies { + val kotlinxCoroutinesVersion="1.2.0" + compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + compile("org.jetbrains.kotlin:kotlin-reflect") + compile("org.springframework.boot:spring-boot-starter-web") + compile("io.swagger:swagger-annotations:1.5.21") + compile("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml") + compile("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") + compile("com.fasterxml.jackson.module:jackson-module-kotlin") + + testCompile("org.jetbrains.kotlin:kotlin-test-junit5") + testCompile("org.springframework.boot:spring-boot-starter-test") { + exclude(module = "junit") + } +} + +repositories { + mavenCentral() + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/pom.xml b/samples/server/petstore/kotlin-springboot-modelMutable/pom.xml new file mode 100644 index 00000000000..38491e8939c --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/pom.xml @@ -0,0 +1,153 @@ + + 4.0.0 + org.openapitools + openapi-spring + jar + openapi-spring + 1.0.0 + + 1.3.30 + 1.2.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.0.M3 + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/test/kotlin + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + + spring + + 1.8 + + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + org.jetbrains.kotlin + kotlin-maven-allopen + ${kotlin.version} + + + + + + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-reflect + ${kotlin.version} + + + org.springframework.boot + spring-boot-starter-web + + + + io.swagger + swagger-annotations + 1.5.21 + + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + com.fasterxml.jackson.module + jackson-module-kotlin + + + + javax.validation + validation-api + + + org.jetbrains.kotlin + kotlin-test-junit5 + 1.3.31 + test + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/settings.gradle b/samples/server/petstore/kotlin-springboot-modelMutable/settings.gradle new file mode 100644 index 00000000000..e9bd5d32d7c --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/settings.gradle @@ -0,0 +1,15 @@ +pluginManagement { + repositories { + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } + gradlePluginPortal() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.springframework.boot") { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + } + } +} +rootProject.name = "openapi-spring" \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/Application.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/Application.kt new file mode 100644 index 00000000000..f2ee49d476b --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/Application.kt @@ -0,0 +1,14 @@ +package org.openapitools + +import org.springframework.boot.runApplication +import org.springframework.context.annotation.ComponentScan +import org.springframework.boot.autoconfigure.SpringBootApplication + + +@SpringBootApplication +@ComponentScan(basePackages = ["org.openapitools", "org.openapitools.api", "org.openapitools.model"]) +class Application + +fun main(args: Array) { + runApplication(*args) +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/Exceptions.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/Exceptions.kt new file mode 100644 index 00000000000..4d8400902aa --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/Exceptions.kt @@ -0,0 +1,29 @@ +package org.openapitools.api + +import org.springframework.http.HttpStatus +import org.springframework.web.bind.annotation.ControllerAdvice +import org.springframework.web.bind.annotation.ExceptionHandler +import javax.servlet.http.HttpServletResponse +import javax.validation.ConstraintViolationException + +// TODO Extend ApiException for custom exception handling, e.g. the below NotFound exception +sealed class ApiException(msg: String, val code: Int) : Exception(msg) + +class NotFoundException(msg: String, code: Int = HttpStatus.NOT_FOUND.value()) : ApiException(msg, code) + + +@ControllerAdvice +class DefaultExceptionHandler { + + @ExceptionHandler(value = [ApiException::class]) + fun onApiException(ex: ApiException, response: HttpServletResponse): Unit = + response.sendError(ex.code, ex.message) + + @ExceptionHandler(value = [NotImplementedError::class]) + fun onNotImplemented(ex: NotImplementedError, response: HttpServletResponse): Unit = + response.sendError(HttpStatus.NOT_IMPLEMENTED.value()) + + @ExceptionHandler(value = [ConstraintViolationException::class]) + fun onConstraintViolation(ex: ConstraintViolationException, response: HttpServletResponse): Unit = + response.sendError(HttpStatus.BAD_REQUEST.value(), ex.constraintViolations.joinToString(", ") { it.message }) +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApi.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApi.kt new file mode 100644 index 00000000000..b500f915568 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApi.kt @@ -0,0 +1,184 @@ +package org.openapitools.api + +import org.openapitools.model.ModelApiResponse +import org.openapitools.model.Pet +import io.swagger.annotations.Api +import io.swagger.annotations.ApiOperation +import io.swagger.annotations.ApiParam +import io.swagger.annotations.ApiResponse +import io.swagger.annotations.ApiResponses +import io.swagger.annotations.Authorization +import io.swagger.annotations.AuthorizationScope +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.http.ResponseEntity + +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestPart +import org.springframework.web.bind.annotation.RequestParam +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.RequestHeader +import org.springframework.web.bind.annotation.RequestMethod +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import org.springframework.validation.annotation.Validated +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.beans.factory.annotation.Autowired + +import javax.validation.Valid +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size + +import kotlin.collections.List +import kotlin.collections.Map + +@RestController +@Validated +@Api(value = "Pet", description = "The Pet API") +@RequestMapping("\${api.base-path:/v2}") +class PetApiController(@Autowired(required = true) val service: PetApiService) { + + @ApiOperation( + value = "Add a new pet to the store", + nickname = "addPet", + 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")])]) + @ApiResponses( + value = [ApiResponse(code = 405, message = "Invalid input")]) + @RequestMapping( + value = ["/pet"], + consumes = ["application/json", "application/xml"], + method = [RequestMethod.POST]) + fun addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody body: Pet +): ResponseEntity { + return ResponseEntity(service.addPet(body), HttpStatus.valueOf(405)) + } + + @ApiOperation( + value = "Deletes a pet", + nickname = "deletePet", + 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")])]) + @ApiResponses( + value = [ApiResponse(code = 400, message = "Invalid pet value")]) + @RequestMapping( + value = ["/pet/{petId}"], + method = [RequestMethod.DELETE]) + fun deletePet(@ApiParam(value = "Pet id to delete", required=true) @PathVariable("petId") petId: kotlin.Long +,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) apiKey: kotlin.String? +): ResponseEntity { + return ResponseEntity(service.deletePet(petId, apiKey), HttpStatus.valueOf(400)) + } + + @ApiOperation( + value = "Finds Pets by status", + nickname = "findPetsByStatus", + notes = "Multiple status values can be provided with comma separated strings", + response = Pet::class, + responseContainer = "List", + authorizations = [Authorization(value = "petstore_auth", scopes = [AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), AuthorizationScope(scope = "read:pets", description = "read your pets")])]) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = Pet::class, responseContainer = "List"),ApiResponse(code = 400, message = "Invalid status value")]) + @RequestMapping( + value = ["/pet/findByStatus"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.GET]) + fun findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) status: kotlin.collections.List +): ResponseEntity> { + return ResponseEntity(service.findPetsByStatus(status), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Finds Pets by tags", + nickname = "findPetsByTags", + notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", + response = Pet::class, + responseContainer = "List", + authorizations = [Authorization(value = "petstore_auth", scopes = [AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), AuthorizationScope(scope = "read:pets", description = "read your pets")])]) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = Pet::class, responseContainer = "List"),ApiResponse(code = 400, message = "Invalid tag value")]) + @RequestMapping( + value = ["/pet/findByTags"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.GET]) + fun findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) tags: kotlin.collections.List +): ResponseEntity> { + return ResponseEntity(service.findPetsByTags(tags), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Find pet by ID", + nickname = "getPetById", + notes = "Returns a single pet", + response = Pet::class, + authorizations = [Authorization(value = "api_key")]) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = Pet::class),ApiResponse(code = 400, message = "Invalid ID supplied"),ApiResponse(code = 404, message = "Pet not found")]) + @RequestMapping( + value = ["/pet/{petId}"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.GET]) + fun getPetById(@ApiParam(value = "ID of pet to return", required=true) @PathVariable("petId") petId: kotlin.Long +): ResponseEntity { + return ResponseEntity(service.getPetById(petId), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Update an existing pet", + nickname = "updatePet", + 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")])]) + @ApiResponses( + value = [ApiResponse(code = 400, message = "Invalid ID supplied"),ApiResponse(code = 404, message = "Pet not found"),ApiResponse(code = 405, message = "Validation exception")]) + @RequestMapping( + value = ["/pet"], + consumes = ["application/json", "application/xml"], + method = [RequestMethod.PUT]) + fun updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody body: Pet +): ResponseEntity { + return ResponseEntity(service.updatePet(body), HttpStatus.valueOf(400)) + } + + @ApiOperation( + value = "Updates a pet in the store with form data", + nickname = "updatePetWithForm", + 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")])]) + @ApiResponses( + value = [ApiResponse(code = 405, message = "Invalid input")]) + @RequestMapping( + value = ["/pet/{petId}"], + consumes = ["application/x-www-form-urlencoded"], + method = [RequestMethod.POST]) + fun updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated", required=true) @PathVariable("petId") petId: kotlin.Long +,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) name: kotlin.String? +,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) status: kotlin.String? +): ResponseEntity { + return ResponseEntity(service.updatePetWithForm(petId, name, status), HttpStatus.valueOf(405)) + } + + @ApiOperation( + value = "uploads an image", + nickname = "uploadFile", + notes = "", + response = ModelApiResponse::class, + authorizations = [Authorization(value = "petstore_auth", scopes = [AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), AuthorizationScope(scope = "read:pets", description = "read your pets")])]) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = ModelApiResponse::class)]) + @RequestMapping( + value = ["/pet/{petId}/uploadImage"], + produces = ["application/json"], + consumes = ["multipart/form-data"], + method = [RequestMethod.POST]) + fun uploadFile(@ApiParam(value = "ID of pet to update", required=true) @PathVariable("petId") petId: kotlin.Long +,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) additionalMetadata: kotlin.String? +,@ApiParam(value = "file detail") @Valid @RequestPart("file") file: org.springframework.core.io.Resource? +): ResponseEntity { + return ResponseEntity(service.uploadFile(petId, additionalMetadata, file), HttpStatus.valueOf(200)) + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiService.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiService.kt new file mode 100644 index 00000000000..f3f2fd68b6c --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiService.kt @@ -0,0 +1,22 @@ +package org.openapitools.api + +import org.openapitools.model.ModelApiResponse +import org.openapitools.model.Pet +interface PetApiService { + + fun addPet(body: Pet): Unit + + fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?): Unit + + fun findPetsByStatus(status: kotlin.collections.List): List + + fun findPetsByTags(tags: kotlin.collections.List): List + + fun getPetById(petId: kotlin.Long): Pet + + fun updatePet(body: Pet): Unit + + fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?): Unit + + fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.core.io.Resource?): ModelApiResponse +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt new file mode 100644 index 00000000000..452e4e400b7 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt @@ -0,0 +1,40 @@ +package org.openapitools.api + +import org.openapitools.model.ModelApiResponse +import org.openapitools.model.Pet +import org.springframework.stereotype.Service +@Service +class PetApiServiceImpl : PetApiService { + + override fun addPet(body: Pet): Unit { + TODO("Implement me") + } + + override fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?): Unit { + TODO("Implement me") + } + + override fun findPetsByStatus(status: kotlin.collections.List): List { + TODO("Implement me") + } + + override fun findPetsByTags(tags: kotlin.collections.List): List { + TODO("Implement me") + } + + override fun getPetById(petId: kotlin.Long): Pet { + TODO("Implement me") + } + + override fun updatePet(body: Pet): Unit { + TODO("Implement me") + } + + override fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?): Unit { + TODO("Implement me") + } + + override fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.core.io.Resource?): ModelApiResponse { + TODO("Implement me") + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApi.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApi.kt new file mode 100644 index 00000000000..71017e33a50 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApi.kt @@ -0,0 +1,107 @@ +package org.openapitools.api + +import org.openapitools.model.Order +import io.swagger.annotations.Api +import io.swagger.annotations.ApiOperation +import io.swagger.annotations.ApiParam +import io.swagger.annotations.ApiResponse +import io.swagger.annotations.ApiResponses +import io.swagger.annotations.Authorization +import io.swagger.annotations.AuthorizationScope +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.http.ResponseEntity + +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestPart +import org.springframework.web.bind.annotation.RequestParam +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.RequestHeader +import org.springframework.web.bind.annotation.RequestMethod +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import org.springframework.validation.annotation.Validated +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.beans.factory.annotation.Autowired + +import javax.validation.Valid +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size + +import kotlin.collections.List +import kotlin.collections.Map + +@RestController +@Validated +@Api(value = "Store", description = "The Store API") +@RequestMapping("\${api.base-path:/v2}") +class StoreApiController(@Autowired(required = true) val service: StoreApiService) { + + @ApiOperation( + value = "Delete purchase order by ID", + nickname = "deleteOrder", + notes = "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors") + @ApiResponses( + value = [ApiResponse(code = 400, message = "Invalid ID supplied"),ApiResponse(code = 404, message = "Order not found")]) + @RequestMapping( + value = ["/store/order/{orderId}"], + method = [RequestMethod.DELETE]) + fun deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted", required=true) @PathVariable("orderId") orderId: kotlin.String +): ResponseEntity { + return ResponseEntity(service.deleteOrder(orderId), HttpStatus.valueOf(400)) + } + + @ApiOperation( + value = "Returns pet inventories by status", + nickname = "getInventory", + notes = "Returns a map of status codes to quantities", + response = kotlin.Int::class, + responseContainer = "Map", + authorizations = [Authorization(value = "api_key")]) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = kotlin.collections.Map::class, responseContainer = "Map")]) + @RequestMapping( + value = ["/store/inventory"], + produces = ["application/json"], + method = [RequestMethod.GET]) + fun getInventory(): ResponseEntity> { + return ResponseEntity(service.getInventory(), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Find purchase order by ID", + nickname = "getOrderById", + notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", + response = Order::class) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = Order::class),ApiResponse(code = 400, message = "Invalid ID supplied"),ApiResponse(code = 404, message = "Order not found")]) + @RequestMapping( + value = ["/store/order/{orderId}"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.GET]) + fun getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched", required=true) @PathVariable("orderId") orderId: kotlin.Long +): ResponseEntity { + return ResponseEntity(service.getOrderById(orderId), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Place an order for a pet", + nickname = "placeOrder", + notes = "", + response = Order::class) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = Order::class),ApiResponse(code = 400, message = "Invalid Order")]) + @RequestMapping( + value = ["/store/order"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.POST]) + fun placeOrder(@ApiParam(value = "order placed for purchasing the pet" ,required=true ) @Valid @RequestBody body: Order +): ResponseEntity { + return ResponseEntity(service.placeOrder(body), HttpStatus.valueOf(200)) + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiService.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiService.kt new file mode 100644 index 00000000000..d4a4ef9507f --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiService.kt @@ -0,0 +1,13 @@ +package org.openapitools.api + +import org.openapitools.model.Order +interface StoreApiService { + + fun deleteOrder(orderId: kotlin.String): Unit + + fun getInventory(): Map + + fun getOrderById(orderId: kotlin.Long): Order + + fun placeOrder(body: Order): Order +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiServiceImpl.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiServiceImpl.kt new file mode 100644 index 00000000000..7e733e28dc5 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/StoreApiServiceImpl.kt @@ -0,0 +1,23 @@ +package org.openapitools.api + +import org.openapitools.model.Order +import org.springframework.stereotype.Service +@Service +class StoreApiServiceImpl : StoreApiService { + + override fun deleteOrder(orderId: kotlin.String): Unit { + TODO("Implement me") + } + + override fun getInventory(): Map { + TODO("Implement me") + } + + override fun getOrderById(orderId: kotlin.Long): Order { + TODO("Implement me") + } + + override fun placeOrder(body: Order): Order { + TODO("Implement me") + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApi.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApi.kt new file mode 100644 index 00000000000..1dbc304d88e --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApi.kt @@ -0,0 +1,161 @@ +package org.openapitools.api + +import org.openapitools.model.User +import io.swagger.annotations.Api +import io.swagger.annotations.ApiOperation +import io.swagger.annotations.ApiParam +import io.swagger.annotations.ApiResponse +import io.swagger.annotations.ApiResponses +import io.swagger.annotations.Authorization +import io.swagger.annotations.AuthorizationScope +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.http.ResponseEntity + +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestPart +import org.springframework.web.bind.annotation.RequestParam +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.RequestHeader +import org.springframework.web.bind.annotation.RequestMethod +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import org.springframework.validation.annotation.Validated +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.beans.factory.annotation.Autowired + +import javax.validation.Valid +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size + +import kotlin.collections.List +import kotlin.collections.Map + +@RestController +@Validated +@Api(value = "User", description = "The User API") +@RequestMapping("\${api.base-path:/v2}") +class UserApiController(@Autowired(required = true) val service: UserApiService) { + + @ApiOperation( + value = "Create user", + nickname = "createUser", + notes = "This can only be done by the logged in user.") + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation")]) + @RequestMapping( + value = ["/user"], + method = [RequestMethod.POST]) + fun createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody body: User +): ResponseEntity { + return ResponseEntity(service.createUser(body), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Creates list of users with given input array", + nickname = "createUsersWithArrayInput", + notes = "") + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation")]) + @RequestMapping( + value = ["/user/createWithArray"], + method = [RequestMethod.POST]) + fun createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody body: kotlin.collections.List +): ResponseEntity { + return ResponseEntity(service.createUsersWithArrayInput(body), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Creates list of users with given input array", + nickname = "createUsersWithListInput", + notes = "") + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation")]) + @RequestMapping( + value = ["/user/createWithList"], + method = [RequestMethod.POST]) + fun createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody body: kotlin.collections.List +): ResponseEntity { + return ResponseEntity(service.createUsersWithListInput(body), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Delete user", + nickname = "deleteUser", + notes = "This can only be done by the logged in user.") + @ApiResponses( + value = [ApiResponse(code = 400, message = "Invalid username supplied"),ApiResponse(code = 404, message = "User not found")]) + @RequestMapping( + value = ["/user/{username}"], + method = [RequestMethod.DELETE]) + fun deleteUser(@ApiParam(value = "The name that needs to be deleted", required=true) @PathVariable("username") username: kotlin.String +): ResponseEntity { + return ResponseEntity(service.deleteUser(username), HttpStatus.valueOf(400)) + } + + @ApiOperation( + value = "Get user by user name", + nickname = "getUserByName", + notes = "", + response = User::class) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = User::class),ApiResponse(code = 400, message = "Invalid username supplied"),ApiResponse(code = 404, message = "User not found")]) + @RequestMapping( + value = ["/user/{username}"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.GET]) + fun getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.", required=true) @PathVariable("username") username: kotlin.String +): ResponseEntity { + return ResponseEntity(service.getUserByName(username), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Logs user into the system", + nickname = "loginUser", + notes = "", + response = kotlin.String::class) + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation", response = kotlin.String::class),ApiResponse(code = 400, message = "Invalid username/password supplied")]) + @RequestMapping( + value = ["/user/login"], + produces = ["application/xml", "application/json"], + method = [RequestMethod.GET]) + fun loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) username: kotlin.String +,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) password: kotlin.String +): ResponseEntity { + return ResponseEntity(service.loginUser(username, password), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Logs out current logged in user session", + nickname = "logoutUser", + notes = "") + @ApiResponses( + value = [ApiResponse(code = 200, message = "successful operation")]) + @RequestMapping( + value = ["/user/logout"], + method = [RequestMethod.GET]) + fun logoutUser(): ResponseEntity { + return ResponseEntity(service.logoutUser(), HttpStatus.valueOf(200)) + } + + @ApiOperation( + value = "Updated user", + nickname = "updateUser", + notes = "This can only be done by the logged in user.") + @ApiResponses( + value = [ApiResponse(code = 400, message = "Invalid user supplied"),ApiResponse(code = 404, message = "User not found")]) + @RequestMapping( + value = ["/user/{username}"], + method = [RequestMethod.PUT]) + fun updateUser(@ApiParam(value = "name that need to be deleted", required=true) @PathVariable("username") username: kotlin.String +,@ApiParam(value = "Updated user object" ,required=true ) @Valid @RequestBody body: User +): ResponseEntity { + return ResponseEntity(service.updateUser(username, body), HttpStatus.valueOf(400)) + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiService.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiService.kt new file mode 100644 index 00000000000..491705c3b50 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiService.kt @@ -0,0 +1,21 @@ +package org.openapitools.api + +import org.openapitools.model.User +interface UserApiService { + + fun createUser(body: User): Unit + + fun createUsersWithArrayInput(body: kotlin.collections.List): Unit + + fun createUsersWithListInput(body: kotlin.collections.List): Unit + + fun deleteUser(username: kotlin.String): Unit + + fun getUserByName(username: kotlin.String): User + + fun loginUser(username: kotlin.String, password: kotlin.String): kotlin.String + + fun logoutUser(): Unit + + fun updateUser(username: kotlin.String, body: User): Unit +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiServiceImpl.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiServiceImpl.kt new file mode 100644 index 00000000000..ebd82222015 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/api/UserApiServiceImpl.kt @@ -0,0 +1,39 @@ +package org.openapitools.api + +import org.openapitools.model.User +import org.springframework.stereotype.Service +@Service +class UserApiServiceImpl : UserApiService { + + override fun createUser(body: User): Unit { + TODO("Implement me") + } + + override fun createUsersWithArrayInput(body: kotlin.collections.List): Unit { + TODO("Implement me") + } + + override fun createUsersWithListInput(body: kotlin.collections.List): Unit { + TODO("Implement me") + } + + override fun deleteUser(username: kotlin.String): Unit { + TODO("Implement me") + } + + override fun getUserByName(username: kotlin.String): User { + TODO("Implement me") + } + + override fun loginUser(username: kotlin.String, password: kotlin.String): kotlin.String { + TODO("Implement me") + } + + override fun logoutUser(): Unit { + TODO("Implement me") + } + + override fun updateUser(username: kotlin.String, body: User): Unit { + TODO("Implement me") + } +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Category.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Category.kt new file mode 100644 index 00000000000..74e95802723 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Category.kt @@ -0,0 +1,29 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonProperty +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size +import io.swagger.annotations.ApiModelProperty + +/** + * A category for a pet + * @param id + * @param name + */ +data class Category ( + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("id") var id: kotlin.Long? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("name") var name: kotlin.String? = null +) { + +} + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/ModelApiResponse.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/ModelApiResponse.kt new file mode 100644 index 00000000000..a121d4abe1d --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/ModelApiResponse.kt @@ -0,0 +1,33 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonProperty +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size +import io.swagger.annotations.ApiModelProperty + +/** + * Describes the result of uploading an image resource + * @param code + * @param type + * @param message + */ +data class ModelApiResponse ( + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("code") var code: kotlin.Int? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("type") var type: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("message") var message: kotlin.String? = null +) { + +} + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Order.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Order.kt new file mode 100644 index 00000000000..5ed9ea53497 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Order.kt @@ -0,0 +1,60 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonValue +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size +import io.swagger.annotations.ApiModelProperty + +/** + * An order for a pets from the pet store + * @param id + * @param petId + * @param quantity + * @param shipDate + * @param status Order Status + * @param complete + */ +data class Order ( + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("id") var id: kotlin.Long? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("petId") var petId: kotlin.Long? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("quantity") var quantity: kotlin.Int? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("shipDate") var shipDate: java.time.OffsetDateTime? = null, + + @ApiModelProperty(example = "null", value = "Order Status") + @JsonProperty("status") var status: Order.Status? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("complete") var complete: kotlin.Boolean? = null +) { + + /** + * Order Status + * Values: placed,approved,delivered + */ + enum class Status(val value: kotlin.String) { + + @JsonProperty("placed") placed("placed"), + + @JsonProperty("approved") approved("approved"), + + @JsonProperty("delivered") delivered("delivered"); + + } + +} + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Pet.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Pet.kt new file mode 100644 index 00000000000..f0ff8c00c1d --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Pet.kt @@ -0,0 +1,64 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonValue +import org.openapitools.model.Category +import org.openapitools.model.Tag +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size +import io.swagger.annotations.ApiModelProperty + +/** + * A pet for sale in the pet store + * @param id + * @param category + * @param name + * @param photoUrls + * @param tags + * @param status pet status in the store + */ +data class Pet ( + + @get:NotNull + @ApiModelProperty(example = "doggie", required = true, value = "") + @JsonProperty("name") var name: kotlin.String, + + @get:NotNull + @ApiModelProperty(example = "null", required = true, value = "") + @JsonProperty("photoUrls") var photoUrls: kotlin.collections.List, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("id") var id: kotlin.Long? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("category") var category: Category? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("tags") var tags: kotlin.collections.List? = null, + + @ApiModelProperty(example = "null", value = "pet status in the store") + @JsonProperty("status") var status: Pet.Status? = null +) { + + /** + * pet status in the store + * Values: available,pending,sold + */ + enum class Status(val value: kotlin.String) { + + @JsonProperty("available") available("available"), + + @JsonProperty("pending") pending("pending"), + + @JsonProperty("sold") sold("sold"); + + } + +} + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Tag.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Tag.kt new file mode 100644 index 00000000000..3997d00edbe --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/Tag.kt @@ -0,0 +1,29 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonProperty +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size +import io.swagger.annotations.ApiModelProperty + +/** + * A tag for a pet + * @param id + * @param name + */ +data class Tag ( + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("id") var id: kotlin.Long? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("name") var name: kotlin.String? = null +) { + +} + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/User.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/User.kt new file mode 100644 index 00000000000..011d28b1cdb --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model/User.kt @@ -0,0 +1,53 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonProperty +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Max +import javax.validation.constraints.Min +import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size +import io.swagger.annotations.ApiModelProperty + +/** + * A User who is purchasing from the pet store + * @param id + * @param username + * @param firstName + * @param lastName + * @param email + * @param password + * @param phone + * @param userStatus User Status + */ +data class User ( + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("id") var id: kotlin.Long? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("username") var username: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("firstName") var firstName: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("lastName") var lastName: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("email") var email: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("password") var password: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("phone") var phone: kotlin.String? = null, + + @ApiModelProperty(example = "null", value = "User Status") + @JsonProperty("userStatus") var userStatus: kotlin.Int? = null +) { + +} + diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/main/resources/application.yaml b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/resources/application.yaml new file mode 100644 index 00000000000..8e2ebcde976 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/main/resources/application.yaml @@ -0,0 +1,10 @@ +spring: + application: + name: openAPIPetstore + + jackson: + serialization: + WRITE_DATES_AS_TIMESTAMPS: false + +server: + port: 8080 diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/PetApiTest.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/PetApiTest.kt new file mode 100644 index 00000000000..d621c166966 --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/PetApiTest.kt @@ -0,0 +1,148 @@ +package org.openapitools.api + +import org.openapitools.model.ModelApiResponse +import org.openapitools.model.Pet +import org.junit.jupiter.api.Test + +import org.springframework.http.ResponseEntity + +class PetApiTest { + + private val service: PetApiService = PetApiServiceImpl() + private val api: PetApiController = PetApiController(service) + + + /** + * Add a new pet to the store + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun addPetTest() { + val body:Pet? = null + val response: ResponseEntity = api.addPet(body!!) + + // TODO: test validations + } + + /** + * Deletes a pet + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun deletePetTest() { + val petId:kotlin.Long? = null + val apiKey:kotlin.String? = null + val response: ResponseEntity = api.deletePet(petId!!, apiKey!!) + + // TODO: test validations + } + + /** + * Finds Pets by status + * + * Multiple status values can be provided with comma separated strings + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun findPetsByStatusTest() { + val status:kotlin.collections.List? = null + val response: ResponseEntity> = api.findPetsByStatus(status!!) + + // TODO: test validations + } + + /** + * Finds Pets by tags + * + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun findPetsByTagsTest() { + val tags:kotlin.collections.List? = null + val response: ResponseEntity> = api.findPetsByTags(tags!!) + + // TODO: test validations + } + + /** + * Find pet by ID + * + * Returns a single pet + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun getPetByIdTest() { + val petId:kotlin.Long? = null + val response: ResponseEntity = api.getPetById(petId!!) + + // TODO: test validations + } + + /** + * Update an existing pet + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun updatePetTest() { + val body:Pet? = null + val response: ResponseEntity = api.updatePet(body!!) + + // TODO: test validations + } + + /** + * Updates a pet in the store with form data + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun updatePetWithFormTest() { + val petId:kotlin.Long? = null + val name:kotlin.String? = null + val status:kotlin.String? = null + val response: ResponseEntity = api.updatePetWithForm(petId!!, name!!, status!!) + + // TODO: test validations + } + + /** + * uploads an image + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun uploadFileTest() { + val petId:kotlin.Long? = null + val additionalMetadata:kotlin.String? = null + val file:org.springframework.core.io.Resource? = null + val response: ResponseEntity = api.uploadFile(petId!!, additionalMetadata!!, file!!) + + // TODO: test validations + } + +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/StoreApiTest.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/StoreApiTest.kt new file mode 100644 index 00000000000..82b91cd652b --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/StoreApiTest.kt @@ -0,0 +1,77 @@ +package org.openapitools.api + +import org.openapitools.model.Order +import org.junit.jupiter.api.Test + +import org.springframework.http.ResponseEntity + +class StoreApiTest { + + private val service: StoreApiService = StoreApiServiceImpl() + private val api: StoreApiController = StoreApiController(service) + + + /** + * Delete purchase order by ID + * + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun deleteOrderTest() { + val orderId:kotlin.String? = null + val response: ResponseEntity = api.deleteOrder(orderId!!) + + // TODO: test validations + } + + /** + * Returns pet inventories by status + * + * Returns a map of status codes to quantities + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun getInventoryTest() { + val response: ResponseEntity> = api.getInventory() + + // TODO: test validations + } + + /** + * Find purchase order by ID + * + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun getOrderByIdTest() { + val orderId:kotlin.Long? = null + val response: ResponseEntity = api.getOrderById(orderId!!) + + // TODO: test validations + } + + /** + * Place an order for a pet + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun placeOrderTest() { + val body:Order? = null + val response: ResponseEntity = api.placeOrder(body!!) + + // TODO: test validations + } + +} diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/UserApiTest.kt b/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/UserApiTest.kt new file mode 100644 index 00000000000..14917f70aeb --- /dev/null +++ b/samples/server/petstore/kotlin-springboot-modelMutable/src/test/kotlin/org/openapitools/api/UserApiTest.kt @@ -0,0 +1,143 @@ +package org.openapitools.api + +import org.openapitools.model.User +import org.junit.jupiter.api.Test + +import org.springframework.http.ResponseEntity + +class UserApiTest { + + private val service: UserApiService = UserApiServiceImpl() + private val api: UserApiController = UserApiController(service) + + + /** + * Create user + * + * This can only be done by the logged in user. + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun createUserTest() { + val body:User? = null + val response: ResponseEntity = api.createUser(body!!) + + // TODO: test validations + } + + /** + * Creates list of users with given input array + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun createUsersWithArrayInputTest() { + val body:kotlin.collections.List? = null + val response: ResponseEntity = api.createUsersWithArrayInput(body!!) + + // TODO: test validations + } + + /** + * Creates list of users with given input array + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun createUsersWithListInputTest() { + val body:kotlin.collections.List? = null + val response: ResponseEntity = api.createUsersWithListInput(body!!) + + // TODO: test validations + } + + /** + * Delete user + * + * This can only be done by the logged in user. + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun deleteUserTest() { + val username:kotlin.String? = null + val response: ResponseEntity = api.deleteUser(username!!) + + // TODO: test validations + } + + /** + * Get user by user name + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun getUserByNameTest() { + val username:kotlin.String? = null + val response: ResponseEntity = api.getUserByName(username!!) + + // TODO: test validations + } + + /** + * Logs user into the system + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun loginUserTest() { + val username:kotlin.String? = null + val password:kotlin.String? = null + val response: ResponseEntity = api.loginUser(username!!, password!!) + + // TODO: test validations + } + + /** + * Logs out current logged in user session + * + * + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun logoutUserTest() { + val response: ResponseEntity = api.logoutUser() + + // TODO: test validations + } + + /** + * Updated user + * + * This can only be done by the logged in user. + * + * @throws ApiException + * if the Api call fails + */ + @Test + fun updateUserTest() { + val username:kotlin.String? = null + val body:User? = null + val response: ResponseEntity = api.updateUser(username!!, body!!) + + // TODO: test validations + } + +} From d13d05955bf80062e73e112edebd08fdb80df3a5 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 27 Nov 2019 18:49:18 +0800 Subject: [PATCH 28/96] Add petejohansonxo as the owner of TS redux-query generator (#4620) --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fafa4f42fcc..d1ba6d167a7 100644 --- a/README.md +++ b/README.md @@ -792,6 +792,7 @@ Here is a list of template creators: * TypeScript (Node): @mhardorf * TypeScript (Rxjs): @denyo * TypeScript (Inversify): @gualtierim + * TypeSCript (redux-query): @petejohansonxo * Server Stubs * Ada: @stcarrez * C# ASP.NET 5: @jimschubert [:heart:](https://www.patreon.com/jimschubert) @@ -911,7 +912,7 @@ If you want to join the committee, please kindly apply by sending an email to te | Rust | @frol (2017/07) @farcaller (2017/08) @bjgill (2017/12) @richardwhiuk (2019/07) | | Scala | @clasnake (2017/07), @jimschubert (2017/09) [:heart:](https://www.patreon.com/jimschubert), @shijinkui (2018/01), @ramzimaalej (2018/03) | | Swift | @jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @d-date (2018/03) @4brunu (2019/11) | -| TypeScript | @TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @nicokoenig (2018/09) @topce (2018/10) @akehir (2019/07) | +| TypeScript | @TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @nicokoenig (2018/09) @topce (2018/10) @akehir (2019/07) @petejohansonxo (2019/11) | :heart: = Link to support the contributor directly From fac83ce760e1bc0ee0b59d2ae7a98c85391a46b4 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 27 Nov 2019 21:36:25 +0800 Subject: [PATCH 29/96] add crossover health to user list (#4622) --- README.md | 1 + website/dynamic/users.yml | 5 +++++ .../static/img/companies/crossover_health.png | Bin 0 -> 5752 bytes 3 files changed, 6 insertions(+) create mode 100644 website/static/img/companies/crossover_health.png diff --git a/README.md b/README.md index d1ba6d167a7..dd6e2e9051a 100644 --- a/README.md +++ b/README.md @@ -580,6 +580,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [Camptocamp](https://www.camptocamp.com/en) - [codecentric AG](https://www.codecentric.de/) - [Commencis](https://www.commencis.com/) +- [Crossover Health](https://crossoverhealth.com/) - [Cupix](https://www.cupix.com/) - [DB Systel](https://www.dbsystel.de) - [dwango](https://dwango.co.jp/) diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index af63e40d2f4..12c4f5776ea 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -83,6 +83,11 @@ image: "img/companies/commencis.png" infoLink: "https://www.commencis.com/" pinned: false +- + caption: "Crossover Health" + image: "img/companies/crossover_health.png" + infoLink: "https://crossoverhealth.com/" + pinned: false - caption: Cupix image: "img/companies/cupix.png" diff --git a/website/static/img/companies/crossover_health.png b/website/static/img/companies/crossover_health.png new file mode 100644 index 0000000000000000000000000000000000000000..c2106c2dee94a0c2c861f94c94e2c29b2f445425 GIT binary patch literal 5752 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 literal 0 HcmV?d00001 From e2df6c32e0b3b5c5c4fb73d089efeb523fc28d5c Mon Sep 17 00:00:00 2001 From: "Mateusz Szychowski (Muttley)" Date: Wed, 27 Nov 2019 22:28:51 +0100 Subject: [PATCH 30/96] [C++][Pistache] Add comparison operators (#4619) * [C++][Pistache] Add comparison operators * [C++][Pistache] Update Petstore sample --- .../cpp-pistache-server/model-struct-header.mustache | 3 +++ .../cpp-pistache-server/model-struct-source.mustache | 10 ++++++++++ .../petstore/cpp-pistache/.openapi-generator/VERSION | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-header.mustache index 3fc013a8b0c..4113a04e6b3 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-header.mustache @@ -24,6 +24,9 @@ struct {{classname}} {{^required}}Pistache::Optional<{{/required}}{{{dataType}}}{{^required}}>{{/required}} {{baseName}}; {{/vars}} + bool operator==(const {{classname}}& other) const; + bool operator!=(const {{classname}}& other) const; + nlohmann::json to_json() const; static {{classname}} from_json(const nlohmann::json& j); }; diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-source.mustache index 2e4f114cc73..b67e8aa366e 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-struct-source.mustache @@ -21,6 +21,16 @@ nlohmann::json {{classname}}::to_json() const return o; } +bool {{classname}}::operator==(const {{classname}}& other) const +{ + return {{#vars}}{{baseName}} == other.{{baseName}}{{#hasMore}} && {{/hasMore}}{{/vars}}; +} + +bool {{classname}}::operator!=(const {{classname}}& other) const +{ + return !(*this == other); +} + void to_json(nlohmann::json& j, const {{classname}}& o) { {{#vars}} diff --git a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION index d168f1d8bda..e4955748d3e 100644 --- a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.1-SNAPSHOT \ No newline at end of file +4.2.2-SNAPSHOT \ No newline at end of file From bee26712435cd4f7fb8947d670493c62b844ea93 Mon Sep 17 00:00:00 2001 From: Jiri Kuncar Date: Thu, 28 Nov 2019 07:13:46 +0100 Subject: [PATCH 31/96] [Ruby] Fix typo in description (#4624) --- .../src/main/resources/ruby-client/configuration.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache index 72f6fe90e28..3c2f87e37e4 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache @@ -217,13 +217,13 @@ module {{moduleName}} {{#servers}} { url: "{{{url}}}", - description: "{{{description}}}{{^description}}No descriptoin provided{{/description}}", + description: "{{{description}}}{{^description}}No description provided{{/description}}", {{#variables}} {{#-first}} variables: { {{/-first}} {{{name}}}: { - description: "{{{description}}}{{^description}}No descriptoin provided{{/description}}", + description: "{{{description}}}{{^description}}No description provided{{/description}}", default_value: "{{{defaultValue}}}", {{#enumValues}} {{#-first}} From e3dbd82e7983b3f28bfb53b48475bec190a757c4 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 28 Nov 2019 14:32:56 +0800 Subject: [PATCH 32/96] update ruby samples --- .../petstore/ruby-faraday/lib/petstore/configuration.rb | 2 +- samples/client/petstore/ruby/lib/petstore/configuration.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/configuration.rb | 6 +++--- .../client/petstore/ruby/lib/petstore/configuration.rb | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb index efcbb4d2a39..12f77058d78 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -224,7 +224,7 @@ module Petstore [ { url: "http://petstore.swagger.io:80/v2", - description: "No descriptoin provided", + description: "No description provided", } ] end diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index 7f79c8ebc68..37b6956bdfa 100644 --- a/samples/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb @@ -229,7 +229,7 @@ module Petstore [ { url: "http://petstore.swagger.io:80/v2", - description: "No descriptoin provided", + description: "No description provided", } ] end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb index 2fa2f9ade27..61c2d03b4cf 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -235,7 +235,7 @@ module Petstore description: "petstore server", variables: { server: { - description: "No descriptoin provided", + description: "No description provided", default_value: "petstore", enum_values: [ "petstore", @@ -244,7 +244,7 @@ module Petstore ] }, port: { - description: "No descriptoin provided", + description: "No description provided", default_value: "80", enum_values: [ "80", @@ -258,7 +258,7 @@ module Petstore description: "The local server", variables: { version: { - description: "No descriptoin provided", + description: "No description provided", default_value: "v2", enum_values: [ "v1", diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb index 4b34fef8311..1864c5d7599 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb @@ -240,7 +240,7 @@ module Petstore description: "petstore server", variables: { server: { - description: "No descriptoin provided", + description: "No description provided", default_value: "petstore", enum_values: [ "petstore", @@ -249,7 +249,7 @@ module Petstore ] }, port: { - description: "No descriptoin provided", + description: "No description provided", default_value: "80", enum_values: [ "80", @@ -263,7 +263,7 @@ module Petstore description: "The local server", variables: { version: { - description: "No descriptoin provided", + description: "No description provided", default_value: "v2", enum_values: [ "v1", From 3626aaf8faba08f197996ecb2712784154f66fb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Thu, 28 Nov 2019 09:16:37 +0100 Subject: [PATCH 33/96] [asciidoctor] add missing tag for declared exception (#4630) Fix Javadoc warning --- .../codegen/asciidoc/AsciidocSampleGeneratorTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocSampleGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocSampleGeneratorTest.java index f903d74d79c..73fa7803d4c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocSampleGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocSampleGeneratorTest.java @@ -64,6 +64,7 @@ public class AsciidocSampleGeneratorTest { /** * ensure api-docs.json includes sample and spec files directory as attributes. + * @throws Exception exception */ @Test public void testSampleAsciidocMarkupGenerationFromJsonWithAttributes() throws Exception { @@ -75,6 +76,7 @@ public class AsciidocSampleGeneratorTest { /** * ensure api-docs.json includes sample and spec files into markup. + * @throws Exception exception */ @Test public void testSampleAsciidocMarkupGenerationFromJsonWithIncludes() throws Exception { @@ -98,6 +100,7 @@ public class AsciidocSampleGeneratorTest { /** * markup doc header content. + * @throws Exception exception */ @Test public void testSampleAsciidocMarkupGenerationFromJsonWithContent() throws Exception { @@ -108,6 +111,7 @@ public class AsciidocSampleGeneratorTest { /** * fix: parameter name unchanged. + * @throws Exception exception */ @Test public void testSampleAsciidocMarkupGenerationParameterNameUnchanged() throws Exception { @@ -117,6 +121,7 @@ public class AsciidocSampleGeneratorTest { /** * added apikey info in access section. + * @throws Exception exception */ @Test public void testSampleAsciidocMarkupGenerationAccessApiKey() throws Exception { @@ -130,6 +135,7 @@ public class AsciidocSampleGeneratorTest { /** * no form params in this sample spec. + * @throws Exception exception */ @Test public void testSampleAsciidocMarkupGenerationWithoutFormParameter() throws Exception { From a839203e0d4833ff86e381d559ff2850430336f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Thu, 28 Nov 2019 09:54:10 +0100 Subject: [PATCH 34/96] [java][client][restassured] add getAllOperations() (#4631) * [java][client][restassured] add getAllOperations() * Update samples --- .../codegen/languages/JavaClientCodegen.java | 1 + .../Java/libraries/rest-assured/Oper.mustache | 13 ++++ .../Java/libraries/rest-assured/api.mustache | 12 +++- .../client/api/AnotherFakeApi.java | 8 ++- .../org/openapitools/client/api/FakeApi.java | 60 ++++++++++++++----- .../client/api/FakeClassnameTags123Api.java | 8 ++- .../org/openapitools/client/api/Oper.java | 24 ++++++++ .../org/openapitools/client/api/PetApi.java | 40 ++++++++++--- .../org/openapitools/client/api/StoreApi.java | 20 +++++-- .../org/openapitools/client/api/UserApi.java | 36 ++++++++--- 10 files changed, 184 insertions(+), 38 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/Oper.mustache create mode 100644 samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/Oper.java 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 d534f39c3a0..56aa3705943 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 @@ -380,6 +380,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java")); supportingFiles.add(new SupportingFile("GsonObjectMapper.mustache", invokerFolder, "GsonObjectMapper.java")); } + supportingFiles.add(new SupportingFile("Oper.mustache", apiFolder, "Oper.java")); additionalProperties.put("convert", new CaseFormatLambda(LOWER_CAMEL, UPPER_UNDERSCORE)); apiTemplateFiles.put("api.mustache", ".java"); supportingFiles.add(new SupportingFile("ResponseSpecBuilders.mustache", invokerFolder, "ResponseSpecBuilders.java")); diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/Oper.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/Oper.mustache new file mode 100644 index 00000000000..b8684665b56 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/Oper.mustache @@ -0,0 +1,13 @@ +{{>licenseInfo}} + +package {{apiPackage}}; + +import io.restassured.response.Response; + +import java.util.function.Function; + +public interface Oper { + + T execute(Function handler); + +} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/api.mustache index db803e8f2e1..2016726a9cb 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/api.mustache @@ -56,6 +56,15 @@ public class {{classname}} { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( +{{#operations}} +{{#operation}} + {{operationId}}(){{^-last}},{{/-last}} +{{/operation}} +{{/operations}} + ); + } {{#operations}} {{#operation}} @@ -107,7 +116,7 @@ public class {{classname}} { {{#isDeprecated}} @Deprecated {{/isDeprecated}} - public static class {{operationIdCamelCase}}Oper { + public static class {{operationIdCamelCase}}Oper implements Oper { public static final Method REQ_METHOD = {{httpMethod}}; public static final String REQ_URI = "{{path}}"; @@ -134,6 +143,7 @@ public class {{classname}} { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index cc52d202adf..92bc2746fd4 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -57,6 +57,11 @@ public class AnotherFakeApi { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( + call123testSpecialTags() + ); + } @ApiOperation(value = "To test special tags", notes = "To test special tags and operation ID starting with number", @@ -85,7 +90,7 @@ public class AnotherFakeApi { * @see #body client model (required) * return Client */ - public static class Call123testSpecialTagsOper { + public static class Call123testSpecialTagsOper implements Oper { public static final Method REQ_METHOD = PATCH; public static final String REQ_URI = "/another-fake/dummy"; @@ -106,6 +111,7 @@ public class AnotherFakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeApi.java index 543cb0c4295..87f00fcd212 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeApi.java @@ -65,6 +65,24 @@ public class FakeApi { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( + createXmlItem(), + fakeOuterBooleanSerialize(), + fakeOuterCompositeSerialize(), + fakeOuterNumberSerialize(), + fakeOuterStringSerialize(), + testBodyWithFileSchema(), + testBodyWithQueryParams(), + testClientModel(), + testEndpointParameters(), + testEnumParameters(), + testGroupParameters(), + testInlineAdditionalProperties(), + testJsonFormData(), + testQueryParameterCollectionFormat() + ); + } @ApiOperation(value = "creates an XmlItem", notes = "this route creates an XmlItem", @@ -224,7 +242,7 @@ public class FakeApi { * * @see #body XmlItem Body (required) */ - public static class CreateXmlItemOper { + public static class CreateXmlItemOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/create_xml_item"; @@ -245,6 +263,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -285,7 +304,7 @@ public class FakeApi { * @see #body Input boolean as post body (optional) * return Boolean */ - public static class FakeOuterBooleanSerializeOper { + public static class FakeOuterBooleanSerializeOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/outer/boolean"; @@ -306,6 +325,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -356,7 +376,7 @@ public class FakeApi { * @see #body Input composite as post body (optional) * return OuterComposite */ - public static class FakeOuterCompositeSerializeOper { + public static class FakeOuterCompositeSerializeOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/outer/composite"; @@ -377,6 +397,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -427,7 +448,7 @@ public class FakeApi { * @see #body Input number as post body (optional) * return BigDecimal */ - public static class FakeOuterNumberSerializeOper { + public static class FakeOuterNumberSerializeOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/outer/number"; @@ -448,6 +469,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -498,7 +520,7 @@ public class FakeApi { * @see #body Input string as post body (optional) * return String */ - public static class FakeOuterStringSerializeOper { + public static class FakeOuterStringSerializeOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/outer/string"; @@ -519,6 +541,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -568,7 +591,7 @@ public class FakeApi { * * @see #body (required) */ - public static class TestBodyWithFileSchemaOper { + public static class TestBodyWithFileSchemaOper implements Oper { public static final Method REQ_METHOD = PUT; public static final String REQ_URI = "/fake/body-with-file-schema"; @@ -589,6 +612,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -629,7 +653,7 @@ public class FakeApi { * @see #queryQuery (required) * @see #body (required) */ - public static class TestBodyWithQueryParamsOper { + public static class TestBodyWithQueryParamsOper implements Oper { public static final Method REQ_METHOD = PUT; public static final String REQ_URI = "/fake/body-with-query-params"; @@ -650,6 +674,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -701,7 +726,7 @@ public class FakeApi { * @see #body client model (required) * return Client */ - public static class TestClientModelOper { + public static class TestClientModelOper implements Oper { public static final Method REQ_METHOD = PATCH; public static final String REQ_URI = "/fake"; @@ -722,6 +747,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -784,7 +810,7 @@ public class FakeApi { * @see #passwordForm None (optional) * @see #paramCallbackForm None (optional) */ - public static class TestEndpointParametersOper { + public static class TestEndpointParametersOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake"; @@ -805,6 +831,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -996,7 +1023,7 @@ public class FakeApi { * @see #enumFormStringArrayForm Form parameter enum test (string array) (optional, default to $) * @see #enumFormStringForm Form parameter enum test (string) (optional, default to -efg) */ - public static class TestEnumParametersOper { + public static class TestEnumParametersOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/fake"; @@ -1017,6 +1044,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -1140,7 +1168,7 @@ public class FakeApi { * @see #booleanGroupHeader Boolean in group parameters (optional) * @see #int64GroupQuery Integer in group parameters (optional) */ - public static class TestGroupParametersOper { + public static class TestGroupParametersOper implements Oper { public static final Method REQ_METHOD = DELETE; public static final String REQ_URI = "/fake"; @@ -1160,6 +1188,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -1256,7 +1285,7 @@ public class FakeApi { * * @see #body request body (required) */ - public static class TestInlineAdditionalPropertiesOper { + public static class TestInlineAdditionalPropertiesOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/inline-additionalProperties"; @@ -1277,6 +1306,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -1317,7 +1347,7 @@ public class FakeApi { * @see #paramForm field1 (required) * @see #param2Form field2 (required) */ - public static class TestJsonFormDataOper { + public static class TestJsonFormDataOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/fake/jsonFormData"; @@ -1338,6 +1368,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -1394,7 +1425,7 @@ public class FakeApi { * @see #urlQuery (required) * @see #contextQuery (required) */ - public static class TestQueryParameterCollectionFormatOper { + public static class TestQueryParameterCollectionFormatOper implements Oper { public static final Method REQ_METHOD = PUT; public static final String REQ_URI = "/fake/test-query-paramters"; @@ -1414,6 +1445,7 @@ public class FakeApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index aff1931bb82..48ebc5b102f 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -57,6 +57,11 @@ public class FakeClassnameTags123Api { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( + testClassname() + ); + } @ApiOperation(value = "To test class name in snake case", notes = "To test class name in snake case", @@ -85,7 +90,7 @@ public class FakeClassnameTags123Api { * @see #body client model (required) * return Client */ - public static class TestClassnameOper { + public static class TestClassnameOper implements Oper { public static final Method REQ_METHOD = PATCH; public static final String REQ_URI = "/fake_classname_test"; @@ -106,6 +111,7 @@ public class FakeClassnameTags123Api { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/Oper.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/Oper.java new file mode 100644 index 00000000000..d9a11e71466 --- /dev/null +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/Oper.java @@ -0,0 +1,24 @@ +/* + * OpenAPI Petstore + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.api; + +import io.restassured.response.Response; + +import java.util.function.Function; + +public interface Oper { + + T execute(Function handler); + +} diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/PetApi.java index 4ffbfa3bcac..fee22f69f3c 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/PetApi.java @@ -59,6 +59,19 @@ public class PetApi { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( + addPet(), + deletePet(), + findPetsByStatus(), + findPetsByTags(), + getPetById(), + updatePet(), + updatePetWithForm(), + uploadFile(), + uploadFileWithRequiredFile() + ); + } @ApiOperation(value = "Add a new pet to the store", notes = "", @@ -176,7 +189,7 @@ public class PetApi { * * @see #body Pet object that needs to be added to the store (required) */ - public static class AddPetOper { + public static class AddPetOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/pet"; @@ -197,6 +210,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -237,7 +251,7 @@ public class PetApi { * @see #petIdPath Pet id to delete (required) * @see #apiKeyHeader (optional) */ - public static class DeletePetOper { + public static class DeletePetOper implements Oper { public static final Method REQ_METHOD = DELETE; public static final String REQ_URI = "/pet/{petId}"; @@ -257,6 +271,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -310,7 +325,7 @@ public class PetApi { * @see #statusQuery Status values that need to be considered for filter (required) * return List<Pet> */ - public static class FindPetsByStatusOper { + public static class FindPetsByStatusOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/pet/findByStatus"; @@ -330,6 +345,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -384,7 +400,7 @@ public class PetApi { * @deprecated */ @Deprecated - public static class FindPetsByTagsOper { + public static class FindPetsByTagsOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/pet/findByTags"; @@ -404,6 +420,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -456,7 +473,7 @@ public class PetApi { * @see #petIdPath ID of pet to return (required) * return Pet */ - public static class GetPetByIdOper { + public static class GetPetByIdOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/pet/{petId}"; @@ -476,6 +493,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -527,7 +545,7 @@ public class PetApi { * * @see #body Pet object that needs to be added to the store (required) */ - public static class UpdatePetOper { + public static class UpdatePetOper implements Oper { public static final Method REQ_METHOD = PUT; public static final String REQ_URI = "/pet"; @@ -548,6 +566,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -589,7 +608,7 @@ public class PetApi { * @see #nameForm Updated name of the pet (optional) * @see #statusForm Updated status of the pet (optional) */ - public static class UpdatePetWithFormOper { + public static class UpdatePetWithFormOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/pet/{petId}"; @@ -610,6 +629,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -676,7 +696,7 @@ public class PetApi { * @see #fileMultiPart file to upload (optional) * return ModelApiResponse */ - public static class UploadFileOper { + public static class UploadFileOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/pet/{petId}/uploadImage"; @@ -697,6 +717,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -773,7 +794,7 @@ public class PetApi { * @see #additionalMetadataForm Additional data to pass to server (optional) * return ModelApiResponse */ - public static class UploadFileWithRequiredFileOper { + public static class UploadFileWithRequiredFileOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/fake/{petId}/uploadImageWithRequiredFile"; @@ -794,6 +815,7 @@ public class PetApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/StoreApi.java index 9ba5cec8cdb..c6118ae91fe 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/StoreApi.java @@ -57,6 +57,14 @@ public class StoreApi { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( + deleteOrder(), + getInventory(), + getOrderById(), + placeOrder() + ); + } @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", @@ -118,7 +126,7 @@ public class StoreApi { * * @see #orderIdPath ID of the order that needs to be deleted (required) */ - public static class DeleteOrderOper { + public static class DeleteOrderOper implements Oper { public static final Method REQ_METHOD = DELETE; public static final String REQ_URI = "/store/order/{order_id}"; @@ -138,6 +146,7 @@ public class StoreApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -179,7 +188,7 @@ public class StoreApi { * * return Map<String, Integer> */ - public static class GetInventoryOper { + public static class GetInventoryOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/store/inventory"; @@ -199,6 +208,7 @@ public class StoreApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -240,7 +250,7 @@ public class StoreApi { * @see #orderIdPath ID of pet that needs to be fetched (required) * return Order */ - public static class GetOrderByIdOper { + public static class GetOrderByIdOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/store/order/{order_id}"; @@ -260,6 +270,7 @@ public class StoreApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -312,7 +323,7 @@ public class StoreApi { * @see #body order placed for purchasing the pet (required) * return Order */ - public static class PlaceOrderOper { + public static class PlaceOrderOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/store/order"; @@ -333,6 +344,7 @@ public class StoreApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/UserApi.java index 38c921afb99..4b2ee75cb92 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/api/UserApi.java @@ -57,6 +57,18 @@ public class UserApi { return reqSpec; } + public List getAllOperations() { + return Arrays.asList( + createUser(), + createUsersWithArrayInput(), + createUsersWithListInput(), + deleteUser(), + getUserByName(), + loginUser(), + logoutUser(), + updateUser() + ); + } @ApiOperation(value = "Create user", notes = "This can only be done by the logged in user.", @@ -159,7 +171,7 @@ public class UserApi { * * @see #body Created user object (required) */ - public static class CreateUserOper { + public static class CreateUserOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/user"; @@ -180,6 +192,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -219,7 +232,7 @@ public class UserApi { * * @see #body List of user object (required) */ - public static class CreateUsersWithArrayInputOper { + public static class CreateUsersWithArrayInputOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/user/createWithArray"; @@ -240,6 +253,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -279,7 +293,7 @@ public class UserApi { * * @see #body List of user object (required) */ - public static class CreateUsersWithListInputOper { + public static class CreateUsersWithListInputOper implements Oper { public static final Method REQ_METHOD = POST; public static final String REQ_URI = "/user/createWithList"; @@ -300,6 +314,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -339,7 +354,7 @@ public class UserApi { * * @see #usernamePath The name that needs to be deleted (required) */ - public static class DeleteUserOper { + public static class DeleteUserOper implements Oper { public static final Method REQ_METHOD = DELETE; public static final String REQ_URI = "/user/{username}"; @@ -359,6 +374,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -401,7 +417,7 @@ public class UserApi { * @see #usernamePath The name that needs to be fetched. Use user1 for testing. (required) * return User */ - public static class GetUserByNameOper { + public static class GetUserByNameOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/user/{username}"; @@ -421,6 +437,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -474,7 +491,7 @@ public class UserApi { * @see #passwordQuery The password for login in clear text (required) * return String */ - public static class LoginUserOper { + public static class LoginUserOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/user/login"; @@ -494,6 +511,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -555,7 +573,7 @@ public class UserApi { * * */ - public static class LogoutUserOper { + public static class LogoutUserOper implements Oper { public static final Method REQ_METHOD = GET; public static final String REQ_URI = "/user/logout"; @@ -575,6 +593,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } @@ -606,7 +625,7 @@ public class UserApi { * @see #usernamePath name that need to be deleted (required) * @see #body Updated user object (required) */ - public static class UpdateUserOper { + public static class UpdateUserOper implements Oper { public static final Method REQ_METHOD = PUT; public static final String REQ_URI = "/user/{username}"; @@ -627,6 +646,7 @@ public class UserApi { * @param type * @return type */ + @Override public T execute(Function handler) { return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI)); } From 538fdeafb5ba2cca0a14f834dd56f29a0fe5cdc7 Mon Sep 17 00:00:00 2001 From: rasmusfaber Date: Thu, 28 Nov 2019 12:33:43 +0100 Subject: [PATCH 35/96] typescript-node: support bearer token authentication (#4633) * Make typescript-node support bearer token authentication and add support for intercepting request * Explicit typing of interceptors * Update modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache Formatting Co-Authored-By: Esteban Gehring * Build Petstore --- .../typescript-node/api-single.mustache | 44 ++++++++--- .../resources/typescript-node/models.mustache | 17 ++++- .../typescript-node/default/api/petApi.ts | 74 ++++++++++++++++--- .../typescript-node/default/api/storeApi.ts | 42 +++++++++-- .../typescript-node/default/api/userApi.ts | 72 +++++++++++++++--- .../typescript-node/default/model/models.ts | 17 ++++- .../typescript-node/npm/api/petApi.ts | 74 ++++++++++++++++--- .../typescript-node/npm/api/storeApi.ts | 42 +++++++++-- .../typescript-node/npm/api/userApi.ts | 72 +++++++++++++++--- .../typescript-node/npm/model/models.ts | 17 ++++- 10 files changed, 407 insertions(+), 64 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache b/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache index 8ecab671c21..922a654f44b 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache @@ -7,9 +7,9 @@ import http = require('http'); import { {{classname}} } from '../{{filename}}'; {{/imports}} -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; {{#hasAuthMethods}} -import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; {{/hasAuthMethods}} import { HttpError, RequestFile } from './apis'; @@ -43,9 +43,12 @@ export class {{classname}} { 'default': new VoidAuth(), {{#hasAuthMethods}} {{#authMethods}} -{{#isBasic}} +{{#isBasicBasic}} '{{name}}': new HttpBasicAuth(), -{{/isBasic}} +{{/isBasicBasic}} +{{#isBasicBearer}} + '{{name}}': new HttpBearerAuth(), +{{/isBasicBearer}} {{#isApiKey}} '{{name}}': new ApiKeyAuth({{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}{{#isKeyInCookie}}'cookie'{{/isKeyInCookie}}, '{{keyParamName}}'), {{/isApiKey}} @@ -56,19 +59,21 @@ export class {{classname}} { {{/hasAuthMethods}} } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); {{#authMethods}} -{{#isBasic}} +{{#isBasicBasic}} constructor(username: string, password: string, basePath?: string); -{{/isBasic}} +{{/isBasicBasic}} {{/authMethods}} constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { {{#authMethods}} -{{#isBasic}} +{{#isBasicBasic}} this.username = basePathOrUsername; this.password = password -{{/isBasic}} +{{/isBasicBasic}} {{/authMethods}} if (basePath) { this.basePath = basePath; @@ -101,7 +106,8 @@ export class {{classname}} { } {{#hasAuthMethods}} {{#authMethods}} -{{#isBasic}} +{{#isBasicBasic}} + set username(username: string) { this.authentications.{{name}}.username = username; } @@ -109,7 +115,13 @@ export class {{classname}} { set password(password: string) { this.authentications.{{name}}.password = password; } -{{/isBasic}} +{{/isBasicBasic}} +{{#isBasicBearer}} + + set accessToken(accessToken: string | (() => string)) { + this.authentications.{{name}}.accessToken = accessToken; + } +{{/isBasicBearer}} {{#isOAuth}} set accessToken(token: string) { @@ -119,6 +131,10 @@ export class {{classname}} { {{/authMethods}} {{/hasAuthMethods}} + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + {{#operation}} /** * {{¬es}} @@ -204,7 +220,13 @@ export class {{classname}} { {{/authMethods}} authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/modules/openapi-generator/src/main/resources/typescript-node/models.mustache b/modules/openapi-generator/src/main/resources/typescript-node/models.mustache index 963faeb2294..f129eb63e78 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/models.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/models.mustache @@ -180,6 +180,19 @@ export class HttpBasicAuth implements Authentication { } } +export class HttpBearerAuth implements Authentication { + public accessToken: string | (() => string) = ''; + + applyToRequest(requestOptions: localVarRequest.Options): void { + if (requestOptions && requestOptions.headers) { + const accessToken = typeof this.accessToken === 'function' + ? this.accessToken() + : this.accessToken; + requestOptions.headers["Authorization"] = "Bearer " + accessToken; + } + } +} + export class ApiKeyAuth implements Authentication { public apiKey: string = ''; @@ -219,4 +232,6 @@ export class VoidAuth implements Authentication { applyToRequest(_: localVarRequest.Options): void { // Do nothing } -} \ No newline at end of file +} + +export type Interceptor = (requestOptions: localVarRequest.Options) => (Promise | void); diff --git a/samples/client/petstore/typescript-node/default/api/petApi.ts b/samples/client/petstore/typescript-node/default/api/petApi.ts index e943ad7a582..c6794b6145d 100644 --- a/samples/client/petstore/typescript-node/default/api/petApi.ts +++ b/samples/client/petstore/typescript-node/default/api/petApi.ts @@ -17,8 +17,8 @@ import http = require('http'); import { ApiResponse } from '../model/apiResponse'; import { Pet } from '../model/pet'; -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; +import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError, RequestFile } from './apis'; @@ -43,6 +43,8 @@ export class PetApi { 'api_key': new ApiKeyAuth('header', 'api_key'), } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { @@ -80,6 +82,10 @@ export class PetApi { this.authentications.petstore_auth.accessToken = token; } + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + /** * * @summary Add a new pet to the store @@ -114,7 +120,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -173,7 +185,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -240,7 +258,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -308,7 +332,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -373,7 +403,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.api_key.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -431,7 +467,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -498,7 +540,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -573,7 +621,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/samples/client/petstore/typescript-node/default/api/storeApi.ts b/samples/client/petstore/typescript-node/default/api/storeApi.ts index 2acc326108e..501a3195ab2 100644 --- a/samples/client/petstore/typescript-node/default/api/storeApi.ts +++ b/samples/client/petstore/typescript-node/default/api/storeApi.ts @@ -16,8 +16,8 @@ import http = require('http'); /* tslint:disable:no-unused-locals */ import { Order } from '../model/order'; -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; +import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError, RequestFile } from './apis'; @@ -41,6 +41,8 @@ export class StoreApi { 'api_key': new ApiKeyAuth('header', 'api_key'), } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { @@ -74,6 +76,10 @@ export class StoreApi { (this.authentications as any)[StoreApiApiKeys[key]].apiKey = value; } + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * @summary Delete purchase order by ID @@ -106,7 +112,13 @@ export class StoreApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -163,7 +175,13 @@ export class StoreApi { authenticationPromise = authenticationPromise.then(() => this.authentications.api_key.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -226,7 +244,13 @@ export class StoreApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -289,7 +313,13 @@ export class StoreApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/samples/client/petstore/typescript-node/default/api/userApi.ts b/samples/client/petstore/typescript-node/default/api/userApi.ts index 6443289f02e..75c68547809 100644 --- a/samples/client/petstore/typescript-node/default/api/userApi.ts +++ b/samples/client/petstore/typescript-node/default/api/userApi.ts @@ -16,7 +16,7 @@ import http = require('http'); /* tslint:disable:no-unused-locals */ import { User } from '../model/user'; -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; import { HttpError, RequestFile } from './apis'; @@ -38,6 +38,8 @@ export class UserApi { 'default': new VoidAuth(), } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { @@ -71,6 +73,10 @@ export class UserApi { (this.authentications as any)[UserApiApiKeys[key]].apiKey = value; } + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + /** * This can only be done by the logged in user. * @summary Create user @@ -103,7 +109,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -158,7 +170,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -213,7 +231,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -268,7 +292,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -330,7 +360,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -406,7 +442,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -455,7 +497,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -517,7 +565,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/samples/client/petstore/typescript-node/default/model/models.ts b/samples/client/petstore/typescript-node/default/model/models.ts index 7aea0f15444..faf72498f76 100644 --- a/samples/client/petstore/typescript-node/default/model/models.ts +++ b/samples/client/petstore/typescript-node/default/model/models.ts @@ -169,6 +169,19 @@ export class HttpBasicAuth implements Authentication { } } +export class HttpBearerAuth implements Authentication { + public accessToken: string | (() => string) = ''; + + applyToRequest(requestOptions: localVarRequest.Options): void { + if (requestOptions && requestOptions.headers) { + const accessToken = typeof this.accessToken === 'function' + ? this.accessToken() + : this.accessToken; + requestOptions.headers["Authorization"] = "Bearer " + accessToken; + } + } +} + export class ApiKeyAuth implements Authentication { public apiKey: string = ''; @@ -208,4 +221,6 @@ export class VoidAuth implements Authentication { applyToRequest(_: localVarRequest.Options): void { // Do nothing } -} \ No newline at end of file +} + +export type Interceptor = (requestOptions: localVarRequest.Options) => (Promise | void); diff --git a/samples/client/petstore/typescript-node/npm/api/petApi.ts b/samples/client/petstore/typescript-node/npm/api/petApi.ts index e943ad7a582..c6794b6145d 100644 --- a/samples/client/petstore/typescript-node/npm/api/petApi.ts +++ b/samples/client/petstore/typescript-node/npm/api/petApi.ts @@ -17,8 +17,8 @@ import http = require('http'); import { ApiResponse } from '../model/apiResponse'; import { Pet } from '../model/pet'; -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; +import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError, RequestFile } from './apis'; @@ -43,6 +43,8 @@ export class PetApi { 'api_key': new ApiKeyAuth('header', 'api_key'), } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { @@ -80,6 +82,10 @@ export class PetApi { this.authentications.petstore_auth.accessToken = token; } + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + /** * * @summary Add a new pet to the store @@ -114,7 +120,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -173,7 +185,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -240,7 +258,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -308,7 +332,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -373,7 +403,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.api_key.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -431,7 +467,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -498,7 +540,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -573,7 +621,13 @@ export class PetApi { authenticationPromise = authenticationPromise.then(() => this.authentications.petstore_auth.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/samples/client/petstore/typescript-node/npm/api/storeApi.ts b/samples/client/petstore/typescript-node/npm/api/storeApi.ts index 2acc326108e..501a3195ab2 100644 --- a/samples/client/petstore/typescript-node/npm/api/storeApi.ts +++ b/samples/client/petstore/typescript-node/npm/api/storeApi.ts @@ -16,8 +16,8 @@ import http = require('http'); /* tslint:disable:no-unused-locals */ import { Order } from '../model/order'; -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; +import { HttpBasicAuth, HttpBearerAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError, RequestFile } from './apis'; @@ -41,6 +41,8 @@ export class StoreApi { 'api_key': new ApiKeyAuth('header', 'api_key'), } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { @@ -74,6 +76,10 @@ export class StoreApi { (this.authentications as any)[StoreApiApiKeys[key]].apiKey = value; } + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * @summary Delete purchase order by ID @@ -106,7 +112,13 @@ export class StoreApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -163,7 +175,13 @@ export class StoreApi { authenticationPromise = authenticationPromise.then(() => this.authentications.api_key.applyToRequest(localVarRequestOptions)); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -226,7 +244,13 @@ export class StoreApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -289,7 +313,13 @@ export class StoreApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/samples/client/petstore/typescript-node/npm/api/userApi.ts b/samples/client/petstore/typescript-node/npm/api/userApi.ts index 6443289f02e..75c68547809 100644 --- a/samples/client/petstore/typescript-node/npm/api/userApi.ts +++ b/samples/client/petstore/typescript-node/npm/api/userApi.ts @@ -16,7 +16,7 @@ import http = require('http'); /* tslint:disable:no-unused-locals */ import { User } from '../model/user'; -import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; +import { ObjectSerializer, Authentication, VoidAuth, Interceptor } from '../model/models'; import { HttpError, RequestFile } from './apis'; @@ -38,6 +38,8 @@ export class UserApi { 'default': new VoidAuth(), } + protected interceptors: Interceptor[] = []; + constructor(basePath?: string); constructor(basePathOrUsername: string, password?: string, basePath?: string) { if (password) { @@ -71,6 +73,10 @@ export class UserApi { (this.authentications as any)[UserApiApiKeys[key]].apiKey = value; } + public addInterceptor(interceptor: Interceptor) { + this.interceptors.push(interceptor); + } + /** * This can only be done by the logged in user. * @summary Create user @@ -103,7 +109,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -158,7 +170,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -213,7 +231,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -268,7 +292,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -330,7 +360,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -406,7 +442,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -455,7 +497,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; @@ -517,7 +565,13 @@ export class UserApi { let authenticationPromise = Promise.resolve(); authenticationPromise = authenticationPromise.then(() => this.authentications.default.applyToRequest(localVarRequestOptions)); - return authenticationPromise.then(() => { + + let interceptorPromise = authenticationPromise; + for (const interceptor of this.interceptors) { + interceptorPromise = interceptorPromise.then(() => interceptor(localVarRequestOptions)); + } + + return interceptorPromise.then(() => { if (Object.keys(localVarFormParams).length) { if (localVarUseFormData) { (localVarRequestOptions).formData = localVarFormParams; diff --git a/samples/client/petstore/typescript-node/npm/model/models.ts b/samples/client/petstore/typescript-node/npm/model/models.ts index 7aea0f15444..faf72498f76 100644 --- a/samples/client/petstore/typescript-node/npm/model/models.ts +++ b/samples/client/petstore/typescript-node/npm/model/models.ts @@ -169,6 +169,19 @@ export class HttpBasicAuth implements Authentication { } } +export class HttpBearerAuth implements Authentication { + public accessToken: string | (() => string) = ''; + + applyToRequest(requestOptions: localVarRequest.Options): void { + if (requestOptions && requestOptions.headers) { + const accessToken = typeof this.accessToken === 'function' + ? this.accessToken() + : this.accessToken; + requestOptions.headers["Authorization"] = "Bearer " + accessToken; + } + } +} + export class ApiKeyAuth implements Authentication { public apiKey: string = ''; @@ -208,4 +221,6 @@ export class VoidAuth implements Authentication { applyToRequest(_: localVarRequest.Options): void { // Do nothing } -} \ No newline at end of file +} + +export type Interceptor = (requestOptions: localVarRequest.Options) => (Promise | void); From df7b9b53f16f3194dea56e134ac2019c8dee085c Mon Sep 17 00:00:00 2001 From: tanmen Date: Thu, 28 Nov 2019 20:34:23 +0900 Subject: [PATCH 36/96] fix unused import if allOf (#4632) --- .../resources/typescript-rxjs/modelAllOf.mustache | 14 ++++++++++++++ .../main/resources/typescript-rxjs/models.mustache | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache new file mode 100644 index 00000000000..2c4f686eacb --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache @@ -0,0 +1,14 @@ +{{#hasImports}} +import { + {{#imports}} + {{{.}}}, + {{/imports}} +} from './'; + +{{/hasImports}} +/** + * @type {{classname}}{{#description}} + * {{{description}}}{{/description}} + * @export + */ +export type {{classname}} = {{#allOf}}{{{.}}}{{^-last}} & {{/-last}}{{/allOf}}; \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/models.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/models.mustache index ae5738af984..6f5fe539ee4 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/models.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/models.mustache @@ -2,6 +2,6 @@ {{>licenseInfo}} {{#models}} {{#model}} -{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{#oneOf}}{{#-first}}{{>modelOneOf}}{{/-first}}{{/oneOf}}{{^isEnum}}{{^oneOf}}{{>modelGeneric}}{{/oneOf}}{{/isEnum}} +{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{#oneOf}}{{#-first}}{{>modelOneOf}}{{/-first}}{{/oneOf}}{{#allOf}}{{#-first}}{{>modelAllOf}}{{/-first}}{{/allOf}}{{^isEnum}}{{^oneOf}}{{^allOf}}{{>modelGeneric}}{{/allOf}}{{/oneOf}}{{/isEnum}} {{/model}} {{/models}} From df682aba992c495811ec2f3e5b2b6cb0173cb09f Mon Sep 17 00:00:00 2001 From: Marin Atanasov Nikolov Date: Thu, 28 Nov 2019 14:52:16 +0200 Subject: [PATCH 37/96] Add support for dumping request and response in Go generated clients (#4566) * Add support for dumping request and response in Go generated clients The following change adds a new configuration setting, which controls whether clients want to dump the HTTP request and response. Useful when debugging API calls and clients. * samples: Update Go samples with XML * Use log.Logger when dumping HTTP request and response in Go client --- .../src/main/resources/go/client.mustache | 22 ++++++++++++++++++- .../main/resources/go/configuration.mustache | 2 ++ .../petstore/go/go-petstore-withXml/client.go | 22 ++++++++++++++++++- .../go/go-petstore-withXml/configuration.go | 2 ++ .../client/petstore/go/go-petstore/client.go | 22 ++++++++++++++++++- .../petstore/go/go-petstore/configuration.go | 2 ++ 6 files changed, 69 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index cefd6c7c409..eaa56c9cb78 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -9,8 +9,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -161,7 +163,25 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + + return resp, err } // ChangeBasePath changes base path to allow switching to mocks diff --git a/modules/openapi-generator/src/main/resources/go/configuration.mustache b/modules/openapi-generator/src/main/resources/go/configuration.mustache index 98f9d8fee26..17bc0aab306 100644 --- a/modules/openapi-generator/src/main/resources/go/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/go/configuration.mustache @@ -48,6 +48,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -57,6 +58,7 @@ func NewConfiguration() *Configuration { BasePath: "{{{basePath}}}", DefaultHeader: make(map[string]string), UserAgent: "{{#httpUserAgent}}{{{.}}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{{packageVersion}}}/go{{/httpUserAgent}}", + Debug: false, } return cfg } diff --git a/samples/client/petstore/go/go-petstore-withXml/client.go b/samples/client/petstore/go/go-petstore-withXml/client.go index 490d804736f..6fcca6e13e1 100644 --- a/samples/client/petstore/go/go-petstore-withXml/client.go +++ b/samples/client/petstore/go/go-petstore-withXml/client.go @@ -18,8 +18,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -173,7 +175,25 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + + return resp, err } // ChangeBasePath changes base path to allow switching to mocks diff --git a/samples/client/petstore/go/go-petstore-withXml/configuration.go b/samples/client/petstore/go/go-petstore-withXml/configuration.go index d471b566189..9618bd142cb 100644 --- a/samples/client/petstore/go/go-petstore-withXml/configuration.go +++ b/samples/client/petstore/go/go-petstore-withXml/configuration.go @@ -57,6 +57,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -66,6 +67,7 @@ func NewConfiguration() *Configuration { BasePath: "http://petstore.swagger.io:80/v2", DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, } return cfg } diff --git a/samples/client/petstore/go/go-petstore/client.go b/samples/client/petstore/go/go-petstore/client.go index 343078e15cd..4bd7fa2780d 100644 --- a/samples/client/petstore/go/go-petstore/client.go +++ b/samples/client/petstore/go/go-petstore/client.go @@ -17,8 +17,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -172,7 +174,25 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + + return resp, err } // ChangeBasePath changes base path to allow switching to mocks diff --git a/samples/client/petstore/go/go-petstore/configuration.go b/samples/client/petstore/go/go-petstore/configuration.go index b3b81ad0824..40bb03ddcb5 100644 --- a/samples/client/petstore/go/go-petstore/configuration.go +++ b/samples/client/petstore/go/go-petstore/configuration.go @@ -56,6 +56,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -65,6 +66,7 @@ func NewConfiguration() *Configuration { BasePath: "http://petstore.swagger.io:80/v2", DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, } return cfg } From 8cc7befbf370fb61b2f9c97112bc21f4b96e1a3b Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Thu, 28 Nov 2019 12:55:35 +0000 Subject: [PATCH 38/96] Fix enum encodable (#4594) --- .../main/resources/swift4/Extensions.mustache | 10 +++++ .../src/main/resources/swift4/_param.mustache | 2 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 44 +++++++++---------- .../Classes/OpenAPIs/APIs/PetAPI.swift | 18 ++++---- .../Classes/OpenAPIs/APIs/UserAPI.swift | 4 +- .../Classes/OpenAPIs/Extensions.swift | 10 +++++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 44 +++++++++---------- .../Classes/OpenAPIs/APIs/PetAPI.swift | 18 ++++---- .../Classes/OpenAPIs/APIs/UserAPI.swift | 4 +- .../Classes/OpenAPIs/Extensions.swift | 10 +++++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 44 +++++++++---------- .../Classes/OpenAPIs/APIs/PetAPI.swift | 18 ++++---- .../Classes/OpenAPIs/APIs/UserAPI.swift | 4 +- .../Classes/OpenAPIs/Extensions.swift | 10 +++++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 44 +++++++++---------- .../Classes/OpenAPIs/APIs/PetAPI.swift | 18 ++++---- .../Classes/OpenAPIs/APIs/UserAPI.swift | 4 +- .../Classes/OpenAPIs/Extensions.swift | 10 +++++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 44 +++++++++---------- .../Classes/OpenAPIs/APIs/PetAPI.swift | 18 ++++---- .../Classes/OpenAPIs/APIs/UserAPI.swift | 4 +- .../Classes/OpenAPIs/Extensions.swift | 10 +++++ 22 files changed, 226 insertions(+), 166 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache index c694cc4cfcf..0fb2e44a4a3 100644 --- a/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/Extensions.mustache @@ -35,6 +35,10 @@ 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() @@ -84,6 +88,12 @@ extension Date: JSONEncodable { } } +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString diff --git a/modules/openapi-generator/src/main/resources/swift4/_param.mustache b/modules/openapi-generator/src/main/resources/swift4/_param.mustache index 5caacbc6005..770458343aa 100644 --- a/modules/openapi-generator/src/main/resources/swift4/_param.mustache +++ b/modules/openapi-generator/src/main/resources/swift4/_param.mustache @@ -1 +1 @@ -"{{baseName}}": {{paramName}}{{^isEnum}}{{#isInteger}}{{^required}}?{{/required}}.encodeToJSON(){{/isInteger}}{{#isLong}}{{^required}}?{{/required}}.encodeToJSON(){{/isLong}}{{/isEnum}}{{#isEnum}}{{^isContainer}}{{^required}}?{{/required}}.rawValue{{/isContainer}}{{/isEnum}}{{#isDate}}{{^required}}?{{/required}}.encodeToJSON(){{/isDate}}{{#isDateTime}}{{^required}}?{{/required}}.encodeToJSON(){{/isDateTime}} \ No newline at end of file +"{{baseName}}": {{paramName}}{{^required}}?{{/required}}.encodeToJSON() \ No newline at end of file diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index a313a2f7779..b0b394aa06e 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -186,7 +186,7 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "query": query + "query": query.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() @@ -284,17 +284,17 @@ open class FakeAPI { "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), - "number": number, - "float": float, - "double": double, - "string": string, - "pattern_without_delimiter": patternWithoutDelimiter, - "byte": byte, - "binary": binary, + "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, - "callback": callback + "password": password?.encodeToJSON(), + "callback": callback?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -415,8 +415,8 @@ open class FakeAPI { let path = "/fake" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "enum_form_string_array": enumFormStringArray, - "enum_form_string": enumFormString?.rawValue + "enum_form_string_array": enumFormStringArray?.encodeToJSON(), + "enum_form_string": enumFormString?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -424,14 +424,14 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "enum_query_string_array": enumQueryStringArray, - "enum_query_string": enumQueryString?.rawValue, - "enum_query_integer": enumQueryInteger?.rawValue, - "enum_query_double": enumQueryDouble?.rawValue + "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?] = [ - "enum_header_string_array": enumHeaderStringArray, - "enum_header_string": enumHeaderString?.rawValue + "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), + "enum_header_string": enumHeaderString?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -486,8 +486,8 @@ open class FakeAPI { "int64_group": int64Group?.encodeToJSON() ]) let nillableHeaders: [String: Any?] = [ - "required_boolean_group": requiredBooleanGroup, - "boolean_group": booleanGroup + "required_boolean_group": requiredBooleanGroup.encodeToJSON(), + "boolean_group": booleanGroup?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -558,8 +558,8 @@ open class FakeAPI { let path = "/fake/jsonFormData" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "param": param, - "param2": param2 + "param": param.encodeToJSON(), + "param2": param2.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index f10127cdb8c..fe75962a72c 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -82,7 +82,7 @@ open class PetAPI { let url = URLComponents(string: URLString) let nillableHeaders: [String: Any?] = [ - "api_key": apiKey + "api_key": apiKey?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -129,7 +129,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "status": status + "status": status.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -166,7 +166,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "tags": tags + "tags": tags.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -284,8 +284,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "name": name, - "status": status + "name": name?.encodeToJSON(), + "status": status?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -330,8 +330,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "file": file + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "file": file?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -376,8 +376,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "requiredFile": requiredFile + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "requiredFile": requiredFile.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 3d2fdaee92f..ef4f971a91e 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -210,8 +210,8 @@ open class UserAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "username": username, - "password": password + "username": username.encodeToJSON(), + "password": password.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() diff --git a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift index b223c143e0f..f8faed255bf 100644 --- a/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -34,6 +34,10 @@ 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() @@ -83,6 +87,12 @@ extension Date: JSONEncodable { } } +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index a313a2f7779..b0b394aa06e 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -186,7 +186,7 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "query": query + "query": query.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() @@ -284,17 +284,17 @@ open class FakeAPI { "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), - "number": number, - "float": float, - "double": double, - "string": string, - "pattern_without_delimiter": patternWithoutDelimiter, - "byte": byte, - "binary": binary, + "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, - "callback": callback + "password": password?.encodeToJSON(), + "callback": callback?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -415,8 +415,8 @@ open class FakeAPI { let path = "/fake" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "enum_form_string_array": enumFormStringArray, - "enum_form_string": enumFormString?.rawValue + "enum_form_string_array": enumFormStringArray?.encodeToJSON(), + "enum_form_string": enumFormString?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -424,14 +424,14 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "enum_query_string_array": enumQueryStringArray, - "enum_query_string": enumQueryString?.rawValue, - "enum_query_integer": enumQueryInteger?.rawValue, - "enum_query_double": enumQueryDouble?.rawValue + "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?] = [ - "enum_header_string_array": enumHeaderStringArray, - "enum_header_string": enumHeaderString?.rawValue + "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), + "enum_header_string": enumHeaderString?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -486,8 +486,8 @@ open class FakeAPI { "int64_group": int64Group?.encodeToJSON() ]) let nillableHeaders: [String: Any?] = [ - "required_boolean_group": requiredBooleanGroup, - "boolean_group": booleanGroup + "required_boolean_group": requiredBooleanGroup.encodeToJSON(), + "boolean_group": booleanGroup?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -558,8 +558,8 @@ open class FakeAPI { let path = "/fake/jsonFormData" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "param": param, - "param2": param2 + "param": param.encodeToJSON(), + "param2": param2.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index f10127cdb8c..fe75962a72c 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -82,7 +82,7 @@ open class PetAPI { let url = URLComponents(string: URLString) let nillableHeaders: [String: Any?] = [ - "api_key": apiKey + "api_key": apiKey?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -129,7 +129,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "status": status + "status": status.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -166,7 +166,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "tags": tags + "tags": tags.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -284,8 +284,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "name": name, - "status": status + "name": name?.encodeToJSON(), + "status": status?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -330,8 +330,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "file": file + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "file": file?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -376,8 +376,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "requiredFile": requiredFile + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "requiredFile": requiredFile.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 3d2fdaee92f..ef4f971a91e 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -210,8 +210,8 @@ open class UserAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "username": username, - "password": password + "username": username.encodeToJSON(), + "password": password.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() diff --git a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift index b223c143e0f..f8faed255bf 100644 --- a/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -34,6 +34,10 @@ 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() @@ -83,6 +87,12 @@ extension Date: JSONEncodable { } } +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 8200c6f3041..39c419674ba 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -223,7 +223,7 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "query": query + "query": query.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() @@ -331,17 +331,17 @@ open class FakeAPI { "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), - "number": number, - "float": float, - "double": double, - "string": string, - "pattern_without_delimiter": patternWithoutDelimiter, - "byte": byte, - "binary": binary, + "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, - "callback": callback + "password": password?.encodeToJSON(), + "callback": callback?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -464,8 +464,8 @@ open class FakeAPI { let path = "/fake" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "enum_form_string_array": enumFormStringArray, - "enum_form_string": enumFormString?.rawValue + "enum_form_string_array": enumFormStringArray?.encodeToJSON(), + "enum_form_string": enumFormString?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -473,14 +473,14 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "enum_query_string_array": enumQueryStringArray, - "enum_query_string": enumQueryString?.rawValue, - "enum_query_integer": enumQueryInteger?.rawValue, - "enum_query_double": enumQueryDouble?.rawValue + "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?] = [ - "enum_header_string_array": enumHeaderStringArray, - "enum_header_string": enumHeaderString?.rawValue + "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), + "enum_header_string": enumHeaderString?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -537,8 +537,8 @@ open class FakeAPI { "int64_group": int64Group?.encodeToJSON() ]) let nillableHeaders: [String: Any?] = [ - "required_boolean_group": requiredBooleanGroup, - "boolean_group": booleanGroup + "required_boolean_group": requiredBooleanGroup.encodeToJSON(), + "boolean_group": booleanGroup?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -613,8 +613,8 @@ open class FakeAPI { let path = "/fake/jsonFormData" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "param": param, - "param2": param2 + "param": param.encodeToJSON(), + "param2": param2.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 5dec2bac9dd..8d31c177eb9 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -87,7 +87,7 @@ open class PetAPI { let url = URLComponents(string: URLString) let nillableHeaders: [String: Any?] = [ - "api_key": apiKey + "api_key": apiKey?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -142,7 +142,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "status": status + "status": status.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -187,7 +187,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "tags": tags + "tags": tags.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -317,8 +317,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "name": name, - "status": status + "name": name?.encodeToJSON(), + "status": status?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -371,8 +371,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "file": file + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "file": file?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -425,8 +425,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "requiredFile": requiredFile + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "requiredFile": requiredFile.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 48e69b873dd..83f4674553c 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -235,8 +235,8 @@ open class UserAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "username": username, - "password": password + "username": username.encodeToJSON(), + "password": password.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() diff --git a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 811edd70f41..95ad6eec74e 100644 --- a/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -35,6 +35,10 @@ 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() @@ -84,6 +88,12 @@ extension Date: JSONEncodable { } } +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index f7c5a4e7629..edbc9b6fffc 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -235,7 +235,7 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "query": query + "query": query.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() @@ -347,17 +347,17 @@ open class FakeAPI { "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), - "number": number, - "float": float, - "double": double, - "string": string, - "pattern_without_delimiter": patternWithoutDelimiter, - "byte": byte, - "binary": binary, + "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, - "callback": callback + "password": password?.encodeToJSON(), + "callback": callback?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -482,8 +482,8 @@ open class FakeAPI { let path = "/fake" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "enum_form_string_array": enumFormStringArray, - "enum_form_string": enumFormString?.rawValue + "enum_form_string_array": enumFormStringArray?.encodeToJSON(), + "enum_form_string": enumFormString?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -491,14 +491,14 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "enum_query_string_array": enumQueryStringArray, - "enum_query_string": enumQueryString?.rawValue, - "enum_query_integer": enumQueryInteger?.rawValue, - "enum_query_double": enumQueryDouble?.rawValue + "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?] = [ - "enum_header_string_array": enumHeaderStringArray, - "enum_header_string": enumHeaderString?.rawValue + "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), + "enum_header_string": enumHeaderString?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -557,8 +557,8 @@ open class FakeAPI { "int64_group": int64Group?.encodeToJSON() ]) let nillableHeaders: [String: Any?] = [ - "required_boolean_group": requiredBooleanGroup, - "boolean_group": booleanGroup + "required_boolean_group": requiredBooleanGroup.encodeToJSON(), + "boolean_group": booleanGroup?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -637,8 +637,8 @@ open class FakeAPI { let path = "/fake/jsonFormData" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "param": param, - "param2": param2 + "param": param.encodeToJSON(), + "param2": param2.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index aca2de27a13..6b4797fc19a 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -91,7 +91,7 @@ open class PetAPI { let url = URLComponents(string: URLString) let nillableHeaders: [String: Any?] = [ - "api_key": apiKey + "api_key": apiKey?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -148,7 +148,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "status": status + "status": status.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -195,7 +195,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "tags": tags + "tags": tags.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -331,8 +331,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "name": name, - "status": status + "name": name?.encodeToJSON(), + "status": status?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -387,8 +387,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "file": file + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "file": file?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -443,8 +443,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "requiredFile": requiredFile + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "requiredFile": requiredFile.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 08c8f824240..ec28b4121d0 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -247,8 +247,8 @@ open class UserAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "username": username, - "password": password + "username": username.encodeToJSON(), + "password": password.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() diff --git a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index b223c143e0f..f8faed255bf 100644 --- a/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -34,6 +34,10 @@ 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() @@ -83,6 +87,12 @@ extension Date: JSONEncodable { } } +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index a313a2f7779..b0b394aa06e 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -186,7 +186,7 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "query": query + "query": query.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() @@ -284,17 +284,17 @@ open class FakeAPI { "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), - "number": number, - "float": float, - "double": double, - "string": string, - "pattern_without_delimiter": patternWithoutDelimiter, - "byte": byte, - "binary": binary, + "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, - "callback": callback + "password": password?.encodeToJSON(), + "callback": callback?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -415,8 +415,8 @@ open class FakeAPI { let path = "/fake" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "enum_form_string_array": enumFormStringArray, - "enum_form_string": enumFormString?.rawValue + "enum_form_string_array": enumFormStringArray?.encodeToJSON(), + "enum_form_string": enumFormString?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -424,14 +424,14 @@ open class FakeAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "enum_query_string_array": enumQueryStringArray, - "enum_query_string": enumQueryString?.rawValue, - "enum_query_integer": enumQueryInteger?.rawValue, - "enum_query_double": enumQueryDouble?.rawValue + "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?] = [ - "enum_header_string_array": enumHeaderStringArray, - "enum_header_string": enumHeaderString?.rawValue + "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), + "enum_header_string": enumHeaderString?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -486,8 +486,8 @@ open class FakeAPI { "int64_group": int64Group?.encodeToJSON() ]) let nillableHeaders: [String: Any?] = [ - "required_boolean_group": requiredBooleanGroup, - "boolean_group": booleanGroup + "required_boolean_group": requiredBooleanGroup.encodeToJSON(), + "boolean_group": booleanGroup?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -558,8 +558,8 @@ open class FakeAPI { let path = "/fake/jsonFormData" let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "param": param, - "param2": param2 + "param": param.encodeToJSON(), + "param2": param2.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index f10127cdb8c..fe75962a72c 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -82,7 +82,7 @@ open class PetAPI { let url = URLComponents(string: URLString) let nillableHeaders: [String: Any?] = [ - "api_key": apiKey + "api_key": apiKey?.encodeToJSON() ] let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) @@ -129,7 +129,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "status": status + "status": status.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -166,7 +166,7 @@ open class PetAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "tags": tags + "tags": tags.encodeToJSON() ]) let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() @@ -284,8 +284,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "name": name, - "status": status + "name": name?.encodeToJSON(), + "status": status?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -330,8 +330,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "file": file + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "file": file?.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) @@ -376,8 +376,8 @@ open class PetAPI { path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) let URLString = PetstoreClientAPI.basePath + path let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata, - "requiredFile": requiredFile + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "requiredFile": requiredFile.encodeToJSON() ] let nonNullParameters = APIHelper.rejectNil(formParams) diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 3d2fdaee92f..ef4f971a91e 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -210,8 +210,8 @@ open class UserAPI { var url = URLComponents(string: URLString) url?.queryItems = APIHelper.mapValuesToQueryItems([ - "username": username, - "password": password + "username": username.encodeToJSON(), + "password": password.encodeToJSON() ]) let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() diff --git a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift index b223c143e0f..f8faed255bf 100644 --- a/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift4/unwrapRequired/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -34,6 +34,10 @@ 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() @@ -83,6 +87,12 @@ extension Date: JSONEncodable { } } +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString From af3d862c5bb0cc985ee5aceb002a809d69cfeb06 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 28 Nov 2019 21:37:50 +0800 Subject: [PATCH 39/96] update go samples --- .../client/petstore/go/go-petstore/client.go | 22 ++++++++++++++++++- .../petstore/go/go-petstore/configuration.go | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index 83da6040263..bdfa115bad9 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -17,8 +17,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -175,7 +177,25 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + + return resp, err } // ChangeBasePath changes base path to allow switching to mocks diff --git a/samples/openapi3/client/petstore/go/go-petstore/configuration.go b/samples/openapi3/client/petstore/go/go-petstore/configuration.go index b3b81ad0824..40bb03ddcb5 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/configuration.go +++ b/samples/openapi3/client/petstore/go/go-petstore/configuration.go @@ -56,6 +56,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -65,6 +66,7 @@ func NewConfiguration() *Configuration { BasePath: "http://petstore.swagger.io:80/v2", DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, } return cfg } From 6f86830e0cb449b72376a651aa9dcb68de3ea9ae Mon Sep 17 00:00:00 2001 From: Akira Tanimura Date: Fri, 29 Nov 2019 10:59:17 +0900 Subject: [PATCH 40/96] delete unused mustache in ruby-client (#4638) --- .../faraday_configuration.mustache | 300 ------------------ 1 file changed, 300 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/ruby-client/faraday_configuration.mustache diff --git a/modules/openapi-generator/src/main/resources/ruby-client/faraday_configuration.mustache b/modules/openapi-generator/src/main/resources/ruby-client/faraday_configuration.mustache deleted file mode 100644 index 67aaaf4f00f..00000000000 --- a/modules/openapi-generator/src/main/resources/ruby-client/faraday_configuration.mustache +++ /dev/null @@ -1,300 +0,0 @@ -=begin -{{> api_info}} -=end - -module {{moduleName}} - class Configuration - # Defines url scheme - attr_accessor :scheme - - # Defines url host - attr_accessor :host - - # Defines url base path - attr_accessor :base_path - - # Defines API keys used with API Key authentications. - # - # @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' - attr_accessor :api_key - - # Defines API key prefixes used with API Key authentications. - # - # @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' - attr_accessor :api_key_prefix - - # Defines the username used with HTTP basic authentication. - # - # @return [String] - attr_accessor :username - - # Defines the password used with HTTP basic authentication. - # - # @return [String] - attr_accessor :password - - # Defines the access token (Bearer) used with OAuth2. - attr_accessor :access_token - - # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response - # details will be logged with `logger.debug` (see the `logger` attribute). - # Default to false. - # - # @return [true, false] - attr_accessor :debugging - - # Defines the logger used for debugging. - # Default to `Rails.logger` (when in Rails) or logging to STDOUT. - # - # @return [#debug] - attr_accessor :logger - - # Defines the temporary folder to store downloaded files - # (for API endpoints that have file response). - # Default to use `Tempfile`. - # - # @return [String] - attr_accessor :temp_folder_path - - # The time limit for HTTP request in seconds. - # Default to 0 (never times out). - attr_accessor :timeout - - # Set this to false to skip client side validation in the operation. - # Default to true. - # @return [true, false] - attr_accessor :client_side_validation - - # Set this to false to skip client side validation in the operation. - # Default to true. - # @return [true, false] - attr_accessor :client_side_validation - - ### TLS/SSL setting - # Set this to false to skip verifying SSL certificate when calling API from https server. - # Default to true. - # - # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks. - # - # @return [true, false] - attr_accessor :ssl_verify - - ### TLS/SSL setting - # Any `OpenSSL::SSL::` constant (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html) - # - # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks. - # - attr_accessor :ssl_verify_mode - - ### TLS/SSL setting - # Set this to customize the certificate file to verify the peer. - # - # @return [String] the path to the certificate file - attr_accessor :ssl_ca_file - - ### TLS/SSL setting - # Client certificate file (for client certificate) - attr_accessor :ssl_client_cert - - ### TLS/SSL setting - # Client private key file (for client certificate) - attr_accessor :ssl_client_key - - # Set this to customize parameters encoding of array parameter with multi collectionFormat. - # Default to nil. - # - # @see The params_encoding option of Ethon. Related source code: - # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96 - attr_accessor :params_encoding - - attr_accessor :inject_format - - attr_accessor :force_ending_format - - def initialize - @scheme = 'http' - @host = 'localhost' - @base_path = '' - @api_key = {} - @api_key_prefix = {} - @params_encoding = nil - @timeout = 0 - @client_side_validation = true - @ssl_verify = true - @ssl_verify_mode = nil - @ssl_ca_file = nil - @ssl_client_cert = nil - @ssl_client_key = nil - @debugging = false - @inject_format = false - @force_ending_format = false - @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT) - - yield(self) if block_given? - end - - # The default Configuration object. - def self.default - @@default ||= Configuration.new - end - - def configure - yield(self) if block_given? - end - - def scheme=(scheme) - # remove :// from scheme - @scheme = scheme.sub(/:\/\//, '') - end - - def host=(host) - # remove http(s):// and anything after a slash - @host = host.sub(/https?:\/\//, '').split('/').first - end - - def base_path=(base_path) - # Add leading and trailing slashes to base_path - @base_path = "/#{base_path}".gsub(/\/+/, '/') - @base_path = '' if @base_path == '/' - end - - def base_url - "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') - end - - # 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]}" - else - @api_key[param_name] - end - end - - # Gets Basic Auth token string - def basic_auth_token - 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n") - end - - # Returns Auth Settings hash for api client. - def auth_settings - { -{{#authMethods}} -{{#isApiKey}} - '{{name}}' => - { - type: 'api_key', - in: {{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}, - key: '{{keyParamName}}', - value: api_key_with_prefix('{{keyParamName}}') - }, -{{/isApiKey}} -{{#isBasic}} -{{^isBasicBearer}} - '{{name}}' => - { - type: 'basic', - in: 'header', - key: 'Authorization', - value: basic_auth_token - }, -{{/isBasicBearer}} -{{#isBasicBearer}} - '{{name}}' => - { - type: 'bearer', - in: 'header', - {{#bearerFormat}} - format: '{{{.}}}', - {{/bearerFormat}} - key: 'Authorization', - value: "Bearer #{access_token}" - }, -{{/isBasicBearer}} -{{/isBasic}} -{{#isOAuth}} - '{{name}}' => - { - type: 'oauth2', - in: 'header', - key: 'Authorization', - value: "Bearer #{access_token}" - }, -{{/isOAuth}} -{{/authMethods}} - } - end - - # Returns an array of Server setting - def server_settings - [ - {{#servers}} - { - url: "{{{url}}}", - description: "{{{description}}}{{^description}}No descriptoin provided{{/description}}", - {{#variables}} - {{#-first}} - variables: { - {{/-first}} - {{{name}}}: { - description: "{{{description}}}{{^description}}No descriptoin provided{{/description}}", - default_value: "{{{defaultValue}}}", - {{#enumValues}} - {{#-first}} - enum_values: [ - {{/-first}} - "{{{.}}}"{{^-last}},{{/-last}} - {{#-last}} - ] - {{/-last}} - {{/enumValues}} - }{{^-last}},{{/-last}} - {{#-last}} - } - {{/-last}} - {{/variables}} - }{{^-last}},{{/-last}} - {{/servers}} - ] - end - - # Returns URL based on server settings - # - # @param index array index of the server settings - # @param variables hash of variable and the corresponding value - def server_url(index, variables = {}) - servers = server_settings - - # check array index out of bound - if (index < 0 || index >= servers.size) - fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}" - end - - server = servers[index] - url = server[:url] - - # go through variable and assign a value - server[:variables].each do |name, variable| - if variables.key?(name) - if (server[:variables][name][:enum_values].include? variables[name]) - url.gsub! "{" + name.to_s + "}", variables[name] - else - fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}." - end - else - # use default value - url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value] - end - end - - url - end - end -end From 52554af4541730c659e1dab5e664f5cf8d3b38fd Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 29 Nov 2019 10:00:01 +0800 Subject: [PATCH 41/96] add net.java.dev.jna (#4634) --- modules/openapi-generator/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 996fb2e65b9..138a1d966f6 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -347,6 +347,11 @@ ${kotlin-version} test + + net.java.dev.jna + jna + 5.5.0 + From 18b950cdc3f40e42ea072c31788d003f3b1e4022 Mon Sep 17 00:00:00 2001 From: Marcel Ramos Date: Thu, 28 Nov 2019 21:14:47 -0500 Subject: [PATCH 42/96] [BUG][R] use loadNamespace instead of package:pkgName string (#4614) * use loadNamespace instead of package:pkgName string * update R package code --- .../openapi-generator/src/main/resources/r/api.mustache | 2 +- .../openapi-generator/src/main/resources/r/model.mustache | 4 ++-- samples/client/petstore/R/R/pet.R | 8 ++++---- samples/client/petstore/R/R/pet_api.R | 8 ++++---- samples/client/petstore/R/R/store_api.R | 6 +++--- samples/client/petstore/R/R/user_api.R | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/r/api.mustache b/modules/openapi-generator/src/main/resources/r/api.mustache index faae7a57b7f..5fc18ec87e9 100644 --- a/modules/openapi-generator/src/main/resources/r/api.mustache +++ b/modules/openapi-generator/src/main/resources/r/api.mustache @@ -276,7 +276,7 @@ {{/isPrimitiveType}} {{^isPrimitiveType}} deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "{{returnType}}", "package:{{packageName}}"), + self$apiClient$deserialize(resp, "{{returnType}}", loadNamespace("{{packageName}}")), error = function(e){ {{#useDefaultExceptionHandling}} stop("Failed to deserialize response") diff --git a/modules/openapi-generator/src/main/resources/r/model.mustache b/modules/openapi-generator/src/main/resources/r/model.mustache index 04594e28a00..bf04a122144 100644 --- a/modules/openapi-generator/src/main/resources/r/model.mustache +++ b/modules/openapi-generator/src/main/resources/r/model.mustache @@ -145,7 +145,7 @@ {{#vars}} if (!is.null({{classname}}Object$`{{baseName}}`)) { {{#isContainer}} - self$`{{baseName}}` <- ApiClient$new()$deserializeObj({{classname}}Object$`{{baseName}}`, "{{dataType}}", "package:{{packageName}}") + self$`{{baseName}}` <- ApiClient$new()$deserializeObj({{classname}}Object$`{{baseName}}`, "{{dataType}}", loadNamespace("{{packageName}}")) {{/isContainer}} {{^isContainer}} {{#isPrimitiveType}} @@ -226,7 +226,7 @@ {{#vars}} {{! AAPI - added condition for handling container type of parameters, map and array}} {{#isContainer}} - self$`{{baseName}}` <- ApiClient$new()$deserializeObj({{classname}}Object$`{{baseName}}`, "{{dataType}}","package:{{packageName}}") + self$`{{baseName}}` <- ApiClient$new()$deserializeObj({{classname}}Object$`{{baseName}}`, "{{dataType}}", loadNamespace("{{packageName}}")) {{/isContainer}} {{^isContainer}} {{#isPrimitiveType}} diff --git a/samples/client/petstore/R/R/pet.R b/samples/client/petstore/R/R/pet.R index 307a5ed9704..760463d67ba 100644 --- a/samples/client/petstore/R/R/pet.R +++ b/samples/client/petstore/R/R/pet.R @@ -107,10 +107,10 @@ Pet <- R6::R6Class( self$`name` <- PetObject$`name` } if (!is.null(PetObject$`photoUrls`)) { - self$`photoUrls` <- ApiClient$new()$deserializeObj(PetObject$`photoUrls`, "array[character]", "package:petstore") + self$`photoUrls` <- ApiClient$new()$deserializeObj(PetObject$`photoUrls`, "array[character]", loadNamespace("petstore")) } if (!is.null(PetObject$`tags`)) { - self$`tags` <- ApiClient$new()$deserializeObj(PetObject$`tags`, "array[Tag]", "package:petstore") + self$`tags` <- ApiClient$new()$deserializeObj(PetObject$`tags`, "array[Tag]", loadNamespace("petstore")) } if (!is.null(PetObject$`status`)) { self$`status` <- PetObject$`status` @@ -169,8 +169,8 @@ Pet <- R6::R6Class( self$`id` <- PetObject$`id` self$`category` <- Category$new()$fromJSON(jsonlite::toJSON(PetObject$category, auto_unbox = TRUE, digits = NA)) self$`name` <- PetObject$`name` - self$`photoUrls` <- ApiClient$new()$deserializeObj(PetObject$`photoUrls`, "array[character]","package:petstore") - self$`tags` <- ApiClient$new()$deserializeObj(PetObject$`tags`, "array[Tag]","package:petstore") + self$`photoUrls` <- ApiClient$new()$deserializeObj(PetObject$`photoUrls`, "array[character]", loadNamespace("petstore")) + self$`tags` <- ApiClient$new()$deserializeObj(PetObject$`tags`, "array[Tag]", loadNamespace("petstore")) self$`status` <- PetObject$`status` self } diff --git a/samples/client/petstore/R/R/pet_api.R b/samples/client/petstore/R/R/pet_api.R index e0ad8275d82..f2e583bbcc5 100644 --- a/samples/client/petstore/R/R/pet_api.R +++ b/samples/client/petstore/R/R/pet_api.R @@ -469,7 +469,7 @@ PetApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "array[Pet]", "package:petstore"), + self$apiClient$deserialize(resp, "array[Pet]", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } @@ -521,7 +521,7 @@ PetApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "array[Pet]", "package:petstore"), + self$apiClient$deserialize(resp, "array[Pet]", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } @@ -577,7 +577,7 @@ PetApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "Pet", "package:petstore"), + self$apiClient$deserialize(resp, "Pet", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } @@ -739,7 +739,7 @@ PetApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "ModelApiResponse", "package:petstore"), + self$apiClient$deserialize(resp, "ModelApiResponse", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } diff --git a/samples/client/petstore/R/R/store_api.R b/samples/client/petstore/R/R/store_api.R index 2205c3796d1..8f45603288d 100644 --- a/samples/client/petstore/R/R/store_api.R +++ b/samples/client/petstore/R/R/store_api.R @@ -254,7 +254,7 @@ StoreApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "map(integer)", "package:petstore"), + self$apiClient$deserialize(resp, "map(integer)", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } @@ -306,7 +306,7 @@ StoreApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "Order", "package:petstore"), + self$apiClient$deserialize(resp, "Order", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } @@ -360,7 +360,7 @@ StoreApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "Order", "package:petstore"), + self$apiClient$deserialize(resp, "Order", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } diff --git a/samples/client/petstore/R/R/user_api.R b/samples/client/petstore/R/R/user_api.R index 7fbcd73848b..051b5ae8927 100644 --- a/samples/client/petstore/R/R/user_api.R +++ b/samples/client/petstore/R/R/user_api.R @@ -521,7 +521,7 @@ UserApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "User", "package:petstore"), + self$apiClient$deserialize(resp, "User", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } @@ -577,7 +577,7 @@ UserApi <- R6::R6Class( if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) { deserializedRespObj <- tryCatch( - self$apiClient$deserialize(resp, "character", "package:petstore"), + self$apiClient$deserialize(resp, "character", loadNamespace("petstore")), error = function(e){ stop("Failed to deserialize response") } From f6b4e18ac4d238f207a2bb292566d9977403a339 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 29 Nov 2019 10:50:46 +0800 Subject: [PATCH 43/96] Add a blog post by pochopocho13 (#4646) * Add a blog post by pochopocho13 * reorder articles --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dd6e2e9051a..ee545e55210 100644 --- a/README.md +++ b/README.md @@ -632,7 +632,6 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in ## [5 - Presentations/Videos/Tutorials/Books](#table-of-contents) -- 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) - 2018/05/12 - [OpenAPI Generator - community drivenで成長するコードジェネレータ](https://ackintosh.github.io/blog/2018/05/12/openapi-generator/) by [中野暁人](https://github.com/ackintosh) - 2018/05/15 - [Starting a new open-source project](http://jmini.github.io/blog/2018/2018-05-15_new-open-source-project.html) by [Jeremie Bresson](https://github.com/jmini) - 2018/05/15 - [REST API仕様からAPIクライアントやスタブサーバを自動生成する「OpenAPI Generator」オープンソースで公開。Swagger Codegenからのフォーク](https://www.publickey1.jp/blog/18/rest_apiapiopenapi_generatorswagger_generator.html) by [Publickey](https://www.publickey1.jp) @@ -703,6 +702,8 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019-11-11 - [TypeScript REST APIクライアント](https://qiita.com/unhurried/items/7b74f7d3c43545dadd2b) by [@unhurried](https://qiita.com/unhurried) - 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/) - 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com) +- 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) +- 2019-11-25 - [openapi-generatorで手軽にスタブサーバとクライアントの生成](https://qiita.com/pochopocho13/items/8db662e1934fb2b408b8) by [@pochopocho13](https://twitter.com/pochopocho13) - 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/) ## [6 - About Us](#table-of-contents) From a9bbd9334d0c31e3a318047f9d272a6e08a7656d Mon Sep 17 00:00:00 2001 From: Thomas Hansen Date: Fri, 29 Nov 2019 09:24:54 +0100 Subject: [PATCH 44/96] [BUG][PHP] Parameter property style not fully implemented (related to PR4042) (#4640) --- .../java/org/openapitools/codegen/CodegenParameter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 b42f6119996..1e8c89b6408 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 @@ -174,6 +174,7 @@ public class CodegenParameter { output.isListContainer = this.isListContainer; output.isMapContainer = this.isMapContainer; output.isExplode = this.isExplode; + output.style = this.style; return output; } @@ -249,7 +250,8 @@ public class CodegenParameter { Objects.equals(minItems, that.minItems) && Objects.equals(uniqueItems, that.uniqueItems) && Objects.equals(multipleOf, that.multipleOf) && - Objects.equals(isExplode, that.isExplode); + Objects.equals(isExplode, that.isExplode) && + Objects.equals(style, that.style); } @Override @@ -319,7 +321,8 @@ public class CodegenParameter { minItems, uniqueItems, multipleOf, - isExplode); + isExplode, + style); } @java.lang.Override @@ -390,6 +393,7 @@ public class CodegenParameter { ", uniqueItems=" + uniqueItems + ", multipleOf=" + multipleOf + ", isExplode=" + isExplode + + ", style='" + style + '\'' + '}'; } } From 030a7a848da62b38894a2c1dbaced21b9515e6eb Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 30 Nov 2019 10:46:06 +0800 Subject: [PATCH 45/96] Add a link to https://gotocph.com/2019/ presentation (#4652) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ee545e55210..4156a779755 100644 --- a/README.md +++ b/README.md @@ -702,6 +702,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019-11-11 - [TypeScript REST APIクライアント](https://qiita.com/unhurried/items/7b74f7d3c43545dadd2b) by [@unhurried](https://qiita.com/unhurried) - 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/) - 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com) +- 2019-11-20 - [Introduction to OpenAPI](https://noti.st/lornajane/HvDH7U/introduction-to-openapi) by [Lorna Mitchell](https://twitter.com/lornajane) at [GOTO Copenhagen 2019](https://gotocph.com/2019/) - 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) - 2019-11-25 - [openapi-generatorで手軽にスタブサーバとクライアントの生成](https://qiita.com/pochopocho13/items/8db662e1934fb2b408b8) by [@pochopocho13](https://twitter.com/pochopocho13) - 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/) From c0e11ec01b2723b2157a00e6563da19ae8140637 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Nikolov Date: Mon, 2 Dec 2019 05:52:44 +0200 Subject: [PATCH 46/96] Add debug flag support for go-experimental generator (#4649) * Add debug flag for go-experimental generator * Check for errors before dumping the response in Go generator * samples/openapi3: update samples for Go generators --- .../resources/go-experimental/client.mustache | 24 ++++++++++++++++- .../go-experimental/configuration.mustache | 2 ++ .../src/main/resources/go/client.mustache | 3 +++ .../go-experimental/go-petstore/client.go | 24 ++++++++++++++++- .../go-petstore/configuration.go | 2 ++ .../petstore/go/go-petstore-withXml/client.go | 3 +++ .../client/petstore/go/go-petstore/client.go | 3 +++ .../go-petstore/.openapi-generator/VERSION | 2 +- .../go-experimental/go-petstore/client.go | 27 ++++++++++++++++++- .../go-petstore/configuration.go | 2 ++ .../client/petstore/go/go-petstore/client.go | 3 +++ 11 files changed, 91 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-experimental/client.mustache b/modules/openapi-generator/src/main/resources/go-experimental/client.mustache index cefd6c7c409..6b26a31bea2 100644 --- a/modules/openapi-generator/src/main/resources/go-experimental/client.mustache +++ b/modules/openapi-generator/src/main/resources/go-experimental/client.mustache @@ -9,8 +9,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -161,7 +163,27 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err } // ChangeBasePath changes base path to allow switching to mocks diff --git a/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache b/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache index 0b74d83401f..1fd52f5e057 100644 --- a/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache @@ -48,6 +48,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -57,6 +58,7 @@ func NewConfiguration() *Configuration { BasePath: "{{{basePath}}}", DefaultHeader: make(map[string]string), UserAgent: "{{#httpUserAgent}}{{{.}}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{{packageVersion}}}/go{{/httpUserAgent}}", + Debug: false, } return cfg } diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index eaa56c9cb78..a7c6802a0b8 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -172,6 +172,9 @@ func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { } resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } if c.cfg.Debug { dump, err := httputil.DumpResponse(resp, true) diff --git a/samples/client/petstore/go-experimental/go-petstore/client.go b/samples/client/petstore/go-experimental/go-petstore/client.go index 343078e15cd..99adfbca747 100644 --- a/samples/client/petstore/go-experimental/go-petstore/client.go +++ b/samples/client/petstore/go-experimental/go-petstore/client.go @@ -17,8 +17,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -172,7 +174,27 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err } // ChangeBasePath changes base path to allow switching to mocks diff --git a/samples/client/petstore/go-experimental/go-petstore/configuration.go b/samples/client/petstore/go-experimental/go-petstore/configuration.go index 22f01da0a5c..15ed61df374 100644 --- a/samples/client/petstore/go-experimental/go-petstore/configuration.go +++ b/samples/client/petstore/go-experimental/go-petstore/configuration.go @@ -56,6 +56,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -65,6 +66,7 @@ func NewConfiguration() *Configuration { BasePath: "http://petstore.swagger.io:80/v2", DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, } return cfg } diff --git a/samples/client/petstore/go/go-petstore-withXml/client.go b/samples/client/petstore/go/go-petstore-withXml/client.go index 6fcca6e13e1..cc5ffa09cc6 100644 --- a/samples/client/petstore/go/go-petstore-withXml/client.go +++ b/samples/client/petstore/go/go-petstore-withXml/client.go @@ -184,6 +184,9 @@ func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { } resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } if c.cfg.Debug { dump, err := httputil.DumpResponse(resp, true) diff --git a/samples/client/petstore/go/go-petstore/client.go b/samples/client/petstore/go/go-petstore/client.go index 4bd7fa2780d..0c97916457d 100644 --- a/samples/client/petstore/go/go-petstore/client.go +++ b/samples/client/petstore/go/go-petstore/client.go @@ -183,6 +183,9 @@ func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { } resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } if c.cfg.Debug { dump, err := httputil.DumpResponse(resp, true) diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION b/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION index c3a2c7076fa..e4955748d3e 100644 --- a/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.0-SNAPSHOT \ No newline at end of file +4.2.2-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/client.go b/samples/openapi3/client/petstore/go-experimental/go-petstore/client.go index cdbf123bc1f..d531341577f 100644 --- a/samples/openapi3/client/petstore/go-experimental/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/client.go @@ -17,8 +17,10 @@ import ( "errors" "fmt" "io" + "log" "mime/multipart" "net/http" + "net/http/httputil" "net/url" "os" "path/filepath" @@ -175,7 +177,27 @@ func parameterToJson(obj interface{}) (string, error) { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err } // ChangeBasePath changes base path to allow switching to mocks @@ -353,6 +375,9 @@ func (c *APIClient) prepareRequest( } func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if len(b) == 0 { + return nil + } if s, ok := v.(*string); ok { *s = string(b) return nil diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go b/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go index 1c71df13090..54c8ae0f91d 100644 --- a/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go +++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go @@ -56,6 +56,7 @@ type Configuration struct { Scheme string `json:"scheme,omitempty"` DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` HTTPClient *http.Client } @@ -65,6 +66,7 @@ func NewConfiguration() *Configuration { BasePath: "http://petstore.swagger.io:80/v2", DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, } return cfg } diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index bdfa115bad9..1b8eae88daa 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -186,6 +186,9 @@ func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { } resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } if c.cfg.Debug { dump, err := httputil.DumpResponse(resp, true) From f9662e0eff68ad7fc31899560ab21dbc559d7068 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 2 Dec 2019 13:12:10 +0800 Subject: [PATCH 47/96] release 4.2.2 (#4661) --- README.md | 4 ++-- modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- modules/openapi-generator-gradle-plugin/README.adoc | 2 +- modules/openapi-generator-gradle-plugin/gradle.properties | 2 +- modules/openapi-generator-gradle-plugin/pom.xml | 2 +- .../samples/local-spec/README.md | 2 +- modules/openapi-generator-maven-plugin/README.md | 2 +- .../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/meta-codegen/lib/pom.xml | 2 +- 17 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 4156a779755..7b33222d5a7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@
-[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`4.2.2-SNAPSHOT`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) +[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`4.2.2`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Run Status](https://api.shippable.com/projects/5af6bf74e790f4070084a115/badge?branch=master)](https://app.shippable.com/github/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) @@ -112,7 +112,7 @@ OpenAPI Generator Version | Release Date | Notes ---------------------------- | ------------ | ----- 5.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/)| 13.05.2020 | Major release with breaking changes (no fallback) 4.3.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.3.0-SNAPSHOT/)| 29.02.2020 | Minor release (breaking changes with fallbacks) -4.2.2-SNAPSHOT (upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.2.2-SNAPSHOT/)| 02.12.2019 | Patch release +4.2.2 (upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.2.2/)| 02.12.2019 | Patch release [4.2.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.2.1) (latest stable release) | 15.11.2019 | Patch release OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0 diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index 5ca05605fab..b408a43bcea 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 4.2.2-SNAPSHOT + 4.2.2 ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index 46855942c4d..c2a89d1a063 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 4.2.2-SNAPSHOT + 4.2.2 ../.. diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 1ba8c136a66..8959db2d928 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -45,7 +45,7 @@ compileJava.dependsOn tasks.openApiGenerate [source,group] ---- plugins { - id "org.openapi.generator" version "4.2.2-SNAPSHOT" + id "org.openapi.generator" version "4.2.2" } ---- diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 7c405620a6f..47f49955972 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,5 +1,5 @@ # RELEASE_VERSION -openApiGeneratorVersion=4.2.2-SNAPSHOT +openApiGeneratorVersion=4.2.2 # /RELEASE_VERSION # BEGIN placeholders diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index e2267334c64..25d3f6e4c77 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 - 4.2.2-SNAPSHOT + 4.2.2 ../.. diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md index 9a2f6139045..26331310265 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md @@ -18,5 +18,5 @@ gradle generateGoWithInvalidSpec The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example: ```bash -gradle -PopenApiGeneratorVersion=4.2.2-SNAPSHOT openApiValidate +gradle -PopenApiGeneratorVersion=4.2.2 openApiValidate ``` diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index 3e10c5bc67b..ad7c6c384e7 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -12,7 +12,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase) org.openapitools openapi-generator-maven-plugin - 4.2.2-SNAPSHOT + 4.2.2 diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index 7c00f5680f9..1daf30f738c 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 - 4.2.2-SNAPSHOT + 4.2.2 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 8e6676af38e..62b47b44753 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 - 4.2.2-SNAPSHOT + 4.2.2 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 1ffead35a08..c149b81f42f 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 - 4.2.2-SNAPSHOT + 4.2.2 diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index ba2ee84c6f5..66eea84dd79 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 - 4.2.2-SNAPSHOT + 4.2.2 diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 2d2a134780a..2db4b8b22dd 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 - 4.2.2-SNAPSHOT + 4.2.2 ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index 91f1e074e77..c023d2e971a 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 4.2.2-SNAPSHOT + 4.2.2 ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 138a1d966f6..e84b57c85b0 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 4.2.2-SNAPSHOT + 4.2.2 ../.. diff --git a/pom.xml b/pom.xml index af352facc95..7e151f6c27f 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ pom openapi-generator-project - 4.2.2-SNAPSHOT + 4.2.2 https://github.com/openapitools/openapi-generator diff --git a/samples/meta-codegen/lib/pom.xml b/samples/meta-codegen/lib/pom.xml index cbc1f72f96c..94e828873f9 100644 --- a/samples/meta-codegen/lib/pom.xml +++ b/samples/meta-codegen/lib/pom.xml @@ -121,7 +121,7 @@ UTF-8 - 4.2.2-SNAPSHOT + 4.2.2 1.0.0 4.8.1 From 11c70074296452b1bb68c9d817107148ad058773 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 2 Dec 2019 15:26:01 +0800 Subject: [PATCH 48/96] Prepare v4.2.3 (#4663) * update version * update doc * update samples --- README.md | 14 +++++++------- modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- .../openapi-generator-gradle-plugin/README.adoc | 2 +- .../gradle.properties | 2 +- modules/openapi-generator-gradle-plugin/pom.xml | 2 +- .../samples/local-spec/README.md | 2 +- modules/openapi-generator-maven-plugin/README.md | 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 +- modules/openapi-generator-maven-plugin/pom.xml | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 2 +- .../client/petstore/R/.openapi-generator/VERSION | 2 +- .../petstore/apex/.openapi-generator/VERSION | 2 +- .../OpenAPIClient/.openapi-generator/VERSION | 2 +- .../OpenAPIClientCore/.openapi-generator/VERSION | 2 +- .../OpenAPIClient/.openapi-generator/VERSION | 2 +- .../openapi/.openapi-generator/VERSION | 2 +- .../openapi/.openapi-generator/VERSION | 2 +- .../dart-jaguar/openapi/.openapi-generator/VERSION | 2 +- .../openapi_proto/.openapi-generator/VERSION | 2 +- .../openapi/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../dart/openapi/.openapi-generator/VERSION | 2 +- .../petstore_client_lib/.openapi-generator/VERSION | 2 +- .../petstore/elixir/.openapi-generator/VERSION | 2 +- .../go-petstore/.openapi-generator/VERSION | 2 +- .../go-petstore-withXml/.openapi-generator/VERSION | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../petstore/groovy/.openapi-generator/VERSION | 2 +- .../haskell-http-client/.openapi-generator/VERSION | 2 +- .../petstore/java/feign/.openapi-generator/VERSION | 2 +- .../java/feign10x/.openapi-generator/VERSION | 2 +- .../google-api-client/.openapi-generator/VERSION | 2 +- .../java/jersey1/.openapi-generator/VERSION | 2 +- .../java/jersey2-java6/.openapi-generator/VERSION | 2 +- .../java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../java/jersey2/.openapi-generator/VERSION | 2 +- .../java/native/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/okhttp-gson/.openapi-generator/VERSION | 2 +- .../java/rest-assured/.openapi-generator/VERSION | 2 +- .../java/resteasy/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/resttemplate/.openapi-generator/VERSION | 2 +- .../java/retrofit/.openapi-generator/VERSION | 2 +- .../retrofit2-play24/.openapi-generator/VERSION | 2 +- .../retrofit2-play25/.openapi-generator/VERSION | 2 +- .../retrofit2-play26/.openapi-generator/VERSION | 2 +- .../java/retrofit2/.openapi-generator/VERSION | 2 +- .../java/retrofit2rx/.openapi-generator/VERSION | 2 +- .../java/retrofit2rx2/.openapi-generator/VERSION | 2 +- .../petstore/java/vertx/.openapi-generator/VERSION | 2 +- .../java/webclient/.openapi-generator/VERSION | 2 +- .../javascript-es6/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../javascript-promise/.openapi-generator/VERSION | 2 +- .../petstore/javascript-promise/src/ApiClient.js | 2 +- .../javascript-promise/src/api/AnotherFakeApi.js | 2 +- .../petstore/javascript-promise/src/api/FakeApi.js | 2 +- .../src/api/FakeClassnameTags123Api.js | 2 +- .../petstore/javascript-promise/src/api/PetApi.js | 2 +- .../javascript-promise/src/api/StoreApi.js | 2 +- .../petstore/javascript-promise/src/api/UserApi.js | 2 +- .../petstore/javascript-promise/src/index.js | 2 +- .../src/model/AdditionalPropertiesAnyType.js | 2 +- .../src/model/AdditionalPropertiesArray.js | 2 +- .../src/model/AdditionalPropertiesBoolean.js | 2 +- .../src/model/AdditionalPropertiesClass.js | 2 +- .../src/model/AdditionalPropertiesInteger.js | 2 +- .../src/model/AdditionalPropertiesNumber.js | 2 +- .../src/model/AdditionalPropertiesObject.js | 2 +- .../src/model/AdditionalPropertiesString.js | 2 +- .../javascript-promise/src/model/Animal.js | 2 +- .../javascript-promise/src/model/ApiResponse.js | 2 +- .../src/model/ArrayOfArrayOfNumberOnly.js | 2 +- .../src/model/ArrayOfNumberOnly.js | 2 +- .../javascript-promise/src/model/ArrayTest.js | 2 +- .../javascript-promise/src/model/Capitalization.js | 2 +- .../petstore/javascript-promise/src/model/Cat.js | 2 +- .../javascript-promise/src/model/CatAllOf.js | 2 +- .../javascript-promise/src/model/Category.js | 2 +- .../javascript-promise/src/model/ClassModel.js | 2 +- .../javascript-promise/src/model/Client.js | 2 +- .../petstore/javascript-promise/src/model/Dog.js | 2 +- .../javascript-promise/src/model/DogAllOf.js | 2 +- .../javascript-promise/src/model/EnumArrays.js | 2 +- .../javascript-promise/src/model/EnumClass.js | 2 +- .../javascript-promise/src/model/EnumTest.js | 2 +- .../petstore/javascript-promise/src/model/File.js | 2 +- .../src/model/FileSchemaTestClass.js | 2 +- .../javascript-promise/src/model/FormatTest.js | 2 +- .../src/model/HasOnlyReadOnly.js | 2 +- .../petstore/javascript-promise/src/model/List.js | 2 +- .../javascript-promise/src/model/MapTest.js | 2 +- .../MixedPropertiesAndAdditionalPropertiesClass.js | 2 +- .../src/model/Model200Response.js | 2 +- .../javascript-promise/src/model/ModelReturn.js | 2 +- .../petstore/javascript-promise/src/model/Name.js | 2 +- .../javascript-promise/src/model/NumberOnly.js | 2 +- .../petstore/javascript-promise/src/model/Order.js | 2 +- .../javascript-promise/src/model/OuterComposite.js | 2 +- .../javascript-promise/src/model/OuterEnum.js | 2 +- .../petstore/javascript-promise/src/model/Pet.js | 2 +- .../javascript-promise/src/model/ReadOnlyFirst.js | 2 +- .../src/model/SpecialModelName.js | 2 +- .../petstore/javascript-promise/src/model/Tag.js | 2 +- .../src/model/TypeHolderDefault.js | 2 +- .../src/model/TypeHolderExample.js | 2 +- .../petstore/javascript-promise/src/model/User.js | 2 +- .../javascript-promise/src/model/XmlItem.js | 2 +- .../petstore/javascript/.openapi-generator/VERSION | 2 +- .../client/petstore/javascript/src/ApiClient.js | 2 +- .../petstore/javascript/src/api/AnotherFakeApi.js | 2 +- .../client/petstore/javascript/src/api/FakeApi.js | 2 +- .../javascript/src/api/FakeClassnameTags123Api.js | 2 +- .../client/petstore/javascript/src/api/PetApi.js | 2 +- .../client/petstore/javascript/src/api/StoreApi.js | 2 +- .../client/petstore/javascript/src/api/UserApi.js | 2 +- samples/client/petstore/javascript/src/index.js | 2 +- .../src/model/AdditionalPropertiesAnyType.js | 2 +- .../src/model/AdditionalPropertiesArray.js | 2 +- .../src/model/AdditionalPropertiesBoolean.js | 2 +- .../src/model/AdditionalPropertiesClass.js | 2 +- .../src/model/AdditionalPropertiesInteger.js | 2 +- .../src/model/AdditionalPropertiesNumber.js | 2 +- .../src/model/AdditionalPropertiesObject.js | 2 +- .../src/model/AdditionalPropertiesString.js | 2 +- .../client/petstore/javascript/src/model/Animal.js | 2 +- .../petstore/javascript/src/model/ApiResponse.js | 2 +- .../src/model/ArrayOfArrayOfNumberOnly.js | 2 +- .../javascript/src/model/ArrayOfNumberOnly.js | 2 +- .../petstore/javascript/src/model/ArrayTest.js | 2 +- .../javascript/src/model/Capitalization.js | 2 +- .../client/petstore/javascript/src/model/Cat.js | 2 +- .../petstore/javascript/src/model/CatAllOf.js | 2 +- .../petstore/javascript/src/model/Category.js | 2 +- .../petstore/javascript/src/model/ClassModel.js | 2 +- .../client/petstore/javascript/src/model/Client.js | 2 +- .../client/petstore/javascript/src/model/Dog.js | 2 +- .../petstore/javascript/src/model/DogAllOf.js | 2 +- .../petstore/javascript/src/model/EnumArrays.js | 2 +- .../petstore/javascript/src/model/EnumClass.js | 2 +- .../petstore/javascript/src/model/EnumTest.js | 2 +- .../client/petstore/javascript/src/model/File.js | 2 +- .../javascript/src/model/FileSchemaTestClass.js | 2 +- .../petstore/javascript/src/model/FormatTest.js | 2 +- .../javascript/src/model/HasOnlyReadOnly.js | 2 +- .../client/petstore/javascript/src/model/List.js | 2 +- .../petstore/javascript/src/model/MapTest.js | 2 +- .../MixedPropertiesAndAdditionalPropertiesClass.js | 2 +- .../javascript/src/model/Model200Response.js | 2 +- .../petstore/javascript/src/model/ModelReturn.js | 2 +- .../client/petstore/javascript/src/model/Name.js | 2 +- .../petstore/javascript/src/model/NumberOnly.js | 2 +- .../client/petstore/javascript/src/model/Order.js | 2 +- .../javascript/src/model/OuterComposite.js | 2 +- .../petstore/javascript/src/model/OuterEnum.js | 2 +- .../client/petstore/javascript/src/model/Pet.js | 2 +- .../petstore/javascript/src/model/ReadOnlyFirst.js | 2 +- .../javascript/src/model/SpecialModelName.js | 2 +- .../client/petstore/javascript/src/model/Tag.js | 2 +- .../javascript/src/model/TypeHolderDefault.js | 2 +- .../javascript/src/model/TypeHolderExample.js | 2 +- .../client/petstore/javascript/src/model/User.js | 2 +- .../petstore/javascript/src/model/XmlItem.js | 2 +- .../kotlin-gson/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-nonpublic/.openapi-generator/VERSION | 2 +- .../kotlin-nullable/.openapi-generator/VERSION | 2 +- .../kotlin-okhttp3/.openapi-generator/VERSION | 2 +- .../kotlin-string/.openapi-generator/VERSION | 2 +- .../kotlin-threetenbp/.openapi-generator/VERSION | 2 +- .../petstore/kotlin/.openapi-generator/VERSION | 2 +- .../client/petstore/nim/.openapi-generator/VERSION | 2 +- .../petstore/perl/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-php/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-php/lib/Api/AnotherFakeApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 2 +- .../lib/Api/FakeClassnameTags123Api.php | 2 +- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/StoreApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 2 +- .../php/OpenAPIClient-php/lib/ApiException.php | 2 +- .../php/OpenAPIClient-php/lib/Configuration.php | 2 +- .../php/OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../lib/Model/AdditionalPropertiesAnyType.php | 2 +- .../lib/Model/AdditionalPropertiesArray.php | 2 +- .../lib/Model/AdditionalPropertiesBoolean.php | 2 +- .../lib/Model/AdditionalPropertiesClass.php | 2 +- .../lib/Model/AdditionalPropertiesInteger.php | 2 +- .../lib/Model/AdditionalPropertiesNumber.php | 2 +- .../lib/Model/AdditionalPropertiesObject.php | 2 +- .../lib/Model/AdditionalPropertiesString.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Animal.php | 2 +- .../OpenAPIClient-php/lib/Model/ApiResponse.php | 2 +- .../lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../lib/Model/ArrayOfNumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ArrayTest.php | 2 +- .../OpenAPIClient-php/lib/Model/Capitalization.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Cat.php | 2 +- .../php/OpenAPIClient-php/lib/Model/CatAllOf.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Category.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ClassModel.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Client.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Dog.php | 2 +- .../php/OpenAPIClient-php/lib/Model/DogAllOf.php | 2 +- .../php/OpenAPIClient-php/lib/Model/EnumArrays.php | 2 +- .../php/OpenAPIClient-php/lib/Model/EnumClass.php | 2 +- .../php/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/FormatTest.php | 2 +- .../lib/Model/HasOnlyReadOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/MapTest.php | 2 +- ...MixedPropertiesAndAdditionalPropertiesClass.php | 2 +- .../lib/Model/Model200Response.php | 2 +- .../OpenAPIClient-php/lib/Model/ModelInterface.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ModelList.php | 2 +- .../OpenAPIClient-php/lib/Model/ModelReturn.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Name.php | 2 +- .../php/OpenAPIClient-php/lib/Model/NumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Order.php | 2 +- .../OpenAPIClient-php/lib/Model/OuterComposite.php | 2 +- .../php/OpenAPIClient-php/lib/Model/OuterEnum.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Pet.php | 2 +- .../OpenAPIClient-php/lib/Model/ReadOnlyFirst.php | 2 +- .../lib/Model/SpecialModelName.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Tag.php | 2 +- .../lib/Model/TypeHolderDefault.php | 2 +- .../lib/Model/TypeHolderExample.php | 2 +- .../php/OpenAPIClient-php/lib/Model/User.php | 2 +- .../php/OpenAPIClient-php/lib/Model/XmlItem.php | 2 +- .../php/OpenAPIClient-php/lib/ObjectSerializer.php | 2 +- .../test/Api/AnotherFakeApiTest.php | 2 +- .../php/OpenAPIClient-php/test/Api/FakeApiTest.php | 2 +- .../test/Api/FakeClassnameTags123ApiTest.php | 2 +- .../php/OpenAPIClient-php/test/Api/PetApiTest.php | 2 +- .../OpenAPIClient-php/test/Api/StoreApiTest.php | 2 +- .../php/OpenAPIClient-php/test/Api/UserApiTest.php | 2 +- .../test/Model/AdditionalPropertiesAnyTypeTest.php | 2 +- .../test/Model/AdditionalPropertiesArrayTest.php | 2 +- .../test/Model/AdditionalPropertiesBooleanTest.php | 2 +- .../test/Model/AdditionalPropertiesClassTest.php | 2 +- .../test/Model/AdditionalPropertiesIntegerTest.php | 2 +- .../test/Model/AdditionalPropertiesNumberTest.php | 2 +- .../test/Model/AdditionalPropertiesObjectTest.php | 2 +- .../test/Model/AdditionalPropertiesStringTest.php | 2 +- .../OpenAPIClient-php/test/Model/AnimalTest.php | 2 +- .../test/Model/ApiResponseTest.php | 2 +- .../test/Model/ArrayOfArrayOfNumberOnlyTest.php | 2 +- .../test/Model/ArrayOfNumberOnlyTest.php | 2 +- .../OpenAPIClient-php/test/Model/ArrayTestTest.php | 2 +- .../test/Model/CapitalizationTest.php | 2 +- .../OpenAPIClient-php/test/Model/CatAllOfTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/CatTest.php | 2 +- .../OpenAPIClient-php/test/Model/CategoryTest.php | 2 +- .../test/Model/ClassModelTest.php | 2 +- .../OpenAPIClient-php/test/Model/ClientTest.php | 2 +- .../OpenAPIClient-php/test/Model/DogAllOfTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/DogTest.php | 2 +- .../test/Model/EnumArraysTest.php | 2 +- .../OpenAPIClient-php/test/Model/EnumClassTest.php | 2 +- .../OpenAPIClient-php/test/Model/EnumTestTest.php | 2 +- .../test/Model/FileSchemaTestClassTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/FileTest.php | 2 +- .../test/Model/FormatTestTest.php | 2 +- .../test/Model/HasOnlyReadOnlyTest.php | 2 +- .../OpenAPIClient-php/test/Model/MapTestTest.php | 2 +- ...dPropertiesAndAdditionalPropertiesClassTest.php | 2 +- .../test/Model/Model200ResponseTest.php | 2 +- .../OpenAPIClient-php/test/Model/ModelListTest.php | 2 +- .../test/Model/ModelReturnTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/NameTest.php | 2 +- .../test/Model/NumberOnlyTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/OrderTest.php | 2 +- .../test/Model/OuterCompositeTest.php | 2 +- .../OpenAPIClient-php/test/Model/OuterEnumTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/PetTest.php | 2 +- .../test/Model/ReadOnlyFirstTest.php | 2 +- .../test/Model/SpecialModelNameTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/TagTest.php | 2 +- .../test/Model/TypeHolderDefaultTest.php | 2 +- .../test/Model/TypeHolderExampleTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/UserTest.php | 2 +- .../OpenAPIClient-php/test/Model/XmlItemTest.php | 2 +- .../python-asyncio/.openapi-generator/VERSION | 2 +- .../python-experimental/.openapi-generator/VERSION | 2 +- .../python-tornado/.openapi-generator/VERSION | 2 +- .../petstore/python/.openapi-generator/VERSION | 2 +- .../ruby-faraday/.openapi-generator/VERSION | 2 +- .../client/petstore/ruby-faraday/lib/petstore.rb | 2 +- .../lib/petstore/api/another_fake_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../lib/petstore/api/fake_classname_tags123_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../ruby-faraday/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 +- .../ruby-faraday/lib/petstore/configuration.rb | 2 +- .../models/additional_properties_any_type.rb | 2 +- .../petstore/models/additional_properties_array.rb | 2 +- .../models/additional_properties_boolean.rb | 2 +- .../petstore/models/additional_properties_class.rb | 2 +- .../models/additional_properties_integer.rb | 2 +- .../models/additional_properties_number.rb | 2 +- .../models/additional_properties_object.rb | 2 +- .../models/additional_properties_string.rb | 2 +- .../ruby-faraday/lib/petstore/models/animal.rb | 2 +- .../lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../lib/petstore/models/array_of_number_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../ruby-faraday/lib/petstore/models/cat.rb | 2 +- .../ruby-faraday/lib/petstore/models/cat_all_of.rb | 2 +- .../ruby-faraday/lib/petstore/models/category.rb | 2 +- .../lib/petstore/models/class_model.rb | 2 +- .../ruby-faraday/lib/petstore/models/client.rb | 2 +- .../ruby-faraday/lib/petstore/models/dog.rb | 2 +- .../ruby-faraday/lib/petstore/models/dog_all_of.rb | 2 +- .../lib/petstore/models/enum_arrays.rb | 2 +- .../ruby-faraday/lib/petstore/models/enum_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/enum_test.rb | 2 +- .../ruby-faraday/lib/petstore/models/file.rb | 2 +- .../lib/petstore/models/file_schema_test_class.rb | 2 +- .../lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/list.rb | 2 +- .../ruby-faraday/lib/petstore/models/map_test.rb | 2 +- ...d_properties_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/number_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../ruby-faraday/lib/petstore/models/outer_enum.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 +- .../lib/petstore/models/type_holder_default.rb | 2 +- .../lib/petstore/models/type_holder_example.rb | 2 +- .../ruby-faraday/lib/petstore/models/user.rb | 2 +- .../ruby-faraday/lib/petstore/models/xml_item.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/version.rb | 2 +- .../client/petstore/ruby-faraday/petstore.gemspec | 2 +- .../petstore/ruby/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby/lib/petstore.rb | 2 +- .../ruby/lib/petstore/api/another_fake_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/fake_api.rb | 2 +- .../lib/petstore/api/fake_classname_tags123_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/store_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/user_api.rb | 2 +- .../petstore/ruby/lib/petstore/api_client.rb | 2 +- .../client/petstore/ruby/lib/petstore/api_error.rb | 2 +- .../petstore/ruby/lib/petstore/configuration.rb | 2 +- .../models/additional_properties_any_type.rb | 2 +- .../petstore/models/additional_properties_array.rb | 2 +- .../models/additional_properties_boolean.rb | 2 +- .../petstore/models/additional_properties_class.rb | 2 +- .../models/additional_properties_integer.rb | 2 +- .../models/additional_properties_number.rb | 2 +- .../models/additional_properties_object.rb | 2 +- .../models/additional_properties_string.rb | 2 +- .../petstore/ruby/lib/petstore/models/animal.rb | 2 +- .../ruby/lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../lib/petstore/models/array_of_number_only.rb | 2 +- .../ruby/lib/petstore/models/array_test.rb | 2 +- .../ruby/lib/petstore/models/capitalization.rb | 2 +- .../petstore/ruby/lib/petstore/models/cat.rb | 2 +- .../ruby/lib/petstore/models/cat_all_of.rb | 2 +- .../petstore/ruby/lib/petstore/models/category.rb | 2 +- .../ruby/lib/petstore/models/class_model.rb | 2 +- .../petstore/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 +- .../petstore/ruby/lib/petstore/models/enum_test.rb | 2 +- .../petstore/ruby/lib/petstore/models/file.rb | 2 +- .../lib/petstore/models/file_schema_test_class.rb | 2 +- .../ruby/lib/petstore/models/format_test.rb | 2 +- .../ruby/lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/list.rb | 2 +- .../petstore/ruby/lib/petstore/models/map_test.rb | 2 +- ...d_properties_and_additional_properties_class.rb | 2 +- .../ruby/lib/petstore/models/model200_response.rb | 2 +- .../ruby/lib/petstore/models/model_return.rb | 2 +- .../petstore/ruby/lib/petstore/models/name.rb | 2 +- .../ruby/lib/petstore/models/number_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/order.rb | 2 +- .../ruby/lib/petstore/models/outer_composite.rb | 2 +- .../ruby/lib/petstore/models/outer_enum.rb | 2 +- .../petstore/ruby/lib/petstore/models/pet.rb | 2 +- .../ruby/lib/petstore/models/read_only_first.rb | 2 +- .../ruby/lib/petstore/models/special_model_name.rb | 2 +- .../petstore/ruby/lib/petstore/models/tag.rb | 2 +- .../lib/petstore/models/type_holder_default.rb | 2 +- .../lib/petstore/models/type_holder_example.rb | 2 +- .../petstore/ruby/lib/petstore/models/user.rb | 2 +- .../petstore/ruby/lib/petstore/models/xml_item.rb | 2 +- .../client/petstore/ruby/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby/petstore.gemspec | 2 +- .../ruby/spec/api/another_fake_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api/fake_api_spec.rb | 2 +- .../spec/api/fake_classname_tags123_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api/pet_api_spec.rb | 2 +- .../petstore/ruby/spec/api/store_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api/user_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api_client_spec.rb | 2 +- .../petstore/ruby/spec/configuration_spec.rb | 2 +- .../models/additional_properties_any_type_spec.rb | 2 +- .../models/additional_properties_array_spec.rb | 2 +- .../models/additional_properties_boolean_spec.rb | 2 +- .../models/additional_properties_class_spec.rb | 2 +- .../models/additional_properties_integer_spec.rb | 2 +- .../models/additional_properties_number_spec.rb | 2 +- .../models/additional_properties_object_spec.rb | 2 +- .../models/additional_properties_string_spec.rb | 2 +- .../petstore/ruby/spec/models/animal_spec.rb | 2 +- .../petstore/ruby/spec/models/api_response_spec.rb | 2 +- .../models/array_of_array_of_number_only_spec.rb | 2 +- .../ruby/spec/models/array_of_number_only_spec.rb | 2 +- .../petstore/ruby/spec/models/array_test_spec.rb | 2 +- .../ruby/spec/models/capitalization_spec.rb | 2 +- .../petstore/ruby/spec/models/cat_all_of_spec.rb | 2 +- .../client/petstore/ruby/spec/models/cat_spec.rb | 2 +- .../petstore/ruby/spec/models/category_spec.rb | 2 +- .../petstore/ruby/spec/models/class_model_spec.rb | 2 +- .../petstore/ruby/spec/models/client_spec.rb | 2 +- .../petstore/ruby/spec/models/dog_all_of_spec.rb | 2 +- .../client/petstore/ruby/spec/models/dog_spec.rb | 2 +- .../petstore/ruby/spec/models/enum_arrays_spec.rb | 2 +- .../petstore/ruby/spec/models/enum_class_spec.rb | 2 +- .../petstore/ruby/spec/models/enum_test_spec.rb | 2 +- .../spec/models/file_schema_test_class_spec.rb | 2 +- .../client/petstore/ruby/spec/models/file_spec.rb | 2 +- .../petstore/ruby/spec/models/format_test_spec.rb | 2 +- .../ruby/spec/models/has_only_read_only_spec.rb | 2 +- .../client/petstore/ruby/spec/models/list_spec.rb | 2 +- .../petstore/ruby/spec/models/map_test_spec.rb | 2 +- ...perties_and_additional_properties_class_spec.rb | 2 +- .../ruby/spec/models/model200_response_spec.rb | 2 +- .../petstore/ruby/spec/models/model_return_spec.rb | 2 +- .../client/petstore/ruby/spec/models/name_spec.rb | 2 +- .../petstore/ruby/spec/models/number_only_spec.rb | 2 +- .../client/petstore/ruby/spec/models/order_spec.rb | 2 +- .../ruby/spec/models/outer_composite_spec.rb | 2 +- .../petstore/ruby/spec/models/outer_enum_spec.rb | 2 +- .../client/petstore/ruby/spec/models/pet_spec.rb | 2 +- .../ruby/spec/models/read_only_first_spec.rb | 2 +- .../ruby/spec/models/special_model_name_spec.rb | 2 +- .../client/petstore/ruby/spec/models/tag_spec.rb | 2 +- .../ruby/spec/models/type_holder_default_spec.rb | 2 +- .../ruby/spec/models/type_holder_example_spec.rb | 2 +- .../client/petstore/ruby/spec/models/user_spec.rb | 2 +- .../petstore/ruby/spec/models/xml_item_spec.rb | 2 +- samples/client/petstore/ruby/spec/spec_helper.rb | 2 +- .../spring-cloud-async/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-cloud/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-stubs/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../with-interfaces/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../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 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../with-interfaces/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../with-npm-version/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../multiple-parameters/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../with-interfaces/.openapi-generator/VERSION | 2 +- .../with-npm-version/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../typescript-node/npm/.openapi-generator/VERSION | 2 +- .../with-npm-version/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../with-interfaces/.openapi-generator/VERSION | 2 +- .../with-npm-version/.openapi-generator/VERSION | 2 +- samples/meta-codegen/lib/pom.xml | 2 +- .../meta-codegen/usage/.openapi-generator/VERSION | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-php/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-php/lib/Api/AnotherFakeApi.php | 2 +- .../php/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 +- .../php/OpenAPIClient-php/lib/Api/StoreApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 2 +- .../php/OpenAPIClient-php/lib/ApiException.php | 2 +- .../php/OpenAPIClient-php/lib/Configuration.php | 2 +- .../php/OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../lib/Model/AdditionalPropertiesClass.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Animal.php | 2 +- .../OpenAPIClient-php/lib/Model/ApiResponse.php | 2 +- .../lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../lib/Model/ArrayOfNumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ArrayTest.php | 2 +- .../OpenAPIClient-php/lib/Model/Capitalization.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Cat.php | 2 +- .../php/OpenAPIClient-php/lib/Model/CatAllOf.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Category.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ClassModel.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Client.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Dog.php | 2 +- .../php/OpenAPIClient-php/lib/Model/DogAllOf.php | 2 +- .../php/OpenAPIClient-php/lib/Model/EnumArrays.php | 2 +- .../php/OpenAPIClient-php/lib/Model/EnumClass.php | 2 +- .../php/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 +- .../php/OpenAPIClient-php/lib/Model/FormatTest.php | 2 +- .../lib/Model/HasOnlyReadOnly.php | 2 +- .../lib/Model/HealthCheckResult.php | 2 +- .../OpenAPIClient-php/lib/Model/InlineObject.php | 2 +- .../OpenAPIClient-php/lib/Model/InlineObject1.php | 2 +- .../OpenAPIClient-php/lib/Model/InlineObject2.php | 2 +- .../OpenAPIClient-php/lib/Model/InlineObject3.php | 2 +- .../OpenAPIClient-php/lib/Model/InlineObject4.php | 2 +- .../OpenAPIClient-php/lib/Model/InlineObject5.php | 2 +- .../lib/Model/InlineResponseDefault.php | 2 +- .../php/OpenAPIClient-php/lib/Model/MapTest.php | 2 +- ...MixedPropertiesAndAdditionalPropertiesClass.php | 2 +- .../lib/Model/Model200Response.php | 2 +- .../OpenAPIClient-php/lib/Model/ModelInterface.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ModelList.php | 2 +- .../OpenAPIClient-php/lib/Model/ModelReturn.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Name.php | 2 +- .../OpenAPIClient-php/lib/Model/NullableClass.php | 2 +- .../php/OpenAPIClient-php/lib/Model/NumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Order.php | 2 +- .../OpenAPIClient-php/lib/Model/OuterComposite.php | 2 +- .../php/OpenAPIClient-php/lib/Model/OuterEnum.php | 2 +- .../lib/Model/OuterEnumDefaultValue.php | 2 +- .../lib/Model/OuterEnumInteger.php | 2 +- .../lib/Model/OuterEnumIntegerDefaultValue.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Pet.php | 2 +- .../OpenAPIClient-php/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 +- .../php/OpenAPIClient-php/lib/ObjectSerializer.php | 2 +- .../test/Api/AnotherFakeApiTest.php | 2 +- .../OpenAPIClient-php/test/Api/DefaultApiTest.php | 2 +- .../php/OpenAPIClient-php/test/Api/FakeApiTest.php | 2 +- .../test/Api/FakeClassnameTags123ApiTest.php | 2 +- .../php/OpenAPIClient-php/test/Api/PetApiTest.php | 2 +- .../OpenAPIClient-php/test/Api/StoreApiTest.php | 2 +- .../php/OpenAPIClient-php/test/Api/UserApiTest.php | 2 +- .../test/Model/AdditionalPropertiesClassTest.php | 2 +- .../OpenAPIClient-php/test/Model/AnimalTest.php | 2 +- .../test/Model/ApiResponseTest.php | 2 +- .../test/Model/ArrayOfArrayOfNumberOnlyTest.php | 2 +- .../test/Model/ArrayOfNumberOnlyTest.php | 2 +- .../OpenAPIClient-php/test/Model/ArrayTestTest.php | 2 +- .../test/Model/CapitalizationTest.php | 2 +- .../OpenAPIClient-php/test/Model/CatAllOfTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/CatTest.php | 2 +- .../OpenAPIClient-php/test/Model/CategoryTest.php | 2 +- .../test/Model/ClassModelTest.php | 2 +- .../OpenAPIClient-php/test/Model/ClientTest.php | 2 +- .../OpenAPIClient-php/test/Model/DogAllOfTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/DogTest.php | 2 +- .../test/Model/EnumArraysTest.php | 2 +- .../OpenAPIClient-php/test/Model/EnumClassTest.php | 2 +- .../OpenAPIClient-php/test/Model/EnumTestTest.php | 2 +- .../test/Model/FileSchemaTestClassTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/FileTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/FooTest.php | 2 +- .../test/Model/FormatTestTest.php | 2 +- .../test/Model/HasOnlyReadOnlyTest.php | 2 +- .../test/Model/HealthCheckResultTest.php | 2 +- .../test/Model/InlineObject1Test.php | 2 +- .../test/Model/InlineObject2Test.php | 2 +- .../test/Model/InlineObject3Test.php | 2 +- .../test/Model/InlineObject4Test.php | 2 +- .../test/Model/InlineObject5Test.php | 2 +- .../test/Model/InlineObjectTest.php | 2 +- .../test/Model/InlineResponseDefaultTest.php | 2 +- .../OpenAPIClient-php/test/Model/MapTestTest.php | 2 +- ...dPropertiesAndAdditionalPropertiesClassTest.php | 2 +- .../test/Model/Model200ResponseTest.php | 2 +- .../OpenAPIClient-php/test/Model/ModelListTest.php | 2 +- .../test/Model/ModelReturnTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/NameTest.php | 2 +- .../test/Model/NullableClassTest.php | 2 +- .../test/Model/NumberOnlyTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/OrderTest.php | 2 +- .../test/Model/OuterCompositeTest.php | 2 +- .../test/Model/OuterEnumDefaultValueTest.php | 2 +- .../Model/OuterEnumIntegerDefaultValueTest.php | 2 +- .../test/Model/OuterEnumIntegerTest.php | 2 +- .../OpenAPIClient-php/test/Model/OuterEnumTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/PetTest.php | 2 +- .../test/Model/ReadOnlyFirstTest.php | 2 +- .../test/Model/SpecialModelNameTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/TagTest.php | 2 +- .../php/OpenAPIClient-php/test/Model/UserTest.php | 2 +- .../petstore/python/.openapi-generator/VERSION | 2 +- .../ruby-faraday/.openapi-generator/VERSION | 2 +- .../client/petstore/ruby-faraday/lib/petstore.rb | 2 +- .../lib/petstore/api/another_fake_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/default_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../lib/petstore/api/fake_classname_tags123_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../ruby-faraday/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 +- .../ruby-faraday/lib/petstore/configuration.rb | 2 +- .../petstore/models/additional_properties_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/animal.rb | 2 +- .../lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../lib/petstore/models/array_of_number_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../ruby-faraday/lib/petstore/models/cat.rb | 2 +- .../ruby-faraday/lib/petstore/models/cat_all_of.rb | 2 +- .../ruby-faraday/lib/petstore/models/category.rb | 2 +- .../lib/petstore/models/class_model.rb | 2 +- .../ruby-faraday/lib/petstore/models/client.rb | 2 +- .../ruby-faraday/lib/petstore/models/dog.rb | 2 +- .../ruby-faraday/lib/petstore/models/dog_all_of.rb | 2 +- .../lib/petstore/models/enum_arrays.rb | 2 +- .../ruby-faraday/lib/petstore/models/enum_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/enum_test.rb | 2 +- .../ruby-faraday/lib/petstore/models/file.rb | 2 +- .../lib/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 +- .../lib/petstore/models/health_check_result.rb | 2 +- .../lib/petstore/models/inline_object.rb | 2 +- .../lib/petstore/models/inline_object1.rb | 2 +- .../lib/petstore/models/inline_object2.rb | 2 +- .../lib/petstore/models/inline_object3.rb | 2 +- .../lib/petstore/models/inline_object4.rb | 2 +- .../lib/petstore/models/inline_object5.rb | 2 +- .../lib/petstore/models/inline_response_default.rb | 2 +- .../ruby-faraday/lib/petstore/models/list.rb | 2 +- .../ruby-faraday/lib/petstore/models/map_test.rb | 2 +- ...d_properties_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 +- .../ruby-faraday/lib/petstore/models/outer_enum.rb | 2 +- .../petstore/models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../models/outer_enum_integer_default_value.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 +- .../petstore/ruby-faraday/lib/petstore/version.rb | 2 +- .../client/petstore/ruby-faraday/petstore.gemspec | 2 +- .../ruby-faraday/spec/api/another_fake_api_spec.rb | 2 +- .../ruby-faraday/spec/api/default_api_spec.rb | 2 +- .../ruby-faraday/spec/api/fake_api_spec.rb | 2 +- .../spec/api/fake_classname_tags123_api_spec.rb | 2 +- .../petstore/ruby-faraday/spec/api/pet_api_spec.rb | 2 +- .../ruby-faraday/spec/api/store_api_spec.rb | 2 +- .../ruby-faraday/spec/api/user_api_spec.rb | 2 +- .../petstore/ruby-faraday/spec/api_client_spec.rb | 2 +- .../ruby-faraday/spec/configuration_spec.rb | 2 +- .../models/additional_properties_class_spec.rb | 2 +- .../ruby-faraday/spec/models/animal_spec.rb | 2 +- .../ruby-faraday/spec/models/api_response_spec.rb | 2 +- .../models/array_of_array_of_number_only_spec.rb | 2 +- .../spec/models/array_of_number_only_spec.rb | 2 +- .../ruby-faraday/spec/models/array_test_spec.rb | 2 +- .../spec/models/capitalization_spec.rb | 2 +- .../ruby-faraday/spec/models/cat_all_of_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/cat_spec.rb | 2 +- .../ruby-faraday/spec/models/category_spec.rb | 2 +- .../ruby-faraday/spec/models/class_model_spec.rb | 2 +- .../ruby-faraday/spec/models/client_spec.rb | 2 +- .../ruby-faraday/spec/models/dog_all_of_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/dog_spec.rb | 2 +- .../ruby-faraday/spec/models/enum_arrays_spec.rb | 2 +- .../ruby-faraday/spec/models/enum_class_spec.rb | 2 +- .../ruby-faraday/spec/models/enum_test_spec.rb | 2 +- .../spec/models/file_schema_test_class_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/file_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/foo_spec.rb | 2 +- .../ruby-faraday/spec/models/format_test_spec.rb | 2 +- .../spec/models/has_only_read_only_spec.rb | 2 +- .../spec/models/health_check_result_spec.rb | 2 +- .../spec/models/inline_object1_spec.rb | 2 +- .../spec/models/inline_object2_spec.rb | 2 +- .../spec/models/inline_object3_spec.rb | 2 +- .../spec/models/inline_object4_spec.rb | 2 +- .../spec/models/inline_object5_spec.rb | 2 +- .../ruby-faraday/spec/models/inline_object_spec.rb | 2 +- .../spec/models/inline_response_default_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/list_spec.rb | 2 +- .../ruby-faraday/spec/models/map_test_spec.rb | 2 +- ...perties_and_additional_properties_class_spec.rb | 2 +- .../spec/models/model200_response_spec.rb | 2 +- .../ruby-faraday/spec/models/model_return_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/name_spec.rb | 2 +- .../spec/models/nullable_class_spec.rb | 2 +- .../ruby-faraday/spec/models/number_only_spec.rb | 2 +- .../ruby-faraday/spec/models/order_spec.rb | 2 +- .../spec/models/outer_composite_spec.rb | 2 +- .../spec/models/outer_enum_default_value_spec.rb | 2 +- .../outer_enum_integer_default_value_spec.rb | 2 +- .../spec/models/outer_enum_integer_spec.rb | 2 +- .../ruby-faraday/spec/models/outer_enum_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/pet_spec.rb | 2 +- .../spec/models/read_only_first_spec.rb | 2 +- .../spec/models/special_model_name_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/tag_spec.rb | 2 +- .../petstore/ruby-faraday/spec/models/user_spec.rb | 2 +- .../petstore/ruby-faraday/spec/spec_helper.rb | 2 +- .../petstore/ruby/.openapi-generator/VERSION | 2 +- .../openapi3/client/petstore/ruby/lib/petstore.rb | 2 +- .../ruby/lib/petstore/api/another_fake_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/default_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/fake_api.rb | 2 +- .../lib/petstore/api/fake_classname_tags123_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/store_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/user_api.rb | 2 +- .../petstore/ruby/lib/petstore/api_client.rb | 2 +- .../client/petstore/ruby/lib/petstore/api_error.rb | 2 +- .../petstore/ruby/lib/petstore/configuration.rb | 2 +- .../petstore/models/additional_properties_class.rb | 2 +- .../petstore/ruby/lib/petstore/models/animal.rb | 2 +- .../ruby/lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../lib/petstore/models/array_of_number_only.rb | 2 +- .../ruby/lib/petstore/models/array_test.rb | 2 +- .../ruby/lib/petstore/models/capitalization.rb | 2 +- .../petstore/ruby/lib/petstore/models/cat.rb | 2 +- .../ruby/lib/petstore/models/cat_all_of.rb | 2 +- .../petstore/ruby/lib/petstore/models/category.rb | 2 +- .../ruby/lib/petstore/models/class_model.rb | 2 +- .../petstore/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 +- .../petstore/ruby/lib/petstore/models/enum_test.rb | 2 +- .../petstore/ruby/lib/petstore/models/file.rb | 2 +- .../lib/petstore/models/file_schema_test_class.rb | 2 +- .../petstore/ruby/lib/petstore/models/foo.rb | 2 +- .../ruby/lib/petstore/models/format_test.rb | 2 +- .../ruby/lib/petstore/models/has_only_read_only.rb | 2 +- .../lib/petstore/models/health_check_result.rb | 2 +- .../ruby/lib/petstore/models/inline_object.rb | 2 +- .../ruby/lib/petstore/models/inline_object1.rb | 2 +- .../ruby/lib/petstore/models/inline_object2.rb | 2 +- .../ruby/lib/petstore/models/inline_object3.rb | 2 +- .../ruby/lib/petstore/models/inline_object4.rb | 2 +- .../ruby/lib/petstore/models/inline_object5.rb | 2 +- .../lib/petstore/models/inline_response_default.rb | 2 +- .../petstore/ruby/lib/petstore/models/list.rb | 2 +- .../petstore/ruby/lib/petstore/models/map_test.rb | 2 +- ...d_properties_and_additional_properties_class.rb | 2 +- .../ruby/lib/petstore/models/model200_response.rb | 2 +- .../ruby/lib/petstore/models/model_return.rb | 2 +- .../petstore/ruby/lib/petstore/models/name.rb | 2 +- .../ruby/lib/petstore/models/nullable_class.rb | 2 +- .../ruby/lib/petstore/models/number_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/order.rb | 2 +- .../ruby/lib/petstore/models/outer_composite.rb | 2 +- .../ruby/lib/petstore/models/outer_enum.rb | 2 +- .../petstore/models/outer_enum_default_value.rb | 2 +- .../ruby/lib/petstore/models/outer_enum_integer.rb | 2 +- .../models/outer_enum_integer_default_value.rb | 2 +- .../petstore/ruby/lib/petstore/models/pet.rb | 2 +- .../ruby/lib/petstore/models/read_only_first.rb | 2 +- .../ruby/lib/petstore/models/special_model_name.rb | 2 +- .../petstore/ruby/lib/petstore/models/tag.rb | 2 +- .../petstore/ruby/lib/petstore/models/user.rb | 2 +- .../client/petstore/ruby/lib/petstore/version.rb | 2 +- .../openapi3/client/petstore/ruby/petstore.gemspec | 2 +- .../ruby/spec/api/another_fake_api_spec.rb | 2 +- .../petstore/ruby/spec/api/default_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api/fake_api_spec.rb | 2 +- .../spec/api/fake_classname_tags123_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api/pet_api_spec.rb | 2 +- .../petstore/ruby/spec/api/store_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api/user_api_spec.rb | 2 +- .../client/petstore/ruby/spec/api_client_spec.rb | 2 +- .../petstore/ruby/spec/configuration_spec.rb | 2 +- .../models/additional_properties_class_spec.rb | 2 +- .../petstore/ruby/spec/models/animal_spec.rb | 2 +- .../petstore/ruby/spec/models/api_response_spec.rb | 2 +- .../models/array_of_array_of_number_only_spec.rb | 2 +- .../ruby/spec/models/array_of_number_only_spec.rb | 2 +- .../petstore/ruby/spec/models/array_test_spec.rb | 2 +- .../ruby/spec/models/capitalization_spec.rb | 2 +- .../petstore/ruby/spec/models/cat_all_of_spec.rb | 2 +- .../client/petstore/ruby/spec/models/cat_spec.rb | 2 +- .../petstore/ruby/spec/models/category_spec.rb | 2 +- .../petstore/ruby/spec/models/class_model_spec.rb | 2 +- .../petstore/ruby/spec/models/client_spec.rb | 2 +- .../petstore/ruby/spec/models/dog_all_of_spec.rb | 2 +- .../client/petstore/ruby/spec/models/dog_spec.rb | 2 +- .../petstore/ruby/spec/models/enum_arrays_spec.rb | 2 +- .../petstore/ruby/spec/models/enum_class_spec.rb | 2 +- .../petstore/ruby/spec/models/enum_test_spec.rb | 2 +- .../spec/models/file_schema_test_class_spec.rb | 2 +- .../client/petstore/ruby/spec/models/file_spec.rb | 2 +- .../client/petstore/ruby/spec/models/foo_spec.rb | 2 +- .../petstore/ruby/spec/models/format_test_spec.rb | 2 +- .../ruby/spec/models/has_only_read_only_spec.rb | 2 +- .../ruby/spec/models/health_check_result_spec.rb | 2 +- .../ruby/spec/models/inline_object1_spec.rb | 2 +- .../ruby/spec/models/inline_object2_spec.rb | 2 +- .../ruby/spec/models/inline_object3_spec.rb | 2 +- .../ruby/spec/models/inline_object4_spec.rb | 2 +- .../ruby/spec/models/inline_object5_spec.rb | 2 +- .../ruby/spec/models/inline_object_spec.rb | 2 +- .../spec/models/inline_response_default_spec.rb | 2 +- .../client/petstore/ruby/spec/models/list_spec.rb | 2 +- .../petstore/ruby/spec/models/map_test_spec.rb | 2 +- ...perties_and_additional_properties_class_spec.rb | 2 +- .../ruby/spec/models/model200_response_spec.rb | 2 +- .../petstore/ruby/spec/models/model_return_spec.rb | 2 +- .../client/petstore/ruby/spec/models/name_spec.rb | 2 +- .../ruby/spec/models/nullable_class_spec.rb | 2 +- .../petstore/ruby/spec/models/number_only_spec.rb | 2 +- .../client/petstore/ruby/spec/models/order_spec.rb | 2 +- .../ruby/spec/models/outer_composite_spec.rb | 2 +- .../spec/models/outer_enum_default_value_spec.rb | 2 +- .../outer_enum_integer_default_value_spec.rb | 2 +- .../ruby/spec/models/outer_enum_integer_spec.rb | 2 +- .../petstore/ruby/spec/models/outer_enum_spec.rb | 2 +- .../client/petstore/ruby/spec/models/pet_spec.rb | 2 +- .../ruby/spec/models/read_only_first_spec.rb | 2 +- .../ruby/spec/models/special_model_name_spec.rb | 2 +- .../client/petstore/ruby/spec/models/tag_spec.rb | 2 +- .../client/petstore/ruby/spec/models/user_spec.rb | 2 +- .../client/petstore/ruby/spec/spec_helper.rb | 2 +- .../petstore/mysql/.openapi-generator/VERSION | 2 +- .../go-api-server/.openapi-generator/VERSION | 2 +- .../go-gin-api-server/.openapi-generator/VERSION | 2 +- .../petstore/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 +- .../java-play-framework/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-cdi/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-cxf/.openapi-generator/VERSION | 2 +- .../jaxrs-datelib-j8/.openapi-generator/VERSION | 2 +- .../jaxrs-jersey/.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../eap-java8/.openapi-generator/VERSION | 2 +- .../eap-joda/.openapi-generator/VERSION | 2 +- .../jaxrs-resteasy/eap/.openapi-generator/VERSION | 2 +- .../jaxrs-resteasy/joda/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-spec/.openapi-generator/VERSION | 2 +- .../jersey1-useTags/.openapi-generator/VERSION | 2 +- .../jaxrs/jersey1/.openapi-generator/VERSION | 2 +- .../jersey2-useTags/.openapi-generator/VERSION | 2 +- .../jaxrs/jersey2/.openapi-generator/VERSION | 2 +- .../kotlin-server/ktor/.openapi-generator/VERSION | 2 +- .../server/petstore/kotlin-server/ktor/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-springboot/.openapi-generator/VERSION | 2 +- .../petstore/php-lumen/.openapi-generator/VERSION | 2 +- .../OpenAPIServer/.openapi-generator/VERSION | 2 +- .../petstore/php-slim/.openapi-generator/VERSION | 2 +- .../petstore/php-slim4/.openapi-generator/VERSION | 2 +- .../SymfonyBundle-php/.openapi-generator/VERSION | 2 +- .../petstore/php-ze-ph/.openapi-generator/VERSION | 2 +- .../output/multipart-v3/.openapi-generator/VERSION | 2 +- .../output/openapi-v3/.openapi-generator/VERSION | 2 +- .../output/ops-v3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../rust-server-test/.openapi-generator/VERSION | 2 +- .../spring-mvc-j8-async/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/spring-mvc/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-delegate/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-reactive/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../openapitools/virtualan/api/AnotherFakeApi.java | 2 +- .../org/openapitools/virtualan/api/FakeApi.java | 2 +- .../virtualan/api/FakeClassnameTestApi.java | 2 +- .../org/openapitools/virtualan/api/PetApi.java | 2 +- .../org/openapitools/virtualan/api/StoreApi.java | 2 +- .../org/openapitools/virtualan/api/UserApi.java | 2 +- .../petstore/springboot/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../main/java/org/openapitools/api/StoreApi.java | 2 +- .../main/java/org/openapitools/api/UserApi.java | 2 +- 1009 files changed, 1015 insertions(+), 1015 deletions(-) diff --git a/README.md b/README.md index 7b33222d5a7..46253b06bbd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@
-[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`4.2.2`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) +[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`4.2.3-SNAPSHOT`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Run Status](https://api.shippable.com/projects/5af6bf74e790f4070084a115/badge?branch=master)](https://app.shippable.com/github/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) @@ -112,8 +112,8 @@ OpenAPI Generator Version | Release Date | Notes ---------------------------- | ------------ | ----- 5.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/)| 13.05.2020 | Major release with breaking changes (no fallback) 4.3.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.3.0-SNAPSHOT/)| 29.02.2020 | Minor release (breaking changes with fallbacks) -4.2.2 (upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.2.2/)| 02.12.2019 | Patch release -[4.2.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.2.1) (latest stable release) | 15.11.2019 | Patch release +4.2.3-SNAPSHOT (upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.2.3-SNAPSHOT/)| 31.01.2020 | Patch release +[4.2.2](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.2.2) (latest stable release) | 02.12.2019 | Patch release OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0 @@ -169,16 +169,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: `http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.1/openapi-generator-cli-4.2.1.jar` +JAR location: `http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.2/openapi-generator-cli-4.2.2.jar` For **Mac/Linux** users: ```sh -wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.1/openapi-generator-cli-4.2.1.jar -O openapi-generator-cli.jar +wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.2/openapi-generator-cli-4.2.2.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 http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.1/openapi-generator-cli-4.2.1.jar +Invoke-WebRequest -OutFile openapi-generator-cli.jar http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.2/openapi-generator-cli-4.2.2.jar ``` After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage. @@ -420,7 +420,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/2_0/petstore.yaml -g php -o c:\temp\php_api_client`) -You can also download the JAR (latest release) directly from [maven.org](http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.1/openapi-generator-cli-4.2.1.jar) +You can also download the JAR (latest release) directly from [maven.org](http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.2/openapi-generator-cli-4.2.2.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 b408a43bcea..b02f64f636d 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 4.2.2 + 4.2.3-SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index c2a89d1a063..58e2f5714d2 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 4.2.2 + 4.2.3-SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 8959db2d928..806e7734efa 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -45,7 +45,7 @@ compileJava.dependsOn tasks.openApiGenerate [source,group] ---- plugins { - id "org.openapi.generator" version "4.2.2" + id "org.openapi.generator" version "4.2.3-SNAPSHOT" } ---- diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 47f49955972..bf9cf796c22 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,5 +1,5 @@ # RELEASE_VERSION -openApiGeneratorVersion=4.2.2 +openApiGeneratorVersion=4.2.3-SNAPSHOT # /RELEASE_VERSION # BEGIN placeholders diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 25d3f6e4c77..3508398624d 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 - 4.2.2 + 4.2.3-SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md index 26331310265..23270faca3c 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md @@ -18,5 +18,5 @@ gradle generateGoWithInvalidSpec The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example: ```bash -gradle -PopenApiGeneratorVersion=4.2.2 openApiValidate +gradle -PopenApiGeneratorVersion=4.2.3-SNAPSHOT openApiValidate ``` diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index ad7c6c384e7..fd6c8e25ca9 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -12,7 +12,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase) org.openapitools openapi-generator-maven-plugin - 4.2.2 + 4.2.3-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index 1daf30f738c..c0416bfe6b3 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 - 4.2.2 + 4.2.3-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 62b47b44753..e3cdcca0228 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 - 4.2.2 + 4.2.3-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 c149b81f42f..81f008570aa 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 - 4.2.2 + 4.2.3-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index 66eea84dd79..2ec02ae10f4 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 - 4.2.2 + 4.2.3-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 2db4b8b22dd..d74b8ff5624 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 - 4.2.2 + 4.2.3-SNAPSHOT ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index c023d2e971a..7c8cc056b7a 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 4.2.2 + 4.2.3-SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index e84b57c85b0..316d2a65e07 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 4.2.2 + 4.2.3-SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index 7e151f6c27f..f69d9cffa32 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ pom openapi-generator-project - 4.2.2 + 4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/R/.openapi-generator/VERSION +++ b/samples/client/petstore/R/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/apex/.openapi-generator/VERSION +++ b/samples/client/petstore/apex/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart-jaguar/flutter_petstore/openapi/.openapi-generator/VERSION b/samples/client/petstore/dart-jaguar/flutter_petstore/openapi/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart-jaguar/flutter_petstore/openapi/.openapi-generator/VERSION +++ b/samples/client/petstore/dart-jaguar/flutter_petstore/openapi/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart-jaguar/flutter_proto_petstore/openapi/.openapi-generator/VERSION b/samples/client/petstore/dart-jaguar/flutter_proto_petstore/openapi/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart-jaguar/flutter_proto_petstore/openapi/.openapi-generator/VERSION +++ b/samples/client/petstore/dart-jaguar/flutter_proto_petstore/openapi/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart-jaguar/openapi/.openapi-generator/VERSION b/samples/client/petstore/dart-jaguar/openapi/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart-jaguar/openapi/.openapi-generator/VERSION +++ b/samples/client/petstore/dart-jaguar/openapi/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart-jaguar/openapi_proto/.openapi-generator/VERSION b/samples/client/petstore/dart-jaguar/openapi_proto/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart-jaguar/openapi_proto/.openapi-generator/VERSION +++ b/samples/client/petstore/dart-jaguar/openapi_proto/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart/flutter_petstore/openapi/.openapi-generator/VERSION b/samples/client/petstore/dart/flutter_petstore/openapi/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart/flutter_petstore/openapi/.openapi-generator/VERSION +++ b/samples/client/petstore/dart/flutter_petstore/openapi/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart/openapi-browser-client/.openapi-generator/VERSION b/samples/client/petstore/dart/openapi-browser-client/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart/openapi-browser-client/.openapi-generator/VERSION +++ b/samples/client/petstore/dart/openapi-browser-client/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart/openapi/.openapi-generator/VERSION b/samples/client/petstore/dart/openapi/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart/openapi/.openapi-generator/VERSION +++ b/samples/client/petstore/dart/openapi/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION b/samples/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/elixir/.openapi-generator/VERSION +++ b/samples/client/petstore/elixir/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION b/samples/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/go/go-petstore-withXml/.openapi-generator/VERSION b/samples/client/petstore/go/go-petstore-withXml/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/go/go-petstore-withXml/.openapi-generator/VERSION +++ b/samples/client/petstore/go/go-petstore-withXml/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/groovy/.openapi-generator/VERSION +++ b/samples/client/petstore/groovy/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION +++ b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/feign/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/feign10x/.openapi-generator/VERSION b/samples/client/petstore/java/feign10x/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/feign10x/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign10x/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/jersey2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/vertx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/java/webclient/.openapi-generator/VERSION +++ b/samples/client/petstore/java/webclient/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-promise/.openapi-generator/VERSION b/samples/client/petstore/javascript-promise/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/javascript-promise/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-promise/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-promise/src/ApiClient.js b/samples/client/petstore/javascript-promise/src/ApiClient.js index 5ed32d74162..43c9aca3bda 100644 --- a/samples/client/petstore/javascript-promise/src/ApiClient.js +++ b/samples/client/petstore/javascript-promise/src/ApiClient.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js b/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js index e1cab3dc284..37f0d0973dd 100644 --- a/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js +++ b/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/api/FakeApi.js b/samples/client/petstore/javascript-promise/src/api/FakeApi.js index 5f84dc1a0f1..04d4c205917 100644 --- a/samples/client/petstore/javascript-promise/src/api/FakeApi.js +++ b/samples/client/petstore/javascript-promise/src/api/FakeApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js b/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js index 06dad5acf8d..b8e5bc1b981 100644 --- a/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js +++ b/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/api/PetApi.js b/samples/client/petstore/javascript-promise/src/api/PetApi.js index 4c8fa82be1c..1b09c0fe759 100644 --- a/samples/client/petstore/javascript-promise/src/api/PetApi.js +++ b/samples/client/petstore/javascript-promise/src/api/PetApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/api/StoreApi.js b/samples/client/petstore/javascript-promise/src/api/StoreApi.js index 0dd16b7a98c..ed089db5d24 100644 --- a/samples/client/petstore/javascript-promise/src/api/StoreApi.js +++ b/samples/client/petstore/javascript-promise/src/api/StoreApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/api/UserApi.js b/samples/client/petstore/javascript-promise/src/api/UserApi.js index 19644a68787..4ba5b133463 100644 --- a/samples/client/petstore/javascript-promise/src/api/UserApi.js +++ b/samples/client/petstore/javascript-promise/src/api/UserApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/index.js b/samples/client/petstore/javascript-promise/src/index.js index 72b249026a9..5d11babba2f 100644 --- a/samples/client/petstore/javascript-promise/src/index.js +++ b/samples/client/petstore/javascript-promise/src/index.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesAnyType.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesAnyType.js index 38da33e7eb7..df5a277629a 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesAnyType.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesAnyType.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesArray.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesArray.js index e2455126d0f..bcf23e2bcfb 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesArray.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesArray.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesBoolean.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesBoolean.js index 03571be9f78..2f340f53211 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesBoolean.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesBoolean.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js index 88e97de80d0..4ac27da9567 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesInteger.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesInteger.js index b07291087df..b4329f50454 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesInteger.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesInteger.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesNumber.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesNumber.js index 16bbc6ea782..604142cb1f5 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesNumber.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesNumber.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesObject.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesObject.js index 768734919e3..4ffd2924031 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesObject.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesObject.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesString.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesString.js index 0855af4b940..7d5fdbe8d2e 100644 --- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesString.js +++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesString.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Animal.js b/samples/client/petstore/javascript-promise/src/model/Animal.js index e5c94d4290d..4be15174e96 100644 --- a/samples/client/petstore/javascript-promise/src/model/Animal.js +++ b/samples/client/petstore/javascript-promise/src/model/Animal.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ApiResponse.js b/samples/client/petstore/javascript-promise/src/model/ApiResponse.js index 7af8361eae8..83a0d857e09 100644 --- a/samples/client/petstore/javascript-promise/src/model/ApiResponse.js +++ b/samples/client/petstore/javascript-promise/src/model/ApiResponse.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js b/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js index fb8aaabd121..a34978f5668 100644 --- a/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js +++ b/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js b/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js index f42d093575b..38ea2d1fa16 100644 --- a/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js +++ b/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ArrayTest.js b/samples/client/petstore/javascript-promise/src/model/ArrayTest.js index cda64c2809f..37893f200a1 100644 --- a/samples/client/petstore/javascript-promise/src/model/ArrayTest.js +++ b/samples/client/petstore/javascript-promise/src/model/ArrayTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Capitalization.js b/samples/client/petstore/javascript-promise/src/model/Capitalization.js index 75ff089dcff..378b6873e80 100644 --- a/samples/client/petstore/javascript-promise/src/model/Capitalization.js +++ b/samples/client/petstore/javascript-promise/src/model/Capitalization.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Cat.js b/samples/client/petstore/javascript-promise/src/model/Cat.js index 47babecf174..7f824c0d25c 100644 --- a/samples/client/petstore/javascript-promise/src/model/Cat.js +++ b/samples/client/petstore/javascript-promise/src/model/Cat.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/CatAllOf.js b/samples/client/petstore/javascript-promise/src/model/CatAllOf.js index dd02a9b9b2e..3499a27d2ed 100644 --- a/samples/client/petstore/javascript-promise/src/model/CatAllOf.js +++ b/samples/client/petstore/javascript-promise/src/model/CatAllOf.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Category.js b/samples/client/petstore/javascript-promise/src/model/Category.js index f0d44a82a67..842101aa4ee 100644 --- a/samples/client/petstore/javascript-promise/src/model/Category.js +++ b/samples/client/petstore/javascript-promise/src/model/Category.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ClassModel.js b/samples/client/petstore/javascript-promise/src/model/ClassModel.js index 8847a9b2c5a..f3a243eec4f 100644 --- a/samples/client/petstore/javascript-promise/src/model/ClassModel.js +++ b/samples/client/petstore/javascript-promise/src/model/ClassModel.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Client.js b/samples/client/petstore/javascript-promise/src/model/Client.js index 9956c61b7ae..1e2764c2eae 100644 --- a/samples/client/petstore/javascript-promise/src/model/Client.js +++ b/samples/client/petstore/javascript-promise/src/model/Client.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Dog.js b/samples/client/petstore/javascript-promise/src/model/Dog.js index d94a0b1c980..35832ed30e8 100644 --- a/samples/client/petstore/javascript-promise/src/model/Dog.js +++ b/samples/client/petstore/javascript-promise/src/model/Dog.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/DogAllOf.js b/samples/client/petstore/javascript-promise/src/model/DogAllOf.js index dc1aa5ed293..6abe4888ff7 100644 --- a/samples/client/petstore/javascript-promise/src/model/DogAllOf.js +++ b/samples/client/petstore/javascript-promise/src/model/DogAllOf.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/EnumArrays.js b/samples/client/petstore/javascript-promise/src/model/EnumArrays.js index 80c4755cd61..365c5f81565 100644 --- a/samples/client/petstore/javascript-promise/src/model/EnumArrays.js +++ b/samples/client/petstore/javascript-promise/src/model/EnumArrays.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/EnumClass.js b/samples/client/petstore/javascript-promise/src/model/EnumClass.js index 702e4dd07b2..1a0ae2a74b9 100644 --- a/samples/client/petstore/javascript-promise/src/model/EnumClass.js +++ b/samples/client/petstore/javascript-promise/src/model/EnumClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/EnumTest.js b/samples/client/petstore/javascript-promise/src/model/EnumTest.js index 8c375962f90..0ef7864fc17 100644 --- a/samples/client/petstore/javascript-promise/src/model/EnumTest.js +++ b/samples/client/petstore/javascript-promise/src/model/EnumTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/File.js b/samples/client/petstore/javascript-promise/src/model/File.js index 5592c40b065..efd59ff9e1e 100644 --- a/samples/client/petstore/javascript-promise/src/model/File.js +++ b/samples/client/petstore/javascript-promise/src/model/File.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/FileSchemaTestClass.js b/samples/client/petstore/javascript-promise/src/model/FileSchemaTestClass.js index 2de72769207..ba98e4c0fbb 100644 --- a/samples/client/petstore/javascript-promise/src/model/FileSchemaTestClass.js +++ b/samples/client/petstore/javascript-promise/src/model/FileSchemaTestClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/FormatTest.js b/samples/client/petstore/javascript-promise/src/model/FormatTest.js index c58f2cc25db..916f11747cb 100644 --- a/samples/client/petstore/javascript-promise/src/model/FormatTest.js +++ b/samples/client/petstore/javascript-promise/src/model/FormatTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js b/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js index 8b84421e67c..06c1c09c55d 100644 --- a/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js +++ b/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/List.js b/samples/client/petstore/javascript-promise/src/model/List.js index 9e2e23efd4c..cbabfb587b6 100644 --- a/samples/client/petstore/javascript-promise/src/model/List.js +++ b/samples/client/petstore/javascript-promise/src/model/List.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/MapTest.js b/samples/client/petstore/javascript-promise/src/model/MapTest.js index de4e75e1c91..57531d40495 100644 --- a/samples/client/petstore/javascript-promise/src/model/MapTest.js +++ b/samples/client/petstore/javascript-promise/src/model/MapTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js b/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js index 506ad13b1cc..9b9c374afc5 100644 --- a/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js +++ b/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Model200Response.js b/samples/client/petstore/javascript-promise/src/model/Model200Response.js index 826170b8fcc..fc1f28f7c94 100644 --- a/samples/client/petstore/javascript-promise/src/model/Model200Response.js +++ b/samples/client/petstore/javascript-promise/src/model/Model200Response.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ModelReturn.js b/samples/client/petstore/javascript-promise/src/model/ModelReturn.js index 443773d1b35..b5cd39da7c1 100644 --- a/samples/client/petstore/javascript-promise/src/model/ModelReturn.js +++ b/samples/client/petstore/javascript-promise/src/model/ModelReturn.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Name.js b/samples/client/petstore/javascript-promise/src/model/Name.js index fe355dfa3a7..621141d180a 100644 --- a/samples/client/petstore/javascript-promise/src/model/Name.js +++ b/samples/client/petstore/javascript-promise/src/model/Name.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/NumberOnly.js b/samples/client/petstore/javascript-promise/src/model/NumberOnly.js index 382b2fa6187..4089eb2fc05 100644 --- a/samples/client/petstore/javascript-promise/src/model/NumberOnly.js +++ b/samples/client/petstore/javascript-promise/src/model/NumberOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Order.js b/samples/client/petstore/javascript-promise/src/model/Order.js index 34d4ec91be0..296e90d3aad 100644 --- a/samples/client/petstore/javascript-promise/src/model/Order.js +++ b/samples/client/petstore/javascript-promise/src/model/Order.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/OuterComposite.js b/samples/client/petstore/javascript-promise/src/model/OuterComposite.js index ef52343c591..b2da62e58f7 100644 --- a/samples/client/petstore/javascript-promise/src/model/OuterComposite.js +++ b/samples/client/petstore/javascript-promise/src/model/OuterComposite.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/OuterEnum.js b/samples/client/petstore/javascript-promise/src/model/OuterEnum.js index 74d7d2b002a..b8d1a45baa2 100644 --- a/samples/client/petstore/javascript-promise/src/model/OuterEnum.js +++ b/samples/client/petstore/javascript-promise/src/model/OuterEnum.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Pet.js b/samples/client/petstore/javascript-promise/src/model/Pet.js index 4cfce301952..6b66e4df112 100644 --- a/samples/client/petstore/javascript-promise/src/model/Pet.js +++ b/samples/client/petstore/javascript-promise/src/model/Pet.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js b/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js index 81f26b35718..3ca619f61cf 100644 --- a/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js +++ b/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js b/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js index 9ffc2633bbb..edd5132bf7c 100644 --- a/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js +++ b/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/Tag.js b/samples/client/petstore/javascript-promise/src/model/Tag.js index a1e1bd91beb..d5830041fbc 100644 --- a/samples/client/petstore/javascript-promise/src/model/Tag.js +++ b/samples/client/petstore/javascript-promise/src/model/Tag.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/TypeHolderDefault.js b/samples/client/petstore/javascript-promise/src/model/TypeHolderDefault.js index d7e8aebe352..9ea895a16d9 100644 --- a/samples/client/petstore/javascript-promise/src/model/TypeHolderDefault.js +++ b/samples/client/petstore/javascript-promise/src/model/TypeHolderDefault.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/TypeHolderExample.js b/samples/client/petstore/javascript-promise/src/model/TypeHolderExample.js index 287716ca8d1..68493abc9f9 100644 --- a/samples/client/petstore/javascript-promise/src/model/TypeHolderExample.js +++ b/samples/client/petstore/javascript-promise/src/model/TypeHolderExample.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/User.js b/samples/client/petstore/javascript-promise/src/model/User.js index 5aa2a6ff486..f8cac008ae8 100644 --- a/samples/client/petstore/javascript-promise/src/model/User.js +++ b/samples/client/petstore/javascript-promise/src/model/User.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript-promise/src/model/XmlItem.js b/samples/client/petstore/javascript-promise/src/model/XmlItem.js index 8f9fa0bd94d..45f72bde59a 100644 --- a/samples/client/petstore/javascript-promise/src/model/XmlItem.js +++ b/samples/client/petstore/javascript-promise/src/model/XmlItem.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/.openapi-generator/VERSION b/samples/client/petstore/javascript/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/javascript/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript/src/ApiClient.js b/samples/client/petstore/javascript/src/ApiClient.js index 14f12b03497..976a202f197 100644 --- a/samples/client/petstore/javascript/src/ApiClient.js +++ b/samples/client/petstore/javascript/src/ApiClient.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/api/AnotherFakeApi.js b/samples/client/petstore/javascript/src/api/AnotherFakeApi.js index c88c91661ea..9324ee9feff 100644 --- a/samples/client/petstore/javascript/src/api/AnotherFakeApi.js +++ b/samples/client/petstore/javascript/src/api/AnotherFakeApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/api/FakeApi.js b/samples/client/petstore/javascript/src/api/FakeApi.js index c6e34bfc9cc..9d52b63daa5 100644 --- a/samples/client/petstore/javascript/src/api/FakeApi.js +++ b/samples/client/petstore/javascript/src/api/FakeApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js b/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js index e9eb1e0ed62..190d82706a0 100644 --- a/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js +++ b/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/api/PetApi.js b/samples/client/petstore/javascript/src/api/PetApi.js index 2cd90b9b342..b8adb41cc32 100644 --- a/samples/client/petstore/javascript/src/api/PetApi.js +++ b/samples/client/petstore/javascript/src/api/PetApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/api/StoreApi.js b/samples/client/petstore/javascript/src/api/StoreApi.js index bb528a06663..8cb64079320 100644 --- a/samples/client/petstore/javascript/src/api/StoreApi.js +++ b/samples/client/petstore/javascript/src/api/StoreApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/api/UserApi.js b/samples/client/petstore/javascript/src/api/UserApi.js index 6e211bab88c..c2ac89edc17 100644 --- a/samples/client/petstore/javascript/src/api/UserApi.js +++ b/samples/client/petstore/javascript/src/api/UserApi.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/index.js b/samples/client/petstore/javascript/src/index.js index 72b249026a9..5d11babba2f 100644 --- a/samples/client/petstore/javascript/src/index.js +++ b/samples/client/petstore/javascript/src/index.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesAnyType.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesAnyType.js index 38da33e7eb7..df5a277629a 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesAnyType.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesAnyType.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesArray.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesArray.js index e2455126d0f..bcf23e2bcfb 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesArray.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesArray.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesBoolean.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesBoolean.js index 03571be9f78..2f340f53211 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesBoolean.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesBoolean.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js index 88e97de80d0..4ac27da9567 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesInteger.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesInteger.js index b07291087df..b4329f50454 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesInteger.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesInteger.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesNumber.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesNumber.js index 16bbc6ea782..604142cb1f5 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesNumber.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesNumber.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesObject.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesObject.js index 768734919e3..4ffd2924031 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesObject.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesObject.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesString.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesString.js index 0855af4b940..7d5fdbe8d2e 100644 --- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesString.js +++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesString.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Animal.js b/samples/client/petstore/javascript/src/model/Animal.js index e5c94d4290d..4be15174e96 100644 --- a/samples/client/petstore/javascript/src/model/Animal.js +++ b/samples/client/petstore/javascript/src/model/Animal.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ApiResponse.js b/samples/client/petstore/javascript/src/model/ApiResponse.js index 7af8361eae8..83a0d857e09 100644 --- a/samples/client/petstore/javascript/src/model/ApiResponse.js +++ b/samples/client/petstore/javascript/src/model/ApiResponse.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js b/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js index fb8aaabd121..a34978f5668 100644 --- a/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js +++ b/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js b/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js index f42d093575b..38ea2d1fa16 100644 --- a/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js +++ b/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ArrayTest.js b/samples/client/petstore/javascript/src/model/ArrayTest.js index cda64c2809f..37893f200a1 100644 --- a/samples/client/petstore/javascript/src/model/ArrayTest.js +++ b/samples/client/petstore/javascript/src/model/ArrayTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Capitalization.js b/samples/client/petstore/javascript/src/model/Capitalization.js index 75ff089dcff..378b6873e80 100644 --- a/samples/client/petstore/javascript/src/model/Capitalization.js +++ b/samples/client/petstore/javascript/src/model/Capitalization.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Cat.js b/samples/client/petstore/javascript/src/model/Cat.js index 47babecf174..7f824c0d25c 100644 --- a/samples/client/petstore/javascript/src/model/Cat.js +++ b/samples/client/petstore/javascript/src/model/Cat.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/CatAllOf.js b/samples/client/petstore/javascript/src/model/CatAllOf.js index dd02a9b9b2e..3499a27d2ed 100644 --- a/samples/client/petstore/javascript/src/model/CatAllOf.js +++ b/samples/client/petstore/javascript/src/model/CatAllOf.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Category.js b/samples/client/petstore/javascript/src/model/Category.js index f0d44a82a67..842101aa4ee 100644 --- a/samples/client/petstore/javascript/src/model/Category.js +++ b/samples/client/petstore/javascript/src/model/Category.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ClassModel.js b/samples/client/petstore/javascript/src/model/ClassModel.js index 8847a9b2c5a..f3a243eec4f 100644 --- a/samples/client/petstore/javascript/src/model/ClassModel.js +++ b/samples/client/petstore/javascript/src/model/ClassModel.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Client.js b/samples/client/petstore/javascript/src/model/Client.js index 9956c61b7ae..1e2764c2eae 100644 --- a/samples/client/petstore/javascript/src/model/Client.js +++ b/samples/client/petstore/javascript/src/model/Client.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Dog.js b/samples/client/petstore/javascript/src/model/Dog.js index d94a0b1c980..35832ed30e8 100644 --- a/samples/client/petstore/javascript/src/model/Dog.js +++ b/samples/client/petstore/javascript/src/model/Dog.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/DogAllOf.js b/samples/client/petstore/javascript/src/model/DogAllOf.js index dc1aa5ed293..6abe4888ff7 100644 --- a/samples/client/petstore/javascript/src/model/DogAllOf.js +++ b/samples/client/petstore/javascript/src/model/DogAllOf.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/EnumArrays.js b/samples/client/petstore/javascript/src/model/EnumArrays.js index 80c4755cd61..365c5f81565 100644 --- a/samples/client/petstore/javascript/src/model/EnumArrays.js +++ b/samples/client/petstore/javascript/src/model/EnumArrays.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/EnumClass.js b/samples/client/petstore/javascript/src/model/EnumClass.js index 702e4dd07b2..1a0ae2a74b9 100644 --- a/samples/client/petstore/javascript/src/model/EnumClass.js +++ b/samples/client/petstore/javascript/src/model/EnumClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/EnumTest.js b/samples/client/petstore/javascript/src/model/EnumTest.js index 8c375962f90..0ef7864fc17 100644 --- a/samples/client/petstore/javascript/src/model/EnumTest.js +++ b/samples/client/petstore/javascript/src/model/EnumTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/File.js b/samples/client/petstore/javascript/src/model/File.js index 5592c40b065..efd59ff9e1e 100644 --- a/samples/client/petstore/javascript/src/model/File.js +++ b/samples/client/petstore/javascript/src/model/File.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/FileSchemaTestClass.js b/samples/client/petstore/javascript/src/model/FileSchemaTestClass.js index 2de72769207..ba98e4c0fbb 100644 --- a/samples/client/petstore/javascript/src/model/FileSchemaTestClass.js +++ b/samples/client/petstore/javascript/src/model/FileSchemaTestClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/FormatTest.js b/samples/client/petstore/javascript/src/model/FormatTest.js index c58f2cc25db..916f11747cb 100644 --- a/samples/client/petstore/javascript/src/model/FormatTest.js +++ b/samples/client/petstore/javascript/src/model/FormatTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js b/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js index 8b84421e67c..06c1c09c55d 100644 --- a/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js +++ b/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/List.js b/samples/client/petstore/javascript/src/model/List.js index 9e2e23efd4c..cbabfb587b6 100644 --- a/samples/client/petstore/javascript/src/model/List.js +++ b/samples/client/petstore/javascript/src/model/List.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/MapTest.js b/samples/client/petstore/javascript/src/model/MapTest.js index de4e75e1c91..57531d40495 100644 --- a/samples/client/petstore/javascript/src/model/MapTest.js +++ b/samples/client/petstore/javascript/src/model/MapTest.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js b/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js index 506ad13b1cc..9b9c374afc5 100644 --- a/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js +++ b/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Model200Response.js b/samples/client/petstore/javascript/src/model/Model200Response.js index 826170b8fcc..fc1f28f7c94 100644 --- a/samples/client/petstore/javascript/src/model/Model200Response.js +++ b/samples/client/petstore/javascript/src/model/Model200Response.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ModelReturn.js b/samples/client/petstore/javascript/src/model/ModelReturn.js index 443773d1b35..b5cd39da7c1 100644 --- a/samples/client/petstore/javascript/src/model/ModelReturn.js +++ b/samples/client/petstore/javascript/src/model/ModelReturn.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Name.js b/samples/client/petstore/javascript/src/model/Name.js index fe355dfa3a7..621141d180a 100644 --- a/samples/client/petstore/javascript/src/model/Name.js +++ b/samples/client/petstore/javascript/src/model/Name.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/NumberOnly.js b/samples/client/petstore/javascript/src/model/NumberOnly.js index 382b2fa6187..4089eb2fc05 100644 --- a/samples/client/petstore/javascript/src/model/NumberOnly.js +++ b/samples/client/petstore/javascript/src/model/NumberOnly.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Order.js b/samples/client/petstore/javascript/src/model/Order.js index 34d4ec91be0..296e90d3aad 100644 --- a/samples/client/petstore/javascript/src/model/Order.js +++ b/samples/client/petstore/javascript/src/model/Order.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/OuterComposite.js b/samples/client/petstore/javascript/src/model/OuterComposite.js index ef52343c591..b2da62e58f7 100644 --- a/samples/client/petstore/javascript/src/model/OuterComposite.js +++ b/samples/client/petstore/javascript/src/model/OuterComposite.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/OuterEnum.js b/samples/client/petstore/javascript/src/model/OuterEnum.js index 74d7d2b002a..b8d1a45baa2 100644 --- a/samples/client/petstore/javascript/src/model/OuterEnum.js +++ b/samples/client/petstore/javascript/src/model/OuterEnum.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Pet.js b/samples/client/petstore/javascript/src/model/Pet.js index 4cfce301952..6b66e4df112 100644 --- a/samples/client/petstore/javascript/src/model/Pet.js +++ b/samples/client/petstore/javascript/src/model/Pet.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js b/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js index 81f26b35718..3ca619f61cf 100644 --- a/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js +++ b/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/SpecialModelName.js b/samples/client/petstore/javascript/src/model/SpecialModelName.js index 9ffc2633bbb..edd5132bf7c 100644 --- a/samples/client/petstore/javascript/src/model/SpecialModelName.js +++ b/samples/client/petstore/javascript/src/model/SpecialModelName.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/Tag.js b/samples/client/petstore/javascript/src/model/Tag.js index a1e1bd91beb..d5830041fbc 100644 --- a/samples/client/petstore/javascript/src/model/Tag.js +++ b/samples/client/petstore/javascript/src/model/Tag.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/TypeHolderDefault.js b/samples/client/petstore/javascript/src/model/TypeHolderDefault.js index d7e8aebe352..9ea895a16d9 100644 --- a/samples/client/petstore/javascript/src/model/TypeHolderDefault.js +++ b/samples/client/petstore/javascript/src/model/TypeHolderDefault.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/TypeHolderExample.js b/samples/client/petstore/javascript/src/model/TypeHolderExample.js index 287716ca8d1..68493abc9f9 100644 --- a/samples/client/petstore/javascript/src/model/TypeHolderExample.js +++ b/samples/client/petstore/javascript/src/model/TypeHolderExample.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/User.js b/samples/client/petstore/javascript/src/model/User.js index 5aa2a6ff486..f8cac008ae8 100644 --- a/samples/client/petstore/javascript/src/model/User.js +++ b/samples/client/petstore/javascript/src/model/User.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/javascript/src/model/XmlItem.js b/samples/client/petstore/javascript/src/model/XmlItem.js index 8f9fa0bd94d..45f72bde59a 100644 --- a/samples/client/petstore/javascript/src/model/XmlItem.js +++ b/samples/client/petstore/javascript/src/model/XmlItem.js @@ -7,7 +7,7 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT * * Do not edit the class manually. * diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/kotlin/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/nim/.openapi-generator/VERSION +++ b/samples/client/petstore/nim/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/perl/.openapi-generator/VERSION +++ b/samples/client/petstore/perl/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 81447d46de0..4d01e48008b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 65b340c06de..527f71a9497 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 0dc5a176ab7..249310a4c93 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 352dab5b18f..d51e1eb0d67 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 293efdc7266..0c303fc86eb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 9c11a408c4f..fa9839fa21d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php index 117bce9c585..a5d27da5216 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php index 43dc799a33c..8d717aa7d1d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php index 939b655919e..b8b298ec95c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesAnyType.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesAnyType.php index 15a7be98c77..e4d571b24c5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesAnyType.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesAnyType.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesArray.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesArray.php index fdadd2c9d15..ee956c9c400 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesArray.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesArray.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesBoolean.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesBoolean.php index f5b202afa58..285bf78d9bd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesBoolean.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesBoolean.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 3f0af965342..00d80b9d196 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesInteger.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesInteger.php index a81d6410a3e..f686e951a5d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesInteger.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesInteger.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesNumber.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesNumber.php index 4bee65fb350..3145ceedac7 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesNumber.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesNumber.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesObject.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesObject.php index 2765809149a..7dda54f006a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesObject.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesObject.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesString.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesString.php index e149a42d88c..02088d036fb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesString.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesString.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 1c17d0f1971..67098da3119 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 d18b28a6882..09a4846bc1c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 2af78f016d6..6d5fd483398 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 6fc5f43ce8b..315eb1db9fe 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 b17a7e339d8..abac4162ecd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 86fd5e94015..a4d19d80e56 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 dea6d5bdb3c..4749c3c3b77 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 2a7b43cd5c7..76ac31a6ce5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 ff515524035..3312f0f0d24 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 23c5811d614..6589e7fcb7d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 f23a17dc397..283bf291d5d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 e2d6a72e72e..4df6ae069ad 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 70ae6305837..c5abdae2cdb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 d35c1a77bec..5551d5f3918 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 5dd40c5843c..51386d76f5c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 7caec1e0873..b96f3e8b3fe 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 11656ba9047..4b62356a9df 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 22df4655247..5ba5dd23363 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 ecb60fad201..8c3143ada5f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 7cea76352b3..ff43bdd9d07 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 fd3f72c2c07..d564698e571 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 8aade6c31c7..1ec33086309 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 34b6f42ec00..eed4359240e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 f1c918ae93d..367c62d758c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 798fc201901..3d002303208 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 c4c8137325b..97ce87ab23a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 26ecbafe92b..a5e6593bb58 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 5040769f7ed..7f503f8e1b6 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 61c15523b87..322fe579d27 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 11f647244d8..dcfbd3f32ec 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 4bed81edc5e..605b3b81143 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 f884a6c45b2..7d6d3f9fb96 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 7dffb61909f..b0250ebc944 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 2c246804367..5c3a2738e5e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 daee02ad618..1ed059c5fca 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderDefault.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderDefault.php index a10974515bf..9c54f883a68 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderDefault.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderDefault.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderExample.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderExample.php index 442e363161c..b3f98f4d4fb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderExample.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/TypeHolderExample.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-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 b470eedbb0c..164c961c62f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/XmlItem.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/XmlItem.php index 0f639bf4ec5..a7f46bc1aee 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/XmlItem.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/XmlItem.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 3569ce8ce4c..bfef9214b24 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php index ab89c4f35ab..ce85cec9e2e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php index 6984b377d4b..3ecd7297826 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php index e2ac708020a..214b8ce7259 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php index 208e9d9790b..2a70110f17c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php index a549ea5ec21..f765b857ae1 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php index 7638bcee43e..01ae63544fc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesAnyTypeTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesAnyTypeTest.php index a0b5c82e8dd..2a0cc6732d5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesAnyTypeTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesAnyTypeTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesArrayTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesArrayTest.php index ac7b8d271b8..74fed7cda2e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesArrayTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesArrayTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesBooleanTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesBooleanTest.php index b9f7749887d..3b192f7f85c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesBooleanTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesBooleanTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php index 0b6765a8c2d..7afc060742c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesIntegerTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesIntegerTest.php index 2e4e5d042f0..5dae6224777 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesIntegerTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesIntegerTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesNumberTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesNumberTest.php index dd217c41201..64867fff7bd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesNumberTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesNumberTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesObjectTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesObjectTest.php index 938621c40c8..cf9fda9760b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesObjectTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesObjectTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesStringTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesStringTest.php index b65996909e7..36503caa088 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesStringTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesStringTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php index a977230e649..c25557aa577 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php index 64a9fd7f5b8..2d069f1de55 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php index 609fd6bc82c..d643efed3a3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php index eb2a1beac40..1ab68bc40d9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php index e15952d3ec4..e1d79212dcc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php index e7899601d5f..fcf4308ed8a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php index dc155a8c518..38559302212 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php index b0b70c6f469..3a144dba1a4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php index a0a65230928..9d168f8d4e6 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php index a2d11bd5c6a..a39548a6409 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php index 1bf5c9784f4..db41a35c9d2 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php index 105b25c0c1e..403296a6a45 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php index c2feac7e9c4..f884d4fc5be 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php index 7fa055e30d1..5476cceb764 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php index aed1d9152c0..a3eaf99a83e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php index f9cca780c4d..0de943aaaa4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php index b40874310ba..1cba4df143f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php index 93345276329..92f15d43b27 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php index 28c29fb188a..015e1771af3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php index b15568155b7..cce87b2ec04 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php index b6218c19dda..12a929dfa9b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php index 639d5cd6c07..59da46ce7d8 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php index 9f1b706799b..62bd5c66efd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php index b4097764830..1e3510d248a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php index 28b6bd56977..1701b7dc59e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php index 1ecb603e451..1f9baaaf0b5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php index 3e3a7555afd..436b00ab29f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php index 9431da1a8a7..364e959a6c3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php index 3857a7d7094..3fd37255542 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php index a7138baa010..946c170690d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php index 624f07be2ed..4618db290e3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php index 70f93213630..64725b333d7 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php index dcb2a97be8f..8815c98e3d4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php index 80689bacd3c..4ce6d2d69b8 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderDefaultTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderDefaultTest.php index 5e71e71144f..cd0fe043d64 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderDefaultTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderDefaultTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderExampleTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderExampleTest.php index 99b5c3957d8..f4cb44d43ba 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderExampleTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TypeHolderExampleTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php index eed37552038..96f3aa0bd6f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/XmlItemTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/XmlItemTest.php index ece108c76bc..a32c8b368ab 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/XmlItemTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/XmlItemTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION +++ b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-experimental/.openapi-generator/VERSION b/samples/client/petstore/python-experimental/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/python-experimental/.openapi-generator/VERSION +++ b/samples/client/petstore/python-experimental/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/python-tornado/.openapi-generator/VERSION +++ b/samples/client/petstore/python-tornado/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/python/.openapi-generator/VERSION +++ b/samples/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 6d0a1fac431..d2f2aba6aef 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 dc40e495c47..40f75e95441 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 05bbf6cad8c..7a54c3dffba 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 4be59b9eef3..f8d9f449821 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0fa7d40978f..58768a8bfbe 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 e2aefedcf2a..d6490fc7f07 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 58b218c98b6..deef3183aad 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5acc85052c4..f69964f541e 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 04178660bec..5a03031bbd1 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 12f77058d78..cf3100392fe 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_any_type.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_any_type.rb index d7d7340f096..d19e436f005 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_any_type.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_any_type.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_array.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_array.rb index 8fc7ed8ad91..9d92cf0e7b5 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_array.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_array.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_boolean.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_boolean.rb index 1410f967792..06e7a91ccca 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_boolean.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_boolean.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 9e3a1837ace..b5b661c1dde 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_integer.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_integer.rb index e6404db2312..5d18cf33851 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_integer.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_number.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_number.rb index 893fe25c065..1b7259617ee 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_number.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_number.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_object.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_object.rb index 4ef83181dfa..989ed41e55a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_object.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_object.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_string.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_string.rb index c9a50c4f10a..2b3c98bade6 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_string.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_string.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 25cbc7b742c..62a7577498f 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3600ae34cd2..ecf18c3ecd3 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 fb33d3e9b57..b42e908927a 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5ca723e8110..b88654a789e 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 a31601722b1..e73514d04bf 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0135ab0c40b..0fb15209122 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 98cab5963f0..6ab61d896b3 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 fdd6f2cdc8e..c87234dd571 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 b6ad7ebea2f..5a4720e35a4 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 b50a4fc2d89..a18ea447053 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 55af4a8cac7..3bfa56a9570 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 85edd3bd814..65e4e65cf30 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 7d6c50066be..79b302a7b87 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 2f98f3fc85e..6c33da61330 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 a52246252a8..770ebd95b12 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 ab8b84e5528..0a373e9e3b3 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 9c0a97cf00f..a65ed1e8e4c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 26c4d5f2ee8..8bbe17c24d9 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 f671aaa29c5..38ba37152f6 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 58088368e78..92dbd7130f6 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 ae353b1db84..cfb8129bd8b 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5d52cd34c8b..653a715b62a 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5f03b1516dc..4a49bc63a7e 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 626652bd5ce..cebec7dee59 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 323dd4eef24..24a51ce4192 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 d70454f06a4..b69966dea0f 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3218db6b933..462dcf44902 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 29034f73fa9..37f7f5a876c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 870903da8fd..60f65d02902 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 4f63718a5ae..4c1bac4c15c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 81e278f0b5a..c97f916baa7 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 8a7755e39aa..8e1f956d879 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0370f7a77f4..5504258a961 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3d55f29c95f..6a5520d0de4 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_default.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_default.rb index b510ab9add6..0caddf62ea1 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_default.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_example.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_example.rb index 4555424d9d5..f62a2c323a6 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_example.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/type_holder_example.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0aab2d1bfa0..6f0b8018995 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/xml_item.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/xml_item.rb index f33f8093a78..eb81cb936ea 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/xml_item.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/xml_item.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 61c3e10bdfb..9ac54f6bd6d 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/petstore.gemspec b/samples/client/petstore/ruby-faraday/petstore.gemspec index c5c127d7de3..b1de9d3ad38 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/.openapi-generator/VERSION b/samples/client/petstore/ruby/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/ruby/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 6d0a1fac431..d2f2aba6aef 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 dc40e495c47..40f75e95441 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 05bbf6cad8c..7a54c3dffba 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 4be59b9eef3..f8d9f449821 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0fa7d40978f..58768a8bfbe 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 e2aefedcf2a..d6490fc7f07 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 58b218c98b6..deef3183aad 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3222b140cfb..9c3307af58c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 04178660bec..5a03031bbd1 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index 37b6956bdfa..4728897dc8e 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_any_type.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_any_type.rb index d7d7340f096..d19e436f005 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_any_type.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_any_type.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_array.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_array.rb index 8fc7ed8ad91..9d92cf0e7b5 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_array.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_array.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_boolean.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_boolean.rb index 1410f967792..06e7a91ccca 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_boolean.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_boolean.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 9e3a1837ace..b5b661c1dde 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_integer.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_integer.rb index e6404db2312..5d18cf33851 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_integer.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_number.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_number.rb index 893fe25c065..1b7259617ee 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_number.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_number.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_object.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_object.rb index 4ef83181dfa..989ed41e55a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_object.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_object.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_string.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_string.rb index c9a50c4f10a..2b3c98bade6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_string.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_string.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 25cbc7b742c..62a7577498f 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3600ae34cd2..ecf18c3ecd3 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 fb33d3e9b57..b42e908927a 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5ca723e8110..b88654a789e 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 a31601722b1..e73514d04bf 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0135ab0c40b..0fb15209122 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 98cab5963f0..6ab61d896b3 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 fdd6f2cdc8e..c87234dd571 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 b6ad7ebea2f..5a4720e35a4 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 b50a4fc2d89..a18ea447053 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 55af4a8cac7..3bfa56a9570 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 85edd3bd814..65e4e65cf30 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 7d6c50066be..79b302a7b87 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 2f98f3fc85e..6c33da61330 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 a52246252a8..770ebd95b12 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 ab8b84e5528..0a373e9e3b3 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 9c0a97cf00f..a65ed1e8e4c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 26c4d5f2ee8..8bbe17c24d9 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 f671aaa29c5..38ba37152f6 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 58088368e78..92dbd7130f6 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 ae353b1db84..cfb8129bd8b 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5d52cd34c8b..653a715b62a 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 5f03b1516dc..4a49bc63a7e 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 626652bd5ce..cebec7dee59 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 323dd4eef24..24a51ce4192 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 d70454f06a4..b69966dea0f 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3218db6b933..462dcf44902 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 29034f73fa9..37f7f5a876c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 870903da8fd..60f65d02902 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 4f63718a5ae..4c1bac4c15c 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 81e278f0b5a..c97f916baa7 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 8a7755e39aa..8e1f956d879 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0370f7a77f4..5504258a961 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 3d55f29c95f..6a5520d0de4 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/type_holder_default.rb b/samples/client/petstore/ruby/lib/petstore/models/type_holder_default.rb index b510ab9add6..0caddf62ea1 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/type_holder_default.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/type_holder_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/type_holder_example.rb b/samples/client/petstore/ruby/lib/petstore/models/type_holder_example.rb index 4555424d9d5..f62a2c323a6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/type_holder_example.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/type_holder_example.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 0aab2d1bfa0..6f0b8018995 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/xml_item.rb b/samples/client/petstore/ruby/lib/petstore/models/xml_item.rb index f33f8093a78..eb81cb936ea 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/xml_item.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/xml_item.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/version.rb b/samples/client/petstore/ruby/lib/petstore/version.rb index 61c3e10bdfb..9ac54f6bd6d 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/petstore.gemspec b/samples/client/petstore/ruby/petstore.gemspec index c97eb69bda5..ff7f4350dc9 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api/another_fake_api_spec.rb b/samples/client/petstore/ruby/spec/api/another_fake_api_spec.rb index 59a26071715..1acaee0d2d1 100644 --- a/samples/client/petstore/ruby/spec/api/another_fake_api_spec.rb +++ b/samples/client/petstore/ruby/spec/api/another_fake_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api/fake_api_spec.rb b/samples/client/petstore/ruby/spec/api/fake_api_spec.rb index 0ec391bcf1d..beb7fe3218f 100644 --- a/samples/client/petstore/ruby/spec/api/fake_api_spec.rb +++ b/samples/client/petstore/ruby/spec/api/fake_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb b/samples/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb index 7166a8111c9..f2043b09c3c 100644 --- a/samples/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb +++ b/samples/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api/pet_api_spec.rb b/samples/client/petstore/ruby/spec/api/pet_api_spec.rb index 9c20c8e2291..b302bea8660 100644 --- a/samples/client/petstore/ruby/spec/api/pet_api_spec.rb +++ b/samples/client/petstore/ruby/spec/api/pet_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api/store_api_spec.rb b/samples/client/petstore/ruby/spec/api/store_api_spec.rb index 04a32fdc090..0060a4a7bf4 100644 --- a/samples/client/petstore/ruby/spec/api/store_api_spec.rb +++ b/samples/client/petstore/ruby/spec/api/store_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api/user_api_spec.rb b/samples/client/petstore/ruby/spec/api/user_api_spec.rb index 3640eae75cc..b12a7275f7d 100644 --- a/samples/client/petstore/ruby/spec/api/user_api_spec.rb +++ b/samples/client/petstore/ruby/spec/api/user_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-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 71f592ccb61..9227c3a10a8 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/configuration_spec.rb b/samples/client/petstore/ruby/spec/configuration_spec.rb index cccf88382e4..b720bc3a310 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_any_type_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_any_type_spec.rb index b8ef19d1087..f28cc99c600 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_any_type_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_any_type_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_array_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_array_spec.rb index 2aa17c640e0..c2843ce8b69 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_array_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_array_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_boolean_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_boolean_spec.rb index b3765451fe5..58ab288b552 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_boolean_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_boolean_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_class_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_class_spec.rb index 599930754dd..b368094f6cb 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_class_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_integer_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_integer_spec.rb index 2323ec80bc2..4735b409238 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_integer_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_integer_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_number_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_number_spec.rb index 57f414aa489..77d2ae1cf82 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_number_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_number_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_object_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_object_spec.rb index bbc4a66c6ff..6fc5ca1d992 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_object_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_object_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/additional_properties_string_spec.rb b/samples/client/petstore/ruby/spec/models/additional_properties_string_spec.rb index 3ec9f08eaf4..80bef0711e1 100644 --- a/samples/client/petstore/ruby/spec/models/additional_properties_string_spec.rb +++ b/samples/client/petstore/ruby/spec/models/additional_properties_string_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/animal_spec.rb b/samples/client/petstore/ruby/spec/models/animal_spec.rb index 5486df94b11..7db3727f3aa 100644 --- a/samples/client/petstore/ruby/spec/models/animal_spec.rb +++ b/samples/client/petstore/ruby/spec/models/animal_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/api_response_spec.rb b/samples/client/petstore/ruby/spec/models/api_response_spec.rb index c5b767a4672..40607c9928f 100644 --- a/samples/client/petstore/ruby/spec/models/api_response_spec.rb +++ b/samples/client/petstore/ruby/spec/models/api_response_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb b/samples/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb index 526113ca3d4..08bbd952de0 100644 --- a/samples/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb +++ b/samples/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/array_of_number_only_spec.rb b/samples/client/petstore/ruby/spec/models/array_of_number_only_spec.rb index 14e51f6bc0a..84837738c93 100644 --- a/samples/client/petstore/ruby/spec/models/array_of_number_only_spec.rb +++ b/samples/client/petstore/ruby/spec/models/array_of_number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/array_test_spec.rb b/samples/client/petstore/ruby/spec/models/array_test_spec.rb index 36c0b4e6988..622156ad706 100644 --- a/samples/client/petstore/ruby/spec/models/array_test_spec.rb +++ b/samples/client/petstore/ruby/spec/models/array_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/capitalization_spec.rb b/samples/client/petstore/ruby/spec/models/capitalization_spec.rb index e48c2641b9f..8f7801aa59c 100644 --- a/samples/client/petstore/ruby/spec/models/capitalization_spec.rb +++ b/samples/client/petstore/ruby/spec/models/capitalization_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/cat_all_of_spec.rb b/samples/client/petstore/ruby/spec/models/cat_all_of_spec.rb index f6130479a81..e20599a1020 100644 --- a/samples/client/petstore/ruby/spec/models/cat_all_of_spec.rb +++ b/samples/client/petstore/ruby/spec/models/cat_all_of_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/cat_spec.rb b/samples/client/petstore/ruby/spec/models/cat_spec.rb index c29e89df5ea..c9cfd43e827 100644 --- a/samples/client/petstore/ruby/spec/models/cat_spec.rb +++ b/samples/client/petstore/ruby/spec/models/cat_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/category_spec.rb b/samples/client/petstore/ruby/spec/models/category_spec.rb index 2710cd6e268..d417c685635 100644 --- a/samples/client/petstore/ruby/spec/models/category_spec.rb +++ b/samples/client/petstore/ruby/spec/models/category_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/class_model_spec.rb b/samples/client/petstore/ruby/spec/models/class_model_spec.rb index bb7ffa68678..7644e28d60e 100644 --- a/samples/client/petstore/ruby/spec/models/class_model_spec.rb +++ b/samples/client/petstore/ruby/spec/models/class_model_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/client_spec.rb b/samples/client/petstore/ruby/spec/models/client_spec.rb index ca304fb18db..c3ba8cc628c 100644 --- a/samples/client/petstore/ruby/spec/models/client_spec.rb +++ b/samples/client/petstore/ruby/spec/models/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/dog_all_of_spec.rb b/samples/client/petstore/ruby/spec/models/dog_all_of_spec.rb index fa5adf15d10..6a44398ec74 100644 --- a/samples/client/petstore/ruby/spec/models/dog_all_of_spec.rb +++ b/samples/client/petstore/ruby/spec/models/dog_all_of_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/dog_spec.rb b/samples/client/petstore/ruby/spec/models/dog_spec.rb index 29de4b55ba3..d54cdf8323d 100644 --- a/samples/client/petstore/ruby/spec/models/dog_spec.rb +++ b/samples/client/petstore/ruby/spec/models/dog_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/enum_arrays_spec.rb b/samples/client/petstore/ruby/spec/models/enum_arrays_spec.rb index c766110a1ed..1ea9518eb05 100644 --- a/samples/client/petstore/ruby/spec/models/enum_arrays_spec.rb +++ b/samples/client/petstore/ruby/spec/models/enum_arrays_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/enum_class_spec.rb b/samples/client/petstore/ruby/spec/models/enum_class_spec.rb index 1d5d734d803..02129c48b09 100644 --- a/samples/client/petstore/ruby/spec/models/enum_class_spec.rb +++ b/samples/client/petstore/ruby/spec/models/enum_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/enum_test_spec.rb b/samples/client/petstore/ruby/spec/models/enum_test_spec.rb index bee5ad0fbe1..847dfc19d41 100644 --- a/samples/client/petstore/ruby/spec/models/enum_test_spec.rb +++ b/samples/client/petstore/ruby/spec/models/enum_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb b/samples/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb index 5b1c969478c..b62843d263f 100644 --- a/samples/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb +++ b/samples/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/file_spec.rb b/samples/client/petstore/ruby/spec/models/file_spec.rb index a802ebdeac4..d9e2f68e15e 100644 --- a/samples/client/petstore/ruby/spec/models/file_spec.rb +++ b/samples/client/petstore/ruby/spec/models/file_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/format_test_spec.rb b/samples/client/petstore/ruby/spec/models/format_test_spec.rb index b46dde1a985..317637762a2 100644 --- a/samples/client/petstore/ruby/spec/models/format_test_spec.rb +++ b/samples/client/petstore/ruby/spec/models/format_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/has_only_read_only_spec.rb b/samples/client/petstore/ruby/spec/models/has_only_read_only_spec.rb index 06007baeabf..ed03194ff17 100644 --- a/samples/client/petstore/ruby/spec/models/has_only_read_only_spec.rb +++ b/samples/client/petstore/ruby/spec/models/has_only_read_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/list_spec.rb b/samples/client/petstore/ruby/spec/models/list_spec.rb index 0f6a6a1767a..8769a443360 100644 --- a/samples/client/petstore/ruby/spec/models/list_spec.rb +++ b/samples/client/petstore/ruby/spec/models/list_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/map_test_spec.rb b/samples/client/petstore/ruby/spec/models/map_test_spec.rb index 23c38645bed..dd87614fab7 100644 --- a/samples/client/petstore/ruby/spec/models/map_test_spec.rb +++ b/samples/client/petstore/ruby/spec/models/map_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb b/samples/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb index be37fd6b3cd..45f17a4dde0 100644 --- a/samples/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb +++ b/samples/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/model200_response_spec.rb b/samples/client/petstore/ruby/spec/models/model200_response_spec.rb index 0b7def74bc2..f218825f364 100644 --- a/samples/client/petstore/ruby/spec/models/model200_response_spec.rb +++ b/samples/client/petstore/ruby/spec/models/model200_response_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/model_return_spec.rb b/samples/client/petstore/ruby/spec/models/model_return_spec.rb index 946e5632a22..085c1e73321 100644 --- a/samples/client/petstore/ruby/spec/models/model_return_spec.rb +++ b/samples/client/petstore/ruby/spec/models/model_return_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/name_spec.rb b/samples/client/petstore/ruby/spec/models/name_spec.rb index 319eda5974d..445051d7166 100644 --- a/samples/client/petstore/ruby/spec/models/name_spec.rb +++ b/samples/client/petstore/ruby/spec/models/name_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/number_only_spec.rb b/samples/client/petstore/ruby/spec/models/number_only_spec.rb index b86ab759866..9f049359e49 100644 --- a/samples/client/petstore/ruby/spec/models/number_only_spec.rb +++ b/samples/client/petstore/ruby/spec/models/number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/order_spec.rb b/samples/client/petstore/ruby/spec/models/order_spec.rb index f7811da5dc3..78044fa6cb1 100644 --- a/samples/client/petstore/ruby/spec/models/order_spec.rb +++ b/samples/client/petstore/ruby/spec/models/order_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/outer_composite_spec.rb b/samples/client/petstore/ruby/spec/models/outer_composite_spec.rb index d3f241403be..b9aed6cdf8c 100644 --- a/samples/client/petstore/ruby/spec/models/outer_composite_spec.rb +++ b/samples/client/petstore/ruby/spec/models/outer_composite_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/outer_enum_spec.rb b/samples/client/petstore/ruby/spec/models/outer_enum_spec.rb index 068b7257657..5b5efd8ecf8 100644 --- a/samples/client/petstore/ruby/spec/models/outer_enum_spec.rb +++ b/samples/client/petstore/ruby/spec/models/outer_enum_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/pet_spec.rb b/samples/client/petstore/ruby/spec/models/pet_spec.rb index 7186b28f04f..67da19798b7 100644 --- a/samples/client/petstore/ruby/spec/models/pet_spec.rb +++ b/samples/client/petstore/ruby/spec/models/pet_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/read_only_first_spec.rb b/samples/client/petstore/ruby/spec/models/read_only_first_spec.rb index 8bf73b85db8..613f8e85b24 100644 --- a/samples/client/petstore/ruby/spec/models/read_only_first_spec.rb +++ b/samples/client/petstore/ruby/spec/models/read_only_first_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/special_model_name_spec.rb b/samples/client/petstore/ruby/spec/models/special_model_name_spec.rb index 273dd3ad513..2f1ce0ad4ce 100644 --- a/samples/client/petstore/ruby/spec/models/special_model_name_spec.rb +++ b/samples/client/petstore/ruby/spec/models/special_model_name_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/tag_spec.rb b/samples/client/petstore/ruby/spec/models/tag_spec.rb index 5f464b162e2..3104f16bab0 100644 --- a/samples/client/petstore/ruby/spec/models/tag_spec.rb +++ b/samples/client/petstore/ruby/spec/models/tag_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/type_holder_default_spec.rb b/samples/client/petstore/ruby/spec/models/type_holder_default_spec.rb index e7f5efd35bb..f3965605f84 100644 --- a/samples/client/petstore/ruby/spec/models/type_holder_default_spec.rb +++ b/samples/client/petstore/ruby/spec/models/type_holder_default_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/type_holder_example_spec.rb b/samples/client/petstore/ruby/spec/models/type_holder_example_spec.rb index a192a4c5b72..493fde14c4e 100644 --- a/samples/client/petstore/ruby/spec/models/type_holder_example_spec.rb +++ b/samples/client/petstore/ruby/spec/models/type_holder_example_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/user_spec.rb b/samples/client/petstore/ruby/spec/models/user_spec.rb index bf0861a8fe3..aae801568fa 100644 --- a/samples/client/petstore/ruby/spec/models/user_spec.rb +++ b/samples/client/petstore/ruby/spec/models/user_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/models/xml_item_spec.rb b/samples/client/petstore/ruby/spec/models/xml_item_spec.rb index 7d308c19cb1..aff23ab9f14 100644 --- a/samples/client/petstore/ruby/spec/models/xml_item_spec.rb +++ b/samples/client/petstore/ruby/spec/models/xml_item_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/spec_helper.rb b/samples/client/petstore/ruby/spec/spec_helper.rb index a7638763c37..b1247b33868 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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 af512d8e9f5..e77f58a9ece 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 1971dfa95b8..94dfff38907 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 2772f44aea4..145c71d1afa 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 f2b182d5043..d59976057e6 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 966e0f71cd4..85cf089e497 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 d6375467086..2cbd2ed99b3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 8a855cf0813..f36b7b750b9 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 9604a8d6b9f..4ee1b2cbdd2 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c9350466901..d2f2ee3f765 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angularjs/.openapi-generator/VERSION b/samples/client/petstore/typescript-angularjs/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-angularjs/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angularjs/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/meta-codegen/lib/pom.xml b/samples/meta-codegen/lib/pom.xml index 94e828873f9..ae44d802a0e 100644 --- a/samples/meta-codegen/lib/pom.xml +++ b/samples/meta-codegen/lib/pom.xml @@ -121,7 +121,7 @@ UTF-8 - 4.2.2 + 4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/meta-codegen/usage/.openapi-generator/VERSION +++ b/samples/meta-codegen/usage/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION b/samples/openapi3/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index 3fd0ed7d114..a85ca08dc2a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php index c18561a773d..5aa7cb7bd5f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index efea2b73f95..5c600e51d71 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index feeff5bebca..68745dca6bb 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index 8e71dfedd0f..09a92a02a57 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 379494506d3..1287dd6d578 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index 79a5e9d6025..2625f3a843e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php index 117bce9c585..a5d27da5216 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php index 24c1a845b5c..b166b15a39f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php index 939b655919e..b8b298ec95c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php index 95bebdf082e..dbf9a3edd70 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php index 1c17d0f1971..67098da3119 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php index d18b28a6882..09a4846bc1c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php index 2af78f016d6..6d5fd483398 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php index 6fc5f43ce8b..315eb1db9fe 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php index b17a7e339d8..abac4162ecd 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php index 86fd5e94015..a4d19d80e56 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php index dea6d5bdb3c..4749c3c3b77 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php index 2a7b43cd5c7..76ac31a6ce5 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php index ff515524035..3312f0f0d24 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php index 23c5811d614..6589e7fcb7d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php index f23a17dc397..283bf291d5d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php index e2d6a72e72e..4df6ae069ad 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php index 70ae6305837..c5abdae2cdb 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php index d35c1a77bec..5551d5f3918 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php index 5dd40c5843c..51386d76f5c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php index 6aeca0a2ea9..c796cfb6b74 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/File.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/File.php index 11656ba9047..4b62356a9df 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/File.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/File.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php index 22df4655247..5ba5dd23363 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php index 6e9a8563d3f..fe73e8ffa05 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php index 91ffc3dc171..0426329349e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php index 7cea76352b3..ff43bdd9d07 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php index fa86db357ee..7314336b5eb 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject.php index 6d9753e21db..b02c7afc48e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject1.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject1.php index 6ea29262d36..cab7d78df19 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject1.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject1.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject2.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject2.php index 2bb6a81aaa4..08ae3242f37 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject2.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject2.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject3.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject3.php index 6d620759bb2..8bdfc8ce8e6 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject3.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject3.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject4.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject4.php index 12d665efd35..2d6466a1412 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject4.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject4.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject5.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject5.php index 25a20aab0ec..4b42deb6fc6 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject5.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineObject5.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php index 061cfefcfc0..dffd78dc957 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php index fd3f72c2c07..d564698e571 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php index 8aade6c31c7..1ec33086309 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php index 34b6f42ec00..eed4359240e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php index f1c918ae93d..367c62d758c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index 798fc201901..3d002303208 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php index c4c8137325b..97ce87ab23a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php index 26ecbafe92b..a5e6593bb58 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php index 6a9dd026323..cda4bf9c67a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php index 5040769f7ed..7f503f8e1b6 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php index 61c15523b87..322fe579d27 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php index 11f647244d8..dcfbd3f32ec 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php index 4bed81edc5e..605b3b81143 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php index 2d20b82f281..a4d725091e2 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php index 89b6632e201..b80a5369530 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php index 91947e64178..33bafbd2a53 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php index f884a6c45b2..7d6d3f9fb96 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php index 7dffb61909f..b0250ebc944 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php index 6d4527dcac7..d87e6bc9e9c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php index daee02ad618..1ed059c5fca 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php index b470eedbb0c..164c961c62f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 3569ce8ce4c..bfef9214b24 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php index ab89c4f35ab..ce85cec9e2e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/DefaultApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/DefaultApiTest.php index 912e66684e2..206607cf329 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/DefaultApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/DefaultApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php index 3cc1615b305..66992f7355f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php index e2ac708020a..214b8ce7259 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php index 208e9d9790b..2a70110f17c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php index a549ea5ec21..f765b857ae1 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php index 7638bcee43e..01ae63544fc 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php @@ -17,7 +17,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php index 3f2241fb6d5..a4770ff85cd 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php index a977230e649..c25557aa577 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php index 64a9fd7f5b8..2d069f1de55 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php index 609fd6bc82c..d643efed3a3 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php index eb2a1beac40..1ab68bc40d9 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php index e15952d3ec4..e1d79212dcc 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php index e7899601d5f..fcf4308ed8a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php index dc155a8c518..38559302212 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatAllOfTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php index b0b70c6f469..3a144dba1a4 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php index a0a65230928..9d168f8d4e6 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php index a2d11bd5c6a..a39548a6409 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php index 1bf5c9784f4..db41a35c9d2 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php index 105b25c0c1e..403296a6a45 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogAllOfTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php index c2feac7e9c4..f884d4fc5be 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php index 7fa055e30d1..5476cceb764 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php index aed1d9152c0..a3eaf99a83e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php index f34e19f5add..6f3b321feb7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php index b40874310ba..1cba4df143f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileSchemaTestClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php index 93345276329..92f15d43b27 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FileTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FooTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FooTest.php index a929a1953ca..31a434d56e9 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FooTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FooTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php index b87068ce3e4..cbaf661d652 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php index b15568155b7..cce87b2ec04 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HealthCheckResultTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HealthCheckResultTest.php index 42a32a8c3a4..a8a75e41967 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HealthCheckResultTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HealthCheckResultTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject1Test.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject1Test.php index 7aa4a1f18a1..61134362aa6 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject1Test.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject1Test.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject2Test.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject2Test.php index 2174d19575b..7f7e5fac0d3 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject2Test.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject2Test.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject3Test.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject3Test.php index 0a8eb1b0d4f..8c84eea2658 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject3Test.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject3Test.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject4Test.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject4Test.php index e43375c34c1..4528d2d1bc7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject4Test.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject4Test.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject5Test.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject5Test.php index c68353b8e18..88551589582 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject5Test.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObject5Test.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObjectTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObjectTest.php index 657273640a0..b9279376cd7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObjectTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineObjectTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineResponseDefaultTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineResponseDefaultTest.php index 7a18fafa350..9e2f6d6ffc7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineResponseDefaultTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/InlineResponseDefaultTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php index b6218c19dda..12a929dfa9b 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php index 639d5cd6c07..59da46ce7d8 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php index 9f1b706799b..62bd5c66efd 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php index b4097764830..1e3510d248a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php index 28b6bd56977..1701b7dc59e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php index 1ecb603e451..1f9baaaf0b5 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NullableClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NullableClassTest.php index 5ebdb82b572..41ecc5c8c04 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NullableClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NullableClassTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php index 3e3a7555afd..436b00ab29f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php index 9431da1a8a7..364e959a6c3 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php index 3857a7d7094..3fd37255542 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumDefaultValueTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumDefaultValueTest.php index e6085990679..40ef65317b0 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumDefaultValueTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumDefaultValueTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerDefaultValueTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerDefaultValueTest.php index f9d4f7dc883..6153a26131a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerDefaultValueTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerDefaultValueTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerTest.php index 31e50f3ca25..de5177983ff 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumIntegerTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php index a7138baa010..946c170690d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php index 624f07be2ed..4618db290e3 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php index 70f93213630..64725b333d7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php index dcb2a97be8f..8815c98e3d4 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php index 80689bacd3c..4ce6d2d69b8 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php index eed37552038..96f3aa0bd6f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php @@ -18,7 +18,7 @@ * The version of the OpenAPI document: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 4.2.2-SNAPSHOT + * OpenAPI Generator version: 4.2.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/ruby-faraday/.openapi-generator/VERSION b/samples/openapi3/client/petstore/ruby-faraday/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/ruby-faraday/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore.rb index 9df9ae2ed40..7744aff976e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb index 45a79a65f84..50a09448987 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb index 17ba502d11c..c70a7450c0d 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index 68bfeb5b109..787ee0da303 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb index 4256e6797df..10c58b71e36 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb index bef71bfbceb..f6917576419 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb index 065d629c2c0..19cec45dbb1 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb index 3234898975d..feaef26731b 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api_client.rb index 5acc85052c4..f69964f541e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api_error.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api_error.rb index 04178660bec..5a03031bbd1 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/api_error.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb index 61c2d03b4cf..39f2544e5f4 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb index 5420291fa3f..cac843bc102 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/animal.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/animal.rb index 25cbc7b742c..62a7577498f 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/animal.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb index 3600ae34cd2..ecf18c3ecd3 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb index fb33d3e9b57..b42e908927a 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb index 5ca723e8110..b88654a789e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb index a31601722b1..e73514d04bf 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb index 0135ab0c40b..0fb15209122 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/cat.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/cat.rb index 98cab5963f0..6ab61d896b3 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/cat.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb index fdd6f2cdc8e..c87234dd571 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/category.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/category.rb index b6ad7ebea2f..5a4720e35a4 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/category.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb index b50a4fc2d89..a18ea447053 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/client.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/client.rb index 55af4a8cac7..3bfa56a9570 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/client.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/dog.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/dog.rb index 85edd3bd814..65e4e65cf30 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/dog.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb index 7d6c50066be..79b302a7b87 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb index 2f98f3fc85e..6c33da61330 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb index a52246252a8..770ebd95b12 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb index c75f27a7cb0..aebb2a5246d 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/file.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/file.rb index 9c0a97cf00f..a65ed1e8e4c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/file.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb index 26c4d5f2ee8..8bbe17c24d9 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/foo.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/foo.rb index 6fa0ab27717..798f85492d9 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/foo.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb index a9a8fb04743..cf9cf7b9eb0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb index 58088368e78..92dbd7130f6 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb index 49572e03c6c..4718c32c385 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object.rb index 8657df9779c..f7dd4412c50 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object1.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object1.rb index 3f57604a1b6..8097ad573f8 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object1.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object1.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object2.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object2.rb index 10c8975f1de..32097e519a0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object2.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object2.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object3.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object3.rb index 45e0b996ccc..eb97883e5c3 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object3.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object3.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object4.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object4.rb index c9949cb8b15..dc86261d45c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object4.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object4.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object5.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object5.rb index 62292b83678..bfe39352afb 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object5.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_object5.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb index 8a7316b60df..544e7a25f88 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/list.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/list.rb index ae353b1db84..cfb8129bd8b 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/list.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb index 5d52cd34c8b..653a715b62a 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index 5f03b1516dc..4a49bc63a7e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb index 626652bd5ce..cebec7dee59 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb index 323dd4eef24..24a51ce4192 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/name.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/name.rb index d70454f06a4..b69966dea0f 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/name.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb index 998dbd6d967..7b894ee4c7e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb index 3218db6b933..462dcf44902 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/order.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/order.rb index 29034f73fa9..37f7f5a876c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/order.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb index 870903da8fd..60f65d02902 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb index 4f63718a5ae..4c1bac4c15c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb index 6a32bde8e4a..77ea9617301 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb index a10207fb86f..2b0fc9387d8 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb index 85297919c99..71a1a6d5c8b 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/pet.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/pet.rb index 81e278f0b5a..c97f916baa7 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/pet.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb index 8a7755e39aa..8e1f956d879 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb index 0370f7a77f4..5504258a961 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/tag.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/tag.rb index 3d55f29c95f..6a5520d0de4 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/tag.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/user.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/user.rb index 0aab2d1bfa0..6f0b8018995 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/models/user.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/version.rb b/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/version.rb index 61c3e10bdfb..9ac54f6bd6d 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/lib/petstore/version.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/petstore.gemspec b/samples/openapi3/client/petstore/ruby-faraday/petstore.gemspec index c5c127d7de3..b1de9d3ad38 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/petstore.gemspec +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/another_fake_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/another_fake_api_spec.rb index 02d13046f5f..113765b064c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/another_fake_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/another_fake_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/default_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/default_api_spec.rb index 2704d6003da..3a78f018a4e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/default_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/default_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_api_spec.rb index 040b725c64a..b8890f65712 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_classname_tags123_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_classname_tags123_api_spec.rb index 789612d3393..741236202e7 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_classname_tags123_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/fake_classname_tags123_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/pet_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/pet_api_spec.rb index 2b643f75311..a397016a13b 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/pet_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/pet_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/store_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/store_api_spec.rb index 224e441b85c..4c65788be4e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/store_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/store_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api/user_api_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api/user_api_spec.rb index db10fc128fc..c196cf4aa1b 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api/user_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/api/user_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/api_client_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/api_client_spec.rb index 753decdab6f..e00700138cd 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/api_client_spec.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/configuration_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/configuration_spec.rb index cccf88382e4..b720bc3a310 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/configuration_spec.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/additional_properties_class_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/additional_properties_class_spec.rb index 1312e194989..5aa5b7c3a0f 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/additional_properties_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/additional_properties_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/animal_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/animal_spec.rb index 5486df94b11..7db3727f3aa 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/animal_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/animal_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/api_response_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/api_response_spec.rb index c5b767a4672..40607c9928f 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/api_response_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/api_response_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_array_of_number_only_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_array_of_number_only_spec.rb index 526113ca3d4..08bbd952de0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_array_of_number_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_array_of_number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_number_only_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_number_only_spec.rb index 14e51f6bc0a..84837738c93 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_number_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_of_number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_test_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_test_spec.rb index 36c0b4e6988..622156ad706 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/array_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/capitalization_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/capitalization_spec.rb index e48c2641b9f..8f7801aa59c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/capitalization_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/capitalization_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_all_of_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_all_of_spec.rb index f6130479a81..e20599a1020 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_all_of_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_all_of_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_spec.rb index c29e89df5ea..c9cfd43e827 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/cat_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/category_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/category_spec.rb index 2710cd6e268..d417c685635 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/category_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/category_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/class_model_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/class_model_spec.rb index bb7ffa68678..7644e28d60e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/class_model_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/class_model_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/client_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/client_spec.rb index ca304fb18db..c3ba8cc628c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/client_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_all_of_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_all_of_spec.rb index fa5adf15d10..6a44398ec74 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_all_of_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_all_of_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_spec.rb index 29de4b55ba3..d54cdf8323d 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/dog_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_arrays_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_arrays_spec.rb index c766110a1ed..1ea9518eb05 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_arrays_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_arrays_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_class_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_class_spec.rb index 1d5d734d803..02129c48b09 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_test_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_test_spec.rb index dbeeb257737..a50b5fcf5c0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/enum_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_schema_test_class_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_schema_test_class_spec.rb index 5b1c969478c..b62843d263f 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_schema_test_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_schema_test_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_spec.rb index a802ebdeac4..d9e2f68e15e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/file_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/foo_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/foo_spec.rb index 9e2c83b35f0..2fd1e68a0ea 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/foo_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/foo_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/format_test_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/format_test_spec.rb index f6a3b150ed4..555321717ac 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/format_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/format_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/has_only_read_only_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/has_only_read_only_spec.rb index 06007baeabf..ed03194ff17 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/has_only_read_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/has_only_read_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/health_check_result_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/health_check_result_spec.rb index 6c30563bf89..5d04813d9c6 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/health_check_result_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/health_check_result_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object1_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object1_spec.rb index 7a9acb9aef4..e4c1910d92e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object1_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object1_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object2_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object2_spec.rb index 9865bdbdda3..84047c40a9d 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object2_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object2_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object3_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object3_spec.rb index 77a774386ab..85a9a58f77b 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object3_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object3_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object4_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object4_spec.rb index cbbd22fd358..9b9d7b4b7cb 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object4_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object4_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object5_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object5_spec.rb index 50962f8a08e..6bca51c4a23 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object5_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object5_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object_spec.rb index 625ccc7404e..4c4a9494ff0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_object_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_response_default_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_response_default_spec.rb index 946eaa24073..e887eeb3d4e 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_response_default_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/inline_response_default_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/list_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/list_spec.rb index 0f6a6a1767a..8769a443360 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/list_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/list_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/map_test_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/map_test_spec.rb index 23c38645bed..dd87614fab7 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/map_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/map_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/mixed_properties_and_additional_properties_class_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/mixed_properties_and_additional_properties_class_spec.rb index be37fd6b3cd..45f17a4dde0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/mixed_properties_and_additional_properties_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/mixed_properties_and_additional_properties_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/model200_response_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/model200_response_spec.rb index 0b7def74bc2..f218825f364 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/model200_response_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/model200_response_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/model_return_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/model_return_spec.rb index 946e5632a22..085c1e73321 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/model_return_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/model_return_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/name_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/name_spec.rb index 319eda5974d..445051d7166 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/name_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/name_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/nullable_class_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/nullable_class_spec.rb index 5ad12dc43e5..db828de541d 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/nullable_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/nullable_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/number_only_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/number_only_spec.rb index b86ab759866..9f049359e49 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/number_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/order_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/order_spec.rb index f7811da5dc3..78044fa6cb1 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/order_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/order_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_composite_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_composite_spec.rb index d3f241403be..b9aed6cdf8c 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_composite_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_composite_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_default_value_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_default_value_spec.rb index 6acbbf87b2a..48b2e7ad1b9 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_default_value_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_default_value_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_default_value_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_default_value_spec.rb index fb7f4ed21dd..33eef4ee102 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_default_value_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_default_value_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_spec.rb index 669d0201f47..893c4133da5 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_integer_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_spec.rb index 068b7257657..5b5efd8ecf8 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/outer_enum_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/pet_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/pet_spec.rb index 7186b28f04f..67da19798b7 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/pet_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/pet_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/read_only_first_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/read_only_first_spec.rb index 8bf73b85db8..613f8e85b24 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/read_only_first_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/read_only_first_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/special_model_name_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/special_model_name_spec.rb index 273dd3ad513..2f1ce0ad4ce 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/special_model_name_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/special_model_name_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/tag_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/tag_spec.rb index 5f464b162e2..3104f16bab0 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/tag_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/tag_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/models/user_spec.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/models/user_spec.rb index bf0861a8fe3..aae801568fa 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/models/user_spec.rb +++ b/samples/openapi3/client/petstore/ruby-faraday/spec/models/user_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby-faraday/spec/spec_helper.rb b/samples/openapi3/client/petstore/ruby-faraday/spec/spec_helper.rb index a7638763c37..b1247b33868 100644 --- a/samples/openapi3/client/petstore/ruby-faraday/spec/spec_helper.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/.openapi-generator/VERSION b/samples/openapi3/client/petstore/ruby/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/openapi3/client/petstore/ruby/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore.rb b/samples/openapi3/client/petstore/ruby/lib/petstore.rb index 9df9ae2ed40..7744aff976e 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/another_fake_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/another_fake_api.rb index 45a79a65f84..50a09448987 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/another_fake_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/default_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/default_api.rb index 17ba502d11c..c70a7450c0d 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/default_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/fake_api.rb index 68bfeb5b109..787ee0da303 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb index 4256e6797df..10c58b71e36 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/pet_api.rb index 5b8f40b25b9..c2133a44e68 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/pet_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/store_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/store_api.rb index a0de3a88e71..45a42461195 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/store_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api/user_api.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api/user_api.rb index f3cbaff064a..07f264ae18b 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api/user_api.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api_client.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api_client.rb index 3222b140cfb..9c3307af58c 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/api_error.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/api_error.rb index 04178660bec..5a03031bbd1 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/api_error.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb index 1864c5d7599..c41473fb0ee 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb index 5420291fa3f..cac843bc102 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/animal.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/animal.rb index 25cbc7b742c..62a7577498f 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/animal.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/api_response.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/api_response.rb index 3600ae34cd2..ecf18c3ecd3 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/api_response.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb index fb33d3e9b57..b42e908927a 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb index 5ca723e8110..b88654a789e 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_test.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_test.rb index a31601722b1..e73514d04bf 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/array_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/capitalization.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/capitalization.rb index 0135ab0c40b..0fb15209122 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/capitalization.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/cat.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/cat.rb index 98cab5963f0..6ab61d896b3 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/cat.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/cat_all_of.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/cat_all_of.rb index fdd6f2cdc8e..c87234dd571 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/cat_all_of.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/category.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/category.rb index b6ad7ebea2f..5a4720e35a4 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/category.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/class_model.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/class_model.rb index b50a4fc2d89..a18ea447053 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/class_model.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/client.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/client.rb index 55af4a8cac7..3bfa56a9570 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/client.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/dog.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/dog.rb index 85edd3bd814..65e4e65cf30 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/dog.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/dog_all_of.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/dog_all_of.rb index 7d6c50066be..79b302a7b87 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/dog_all_of.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_arrays.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_arrays.rb index 2f98f3fc85e..6c33da61330 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_arrays.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_class.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_class.rb index a52246252a8..770ebd95b12 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_test.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_test.rb index c75f27a7cb0..aebb2a5246d 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/enum_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/file.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/file.rb index 9c0a97cf00f..a65ed1e8e4c 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/file.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb index 26c4d5f2ee8..8bbe17c24d9 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/foo.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/foo.rb index 6fa0ab27717..798f85492d9 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/foo.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/format_test.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/format_test.rb index a9a8fb04743..cf9cf7b9eb0 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/format_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb index 58088368e78..92dbd7130f6 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/health_check_result.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/health_check_result.rb index 49572e03c6c..4718c32c385 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/health_check_result.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object.rb index 8657df9779c..f7dd4412c50 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object1.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object1.rb index 3f57604a1b6..8097ad573f8 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object1.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object1.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object2.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object2.rb index 10c8975f1de..32097e519a0 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object2.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object2.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object3.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object3.rb index 45e0b996ccc..eb97883e5c3 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object3.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object3.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object4.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object4.rb index c9949cb8b15..dc86261d45c 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object4.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object4.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object5.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object5.rb index 62292b83678..bfe39352afb 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object5.rb +++ b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_object5.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_response_default.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_response_default.rb index 8a7316b60df..544e7a25f88 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/inline_response_default.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/list.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/list.rb index ae353b1db84..cfb8129bd8b 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/list.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/map_test.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/map_test.rb index 5d52cd34c8b..653a715b62a 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/map_test.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index 5f03b1516dc..4a49bc63a7e 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/model200_response.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/model200_response.rb index 626652bd5ce..cebec7dee59 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/model200_response.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/model_return.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/model_return.rb index 323dd4eef24..24a51ce4192 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/model_return.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/name.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/name.rb index d70454f06a4..b69966dea0f 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/name.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/nullable_class.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/nullable_class.rb index 998dbd6d967..7b894ee4c7e 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/nullable_class.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/number_only.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/number_only.rb index 3218db6b933..462dcf44902 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/number_only.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/order.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/order.rb index 29034f73fa9..37f7f5a876c 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/order.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_composite.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_composite.rb index 870903da8fd..60f65d02902 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_composite.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum.rb index 4f63718a5ae..4c1bac4c15c 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb index 6a32bde8e4a..77ea9617301 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb index a10207fb86f..2b0fc9387d8 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb index 85297919c99..71a1a6d5c8b 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/pet.rb index 81e278f0b5a..c97f916baa7 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/pet.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/read_only_first.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/read_only_first.rb index 8a7755e39aa..8e1f956d879 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/read_only_first.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/special_model_name.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/special_model_name.rb index 0370f7a77f4..5504258a961 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/special_model_name.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/tag.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/tag.rb index 3d55f29c95f..6a5520d0de4 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/tag.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/models/user.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/models/user.rb index 0aab2d1bfa0..6f0b8018995 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/models/user.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/version.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/version.rb index 61c3e10bdfb..9ac54f6bd6d 100644 --- a/samples/openapi3/client/petstore/ruby/lib/petstore/version.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/petstore.gemspec b/samples/openapi3/client/petstore/ruby/petstore.gemspec index c97eb69bda5..ff7f4350dc9 100644 --- a/samples/openapi3/client/petstore/ruby/petstore.gemspec +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/another_fake_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/another_fake_api_spec.rb index 02d13046f5f..113765b064c 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/another_fake_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/another_fake_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/default_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/default_api_spec.rb index 2704d6003da..3a78f018a4e 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/default_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/default_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/fake_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/fake_api_spec.rb index 040b725c64a..b8890f65712 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/fake_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/fake_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb index 789612d3393..741236202e7 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/fake_classname_tags123_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/pet_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/pet_api_spec.rb index 2b643f75311..a397016a13b 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/pet_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/pet_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/store_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/store_api_spec.rb index 224e441b85c..4c65788be4e 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/store_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/store_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api/user_api_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api/user_api_spec.rb index db10fc128fc..c196cf4aa1b 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api/user_api_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/api/user_api_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/api_client_spec.rb b/samples/openapi3/client/petstore/ruby/spec/api_client_spec.rb index 71f592ccb61..9227c3a10a8 100644 --- a/samples/openapi3/client/petstore/ruby/spec/api_client_spec.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb b/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb index cccf88382e4..b720bc3a310 100644 --- a/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/additional_properties_class_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/additional_properties_class_spec.rb index 1312e194989..5aa5b7c3a0f 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/additional_properties_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/additional_properties_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/animal_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/animal_spec.rb index 5486df94b11..7db3727f3aa 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/animal_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/animal_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/api_response_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/api_response_spec.rb index c5b767a4672..40607c9928f 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/api_response_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/api_response_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb index 526113ca3d4..08bbd952de0 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/array_of_array_of_number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/array_of_number_only_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/array_of_number_only_spec.rb index 14e51f6bc0a..84837738c93 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/array_of_number_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/array_of_number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/array_test_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/array_test_spec.rb index 36c0b4e6988..622156ad706 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/array_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/array_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/capitalization_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/capitalization_spec.rb index e48c2641b9f..8f7801aa59c 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/capitalization_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/capitalization_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/cat_all_of_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/cat_all_of_spec.rb index f6130479a81..e20599a1020 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/cat_all_of_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/cat_all_of_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/cat_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/cat_spec.rb index c29e89df5ea..c9cfd43e827 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/cat_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/cat_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/category_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/category_spec.rb index 2710cd6e268..d417c685635 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/category_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/category_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/class_model_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/class_model_spec.rb index bb7ffa68678..7644e28d60e 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/class_model_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/class_model_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/client_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/client_spec.rb index ca304fb18db..c3ba8cc628c 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/client_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/dog_all_of_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/dog_all_of_spec.rb index fa5adf15d10..6a44398ec74 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/dog_all_of_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/dog_all_of_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/dog_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/dog_spec.rb index 29de4b55ba3..d54cdf8323d 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/dog_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/dog_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/enum_arrays_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/enum_arrays_spec.rb index c766110a1ed..1ea9518eb05 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/enum_arrays_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/enum_arrays_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/enum_class_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/enum_class_spec.rb index 1d5d734d803..02129c48b09 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/enum_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/enum_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/enum_test_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/enum_test_spec.rb index dbeeb257737..a50b5fcf5c0 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/enum_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/enum_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb index 5b1c969478c..b62843d263f 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/file_schema_test_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/file_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/file_spec.rb index a802ebdeac4..d9e2f68e15e 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/file_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/file_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/foo_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/foo_spec.rb index 9e2c83b35f0..2fd1e68a0ea 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/foo_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/foo_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/format_test_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/format_test_spec.rb index f6a3b150ed4..555321717ac 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/format_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/format_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/has_only_read_only_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/has_only_read_only_spec.rb index 06007baeabf..ed03194ff17 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/has_only_read_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/has_only_read_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/health_check_result_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/health_check_result_spec.rb index 6c30563bf89..5d04813d9c6 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/health_check_result_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/health_check_result_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_object1_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_object1_spec.rb index 7a9acb9aef4..e4c1910d92e 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_object1_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_object1_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_object2_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_object2_spec.rb index 9865bdbdda3..84047c40a9d 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_object2_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_object2_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_object3_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_object3_spec.rb index 77a774386ab..85a9a58f77b 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_object3_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_object3_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_object4_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_object4_spec.rb index cbbd22fd358..9b9d7b4b7cb 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_object4_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_object4_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_object5_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_object5_spec.rb index 50962f8a08e..6bca51c4a23 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_object5_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_object5_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_object_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_object_spec.rb index 625ccc7404e..4c4a9494ff0 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_object_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_object_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/inline_response_default_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/inline_response_default_spec.rb index 946eaa24073..e887eeb3d4e 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/inline_response_default_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/inline_response_default_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/list_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/list_spec.rb index 0f6a6a1767a..8769a443360 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/list_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/list_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/map_test_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/map_test_spec.rb index 23c38645bed..dd87614fab7 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/map_test_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/map_test_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb index be37fd6b3cd..45f17a4dde0 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/mixed_properties_and_additional_properties_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/model200_response_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/model200_response_spec.rb index 0b7def74bc2..f218825f364 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/model200_response_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/model200_response_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/model_return_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/model_return_spec.rb index 946e5632a22..085c1e73321 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/model_return_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/model_return_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/name_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/name_spec.rb index 319eda5974d..445051d7166 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/name_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/name_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/nullable_class_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/nullable_class_spec.rb index 5ad12dc43e5..db828de541d 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/nullable_class_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/nullable_class_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/number_only_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/number_only_spec.rb index b86ab759866..9f049359e49 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/number_only_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/number_only_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/order_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/order_spec.rb index f7811da5dc3..78044fa6cb1 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/order_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/order_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/outer_composite_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/outer_composite_spec.rb index d3f241403be..b9aed6cdf8c 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/outer_composite_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/outer_composite_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_default_value_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_default_value_spec.rb index 6acbbf87b2a..48b2e7ad1b9 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_default_value_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_default_value_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_default_value_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_default_value_spec.rb index fb7f4ed21dd..33eef4ee102 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_default_value_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_default_value_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_spec.rb index 669d0201f47..893c4133da5 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_integer_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_spec.rb index 068b7257657..5b5efd8ecf8 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/outer_enum_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/pet_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/pet_spec.rb index 7186b28f04f..67da19798b7 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/pet_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/pet_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/read_only_first_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/read_only_first_spec.rb index 8bf73b85db8..613f8e85b24 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/read_only_first_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/read_only_first_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/special_model_name_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/special_model_name_spec.rb index 273dd3ad513..2f1ce0ad4ce 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/special_model_name_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/special_model_name_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/tag_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/tag_spec.rb index 5f464b162e2..3104f16bab0 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/tag_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/tag_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/models/user_spec.rb b/samples/openapi3/client/petstore/ruby/spec/models/user_spec.rb index bf0861a8fe3..aae801568fa 100644 --- a/samples/openapi3/client/petstore/ruby/spec/models/user_spec.rb +++ b/samples/openapi3/client/petstore/ruby/spec/models/user_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/ruby/spec/spec_helper.rb b/samples/openapi3/client/petstore/ruby/spec/spec_helper.rb index a7638763c37..b1247b33868 100644 --- a/samples/openapi3/client/petstore/ruby/spec/spec_helper.rb +++ b/samples/openapi3/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: 4.2.2-SNAPSHOT +OpenAPI Generator version: 4.2.3-SNAPSHOT =end diff --git a/samples/schema/petstore/mysql/.openapi-generator/VERSION b/samples/schema/petstore/mysql/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/schema/petstore/mysql/.openapi-generator/VERSION +++ b/samples/schema/petstore/mysql/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/go-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION +++ b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 68f22f80ba9..3b4f4f7d8c0 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 4.2.2-SNAPSHOT. +Generated by OpenAPI Generator 4.2.3-SNAPSHOT. ## Requires diff --git a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/php-lumen/.openapi-generator/VERSION +++ b/samples/server/petstore/php-lumen/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-silex/OpenAPIServer/.openapi-generator/VERSION b/samples/server/petstore/php-silex/OpenAPIServer/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/php-silex/OpenAPIServer/.openapi-generator/VERSION +++ b/samples/server/petstore/php-silex/OpenAPIServer/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-slim/.openapi-generator/VERSION b/samples/server/petstore/php-slim/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/php-slim/.openapi-generator/VERSION +++ b/samples/server/petstore/php-slim/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/php-slim4/.openapi-generator/VERSION +++ b/samples/server/petstore/php-slim4/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION b/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION +++ b/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file 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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 5f500b83392..25cf444b839 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 f92c2b57549..4f2d81b78b5 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 768f200ad89..b09990e9f1e 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 5143a0b3c54..241112df11f 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 589be0a7776..52e234892fc 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 a4592a14a00..506002b3d3e 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 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 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 3393ce84603..985497e4312 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 70a5ec1b359..155b8035260 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e567d514e2e..dcc95822624 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3084b34804e..4844b536961 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c1e8f4a3d27..1e431779b38 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 6102d365488..75c42b125a3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 32ed2e8884e..3164635c246 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 7770f52a114..97f8197cf58 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3a1d9268690..04b45664b26 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 016a4464853..651756d71e3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c78934dbd00..49ef013f393 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 d60ff8b5f4e..b267790eedb 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 32ed2e8884e..3164635c246 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 7770f52a114..97f8197cf58 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3a1d9268690..04b45664b26 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 016a4464853..651756d71e3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c78934dbd00..49ef013f393 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 d60ff8b5f4e..b267790eedb 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 477145b171b..b4dde0d2f8b 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3715f5a6f2c..818c2ff17e8 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3a089a604db..303e726891a 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 12e95477701..095b91c3cdc 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 fc329ae9889..37723449fcc 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 a1f2eea83c3..5d0a2200b72 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 32ed2e8884e..3164635c246 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 7770f52a114..97f8197cf58 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3a1d9268690..04b45664b26 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 016a4464853..651756d71e3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c78934dbd00..49ef013f393 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 d60ff8b5f4e..b267790eedb 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 d856a92107c..ed63695f415 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 5c1b2ad3639..c2a4a4b45f7 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 520477613c2..201d2448774 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 11cf26263ce..973aaf726e4 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 8c45720d4d9..77e77a35d16 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e1c8941dbbf..4b9b985ae5e 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 6c97d4bfa96..19800766311 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 0e82107179a..21e3fbbd86f 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 5dc00f17b7b..41300376b49 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 5229bebaf85..079525c37ef 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 fe53aebe4a8..382a092d5aa 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 2aa88d484f1..82d90cf0bad 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 3393ce84603..985497e4312 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 fd712e0969c..7557c5c2595 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e567d514e2e..dcc95822624 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3ef14f929f7..aec66745173 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c1e8f4a3d27..1e431779b38 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 6102d365488..75c42b125a3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 40c962ddcf0..61c31f9dcdf 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 efa8b4469ff..f74f261adc2 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 00544234fcf..d5796063dbd 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 efd057904c5..68bed485d13 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 cd4819951d0..29b96a99907 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 889be232bbe..5de8cdfd397 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e4955748d3e..58592f031f6 100644 --- a/samples/server/petstore/springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-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 3393ce84603..985497e4312 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 d94523f7aa6..a96042fead9 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 e567d514e2e..dcc95822624 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 3084b34804e..4844b536961 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 c1e8f4a3d27..1e431779b38 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-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 6102d365488..75c42b125a3 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) (4.2.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (4.2.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ From 663ee6606820189dfbd057f5dc7ee9880e4d85a3 Mon Sep 17 00:00:00 2001 From: jens-carbon <57367328+jens-carbon@users.noreply.github.com> Date: Tue, 3 Dec 2019 04:33:49 -0800 Subject: [PATCH 49/96] [typescript-node]: Add support for nullable (#4670) --- .../src/main/resources/typescript-node/model.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-node/model.mustache b/modules/openapi-generator/src/main/resources/typescript-node/model.mustache index 3559593a50c..c3b8119ec68 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/model.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/model.mustache @@ -18,7 +18,7 @@ export class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{ * {{{description}}} */ {{/description}} - '{{name}}'{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}; + '{{name}}'{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}; {{/vars}} {{#discriminator}} @@ -48,7 +48,7 @@ export class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{ return {{classname}}.attributeTypeMap; {{/parent}} } - {{/isArrayModel}} + {{/isArrayModel}} } {{#hasEnums}} From ba3af503849fecc8b3c05a72e2033bd81cebf844 Mon Sep 17 00:00:00 2001 From: Oleh Kurpiak Date: Tue, 3 Dec 2019 15:09:39 +0200 Subject: [PATCH 50/96] [#4025] custom java annotations (#4026) * custom java annotations --- bin/java-petstore-feign.sh | 2 +- bin/windows/java-petstore-feign.bat | 2 +- docs/generators/groovy.md | 1 + docs/generators/java-inflector.md | 1 + docs/generators/java-msf4j.md | 1 + docs/generators/java-pkmst.md | 1 + docs/generators/java-play-framework.md | 1 + docs/generators/java-undertow-server.md | 1 + docs/generators/java-vertx-web.md | 1 + docs/generators/java-vertx.md | 1 + docs/generators/java.md | 1 + docs/generators/jaxrs-cxf-cdi.md | 1 + docs/generators/jaxrs-cxf-client.md | 1 + docs/generators/jaxrs-cxf-extended.md | 1 + docs/generators/jaxrs-cxf.md | 1 + docs/generators/jaxrs-jersey.md | 1 + docs/generators/jaxrs-resteasy-eap.md | 1 + docs/generators/jaxrs-resteasy.md | 1 + docs/generators/jaxrs-spec.md | 1 + docs/generators/spring.md | 1 + .../languages/AbstractJavaCodegen.java | 27 +++++++++++++++++++ .../additionalModelTypeAnnotations.mustache | 2 ++ .../src/main/resources/Java/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaInflector/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaJaxRS/cxf-cdi/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaJaxRS/cxf-ext/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaJaxRS/cxf/pojo.mustache | 2 +- .../main/resources/JavaJaxRS/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../additionalModelTypeAnnotations.mustache | 2 ++ .../JavaJaxRS/resteasy/eap/pojo.mustache | 2 +- .../JavaJaxRS/resteasy/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaJaxRS/spec/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaPlayFramework/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../main/resources/JavaSpring/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/JavaVertXServer/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../JavaVertXWebServer/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../src/main/resources/apex/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../resources/java-msf4j-server/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../main/resources/java-pkmst/pojo.mustache | 2 +- .../additionalModelTypeAnnotations.mustache | 2 ++ .../java-undertow-server/pojo.mustache | 2 +- .../model/AdditionalPropertiesAnyType.java | 1 + .../model/AdditionalPropertiesArray.java | 1 + .../model/AdditionalPropertiesBoolean.java | 1 + .../model/AdditionalPropertiesClass.java | 1 + .../model/AdditionalPropertiesInteger.java | 1 + .../model/AdditionalPropertiesNumber.java | 1 + .../model/AdditionalPropertiesObject.java | 1 + .../model/AdditionalPropertiesString.java | 1 + .../org/openapitools/client/model/Animal.java | 1 + .../model/ArrayOfArrayOfNumberOnly.java | 1 + .../client/model/ArrayOfNumberOnly.java | 1 + .../openapitools/client/model/ArrayTest.java | 1 + .../client/model/Capitalization.java | 1 + .../org/openapitools/client/model/Cat.java | 1 + .../openapitools/client/model/CatAllOf.java | 1 + .../openapitools/client/model/Category.java | 1 + .../openapitools/client/model/ClassModel.java | 1 + .../org/openapitools/client/model/Client.java | 1 + .../org/openapitools/client/model/Dog.java | 1 + .../openapitools/client/model/DogAllOf.java | 1 + .../openapitools/client/model/EnumArrays.java | 1 + .../openapitools/client/model/EnumTest.java | 1 + .../client/model/FileSchemaTestClass.java | 1 + .../openapitools/client/model/FormatTest.java | 1 + .../client/model/HasOnlyReadOnly.java | 1 + .../openapitools/client/model/MapTest.java | 1 + ...ropertiesAndAdditionalPropertiesClass.java | 1 + .../client/model/Model200Response.java | 1 + .../client/model/ModelApiResponse.java | 1 + .../client/model/ModelReturn.java | 1 + .../org/openapitools/client/model/Name.java | 1 + .../openapitools/client/model/NumberOnly.java | 1 + .../org/openapitools/client/model/Order.java | 1 + .../client/model/OuterComposite.java | 1 + .../org/openapitools/client/model/Pet.java | 1 + .../client/model/ReadOnlyFirst.java | 1 + .../client/model/SpecialModelName.java | 1 + .../org/openapitools/client/model/Tag.java | 1 + .../client/model/TypeHolderDefault.java | 1 + .../client/model/TypeHolderExample.java | 1 + .../org/openapitools/client/model/User.java | 1 + .../openapitools/client/model/XmlItem.java | 1 + 97 files changed, 140 insertions(+), 19 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/Java/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaInflector/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/spec/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaPlayFramework/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaSpring/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaVertXServer/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/JavaVertXWebServer/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/apex/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/java-msf4j-server/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/java-pkmst/additionalModelTypeAnnotations.mustache create mode 100644 modules/openapi-generator/src/main/resources/java-undertow-server/additionalModelTypeAnnotations.mustache diff --git a/bin/java-petstore-feign.sh b/bin/java-petstore-feign.sh index abac67deb9d..48038613a82 100755 --- a/bin/java-petstore-feign.sh +++ b/bin/java-petstore-feign.sh @@ -27,7 +27,7 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/Java/libraries/feign -i modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -g java -c bin/java-petstore-feign-9x.json -o samples/client/petstore/java/feign --additional-properties hideGenerationTimestamp=true,booleanGetterPrefix=is $@" +ags="generate -t modules/openapi-generator/src/main/resources/Java/libraries/feign -i modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -g java -c bin/java-petstore-feign-9x.json -o samples/client/petstore/java/feign --additional-properties hideGenerationTimestamp=true,booleanGetterPrefix=is,additionalModelTypeAnnotations=@javax.annotation.concurrent.Immutable $@" echo "Removing files and folders under samples/client/petstore/java/feign/src/main" rm -rf samples/client/petstore/java/feign/src/main diff --git a/bin/windows/java-petstore-feign.bat b/bin/windows/java-petstore-feign.bat index e68e2d818f7..261965dcb6f 100644 --- a/bin/windows/java-petstore-feign.bat +++ b/bin/windows/java-petstore-feign.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -set ags=generate -t modules\openapi-generator\src\main\resources\Java\libraries\feign -i modules\openapi-generator\src\test\resources\2_0\petstore-with-fake-endpoints-models-for-testing.yaml -g java -c bin\java-petstore-feign-9x.json -o samples\client\petstore\java\feign --additional-properties hideGenerationTimestamp=true,booleanGetterPrefix=is +set ags=generate -t modules\openapi-generator\src\main\resources\Java\libraries\feign -i modules\openapi-generator\src\test\resources\2_0\petstore-with-fake-endpoints-models-for-testing.yaml -g java -c bin\java-petstore-feign-9x.json -o samples\client\petstore\java\feign --additional-properties hideGenerationTimestamp=true,booleanGetterPrefix=is,additionalModelTypeAnnotations=@javax.annotation.concurrent.Immutable java %JAVA_OPTS% -jar %executable% %ags% diff --git a/docs/generators/groovy.md b/docs/generators/groovy.md index 7dcf10b0777..688b2b1ac93 100644 --- a/docs/generators/groovy.md +++ b/docs/generators/groovy.md @@ -34,6 +34,7 @@ sidebar_label: groovy |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index 4d3c774468e..37856678e67 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -36,6 +36,7 @@ sidebar_label: java-inflector |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-msf4j.md b/docs/generators/java-msf4j.md index 543aa97f828..ece46f99046 100644 --- a/docs/generators/java-msf4j.md +++ b/docs/generators/java-msf4j.md @@ -36,6 +36,7 @@ sidebar_label: java-msf4j |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-pkmst.md b/docs/generators/java-pkmst.md index 6d33790e60c..30eff4add44 100644 --- a/docs/generators/java-pkmst.md +++ b/docs/generators/java-pkmst.md @@ -36,6 +36,7 @@ sidebar_label: java-pkmst |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-play-framework.md b/docs/generators/java-play-framework.md index b7fa80b5823..bad8968d3e2 100644 --- a/docs/generators/java-play-framework.md +++ b/docs/generators/java-play-framework.md @@ -36,6 +36,7 @@ sidebar_label: java-play-framework |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-undertow-server.md b/docs/generators/java-undertow-server.md index c620227b1ee..6b780fa3f41 100644 --- a/docs/generators/java-undertow-server.md +++ b/docs/generators/java-undertow-server.md @@ -36,6 +36,7 @@ sidebar_label: java-undertow-server |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-vertx-web.md b/docs/generators/java-vertx-web.md index 059acc0a2a0..23aee105dd9 100644 --- a/docs/generators/java-vertx-web.md +++ b/docs/generators/java-vertx-web.md @@ -36,6 +36,7 @@ sidebar_label: java-vertx-web |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java-vertx.md b/docs/generators/java-vertx.md index e285f021a16..27240770c34 100644 --- a/docs/generators/java-vertx.md +++ b/docs/generators/java-vertx.md @@ -36,6 +36,7 @@ sidebar_label: java-vertx |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/java.md b/docs/generators/java.md index 2ac7fbeaab5..108381ededa 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -36,6 +36,7 @@ sidebar_label: java |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md index e90da21468b..5a1cbe843b4 100644 --- a/docs/generators/jaxrs-cxf-cdi.md +++ b/docs/generators/jaxrs-cxf-cdi.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-cxf-cdi |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index 8b9ea2186ac..46f554eb3d8 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-cxf-client |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-cxf-extended.md b/docs/generators/jaxrs-cxf-extended.md index df0d2004bd0..9259685cc18 100644 --- a/docs/generators/jaxrs-cxf-extended.md +++ b/docs/generators/jaxrs-cxf-extended.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-cxf-extended |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-cxf.md b/docs/generators/jaxrs-cxf.md index bae14d53f14..bcb14352a97 100644 --- a/docs/generators/jaxrs-cxf.md +++ b/docs/generators/jaxrs-cxf.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-cxf |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-jersey.md b/docs/generators/jaxrs-jersey.md index 16419d4bf5f..ee1782b7337 100644 --- a/docs/generators/jaxrs-jersey.md +++ b/docs/generators/jaxrs-jersey.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-jersey |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-resteasy-eap.md b/docs/generators/jaxrs-resteasy-eap.md index 615d5702600..baa90886e53 100644 --- a/docs/generators/jaxrs-resteasy-eap.md +++ b/docs/generators/jaxrs-resteasy-eap.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-resteasy-eap |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-resteasy.md b/docs/generators/jaxrs-resteasy.md index 885caa88962..62e6fc5254e 100644 --- a/docs/generators/jaxrs-resteasy.md +++ b/docs/generators/jaxrs-resteasy.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-resteasy |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md index e70657aa2fc..1051b458ecd 100644 --- a/docs/generators/jaxrs-spec.md +++ b/docs/generators/jaxrs-spec.md @@ -36,6 +36,7 @@ sidebar_label: jaxrs-spec |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| diff --git a/docs/generators/spring.md b/docs/generators/spring.md index c122ddcb4de..082d3fbd0d5 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -36,6 +36,7 @@ sidebar_label: spring |java8|Option. Use Java8 classes instead of third party equivalents|
**true**
Use Java 8 classes such as Base64. Use java8 default interface when a responseWrapper is used
**false**
Various third party libraries as needed
|false| |disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| +|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations)| |null| |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| 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 4d99af1c058..7bc938a6811 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 @@ -54,6 +54,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code public static final String SUPPORT_JAVA6 = "supportJava6"; public static final String DISABLE_HTML_ESCAPING = "disableHtmlEscaping"; public static final String BOOLEAN_GETTER_PREFIX = "booleanGetterPrefix"; + public static final String ADDITIONAL_MODEL_TYPE_ANNOTATIONS = "additionalModelTypeAnnotations"; protected String dateLibrary = "threetenbp"; protected boolean supportAsync = false; @@ -91,6 +92,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code protected String parentArtifactId = ""; protected String parentVersion = ""; protected boolean parentOverridden = false; + protected List additionalModelTypeAnnotations = new LinkedList<>(); public AbstractJavaCodegen() { super(); @@ -184,6 +186,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code cliOptions.add(CliOption.newBoolean(DISABLE_HTML_ESCAPING, "Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)", disableHtmlEscaping)); cliOptions.add(CliOption.newString(BOOLEAN_GETTER_PREFIX, "Set booleanGetterPrefix").defaultValue(this.getBooleanGetterPrefix())); + cliOptions.add(CliOption.newString(ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "Additional annotations for model type(class level annotations)")); cliOptions.add(CliOption.newString(CodegenConstants.PARENT_GROUP_ID, CodegenConstants.PARENT_GROUP_ID_DESC)); cliOptions.add(CliOption.newString(CodegenConstants.PARENT_ARTIFACT_ID, CodegenConstants.PARENT_ARTIFACT_ID_DESC)); @@ -221,6 +224,12 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } additionalProperties.put(BOOLEAN_GETTER_PREFIX, booleanGetterPrefix); + if (additionalProperties.containsKey(ADDITIONAL_MODEL_TYPE_ANNOTATIONS)) { + String additionalAnnotationsList = additionalProperties.get(ADDITIONAL_MODEL_TYPE_ANNOTATIONS).toString(); + + this.setAdditionalModelTypeAnnotations(Arrays.asList(additionalAnnotationsList.split(";"))); + } + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); } else if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { @@ -488,6 +497,20 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } } + @Override + public Map postProcessAllModels(Map objs) { + objs = super.updateAllModels(objs); + + if (!additionalModelTypeAnnotations.isEmpty()) { + for (String modelName : objs.keySet()) { + Map models = (Map) objs.get(modelName); + models.put(ADDITIONAL_MODEL_TYPE_ANNOTATIONS, additionalModelTypeAnnotations); + } + } + + return objs; + } + private void sanitizeConfig() { // Sanitize any config options here. We also have to update the additionalProperties because // the whole additionalProperties object is injected into the main object passed to the mustache layer @@ -1547,6 +1570,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code this.parentOverridden = parentOverridden; } + public void setAdditionalModelTypeAnnotations(final List additionalModelTypeAnnotations) { + this.additionalModelTypeAnnotations = additionalModelTypeAnnotations; + } + @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { super.addAdditionPropertiesToCodeGenModel(codegenModel, schema); diff --git a/modules/openapi-generator/src/main/resources/Java/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/Java/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/pojo.mustache index 9814954cc4b..796f9a7ec14 100644 --- a/modules/openapi-generator/src/main/resources/Java/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/pojo.mustache @@ -9,7 +9,7 @@ {{/vars}} }) {{/jackson}} -{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}} +{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}} public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#parcelableModel}}implements Parcelable {{#serializableModel}}, Serializable {{/serializableModel}}{{/parcelableModel}}{{^parcelableModel}}{{#serializableModel}}implements Serializable {{/serializableModel}}{{/parcelableModel}}{ {{#serializableModel}} private static final long serialVersionUID = 1L; diff --git a/modules/openapi-generator/src/main/resources/JavaInflector/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaInflector/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaInflector/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache index badfdbc35a3..34c34a0ec26 100644 --- a/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache @@ -1,5 +1,5 @@ {{#description}}@ApiModel(description = "{{{description}}}"){{/description}} -{{>generatedAnnotation}} +{{>generatedAnnotation}}{{>additionalModelTypeAnnotations}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}} {{#isEnum}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache index 8c5e307bdcd..6d50290d16e 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache @@ -3,7 +3,7 @@ import java.util.Objects; import javax.xml.bind.annotation.*; -{{#description}}@ApiModel(description = "{{{description}}}"){{/description}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} +{{#description}}@ApiModel(description = "{{{description}}}"){{/description}}{{>additionalModelTypeAnnotations}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pojo.mustache index 402331f1fbf..bca023bfb80 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pojo.mustache @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; * {{{description}}} */ @ApiModel(description="{{{description}}}") -{{/description}} +{{/description}}{{>additionalModelTypeAnnotations}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}{{#serializableModel}} implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} {{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache index df02462ff23..df99f136dc2 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache @@ -14,7 +14,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; **/ @ApiModel(description="{{{description}}}") {{/description}} -{{>xmlPojoAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}{{#serializableModel}} implements Serializable{{/serializableModel}} { +{{>additionalModelTypeAnnotations}}{{>xmlPojoAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}{{#serializableModel}} implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} {{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} {{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache index 302b7e257c8..7dc314102f4 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache @@ -9,7 +9,7 @@ {{/vars}} }) {{/jackson}} -{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} +{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}} {{#isEnum}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache index a3262bd41d5..9b66957fbf1 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache @@ -1,6 +1,6 @@ import io.swagger.annotations.*; -{{#description}}@ApiModel(description="{{{description}}}"){{/description}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} +{{#description}}@ApiModel(description="{{{description}}}"){{/description}}{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#serializableModel}} private static final long serialVersionUID = 1L; diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache index cbb6c907150..3e3815c4aeb 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache @@ -1,6 +1,6 @@ import io.swagger.annotations.*; -{{#description}}@ApiModel(description="{{{description}}}"){{/description}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} +{{#description}}@ApiModel(description="{{{description}}}"){{/description}}{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#serializableModel}} private static final long serialVersionUID = 1L; diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache index aecf440129d..dc9bd039d02 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache @@ -10,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonValue; /** * {{description}} **/{{/description}}{{#useSwaggerAnnotations}} -{{#description}}@ApiModel(description = "{{{description}}}"){{/description}}{{/useSwaggerAnnotations}} +{{#description}}{{>additionalModelTypeAnnotations}}@ApiModel(description = "{{{description}}}"){{/description}}{{/useSwaggerAnnotations}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} diff --git a/modules/openapi-generator/src/main/resources/JavaPlayFramework/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaPlayFramework/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaPlayFramework/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache index 164bbcea5d9..f047ee98336 100644 --- a/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache @@ -5,7 +5,7 @@ import javax.validation.constraints.*; /** * {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} */ -{{>generatedAnnotation}} +{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}} @SuppressWarnings({"UnusedReturnValue", "WeakerAccess"}) public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaSpring/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache index 5ccc8a8c936..9c748649e5f 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache @@ -2,7 +2,7 @@ * {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} */{{#description}} @ApiModel(description = "{{{description}}}"){{/description}} -{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}} +{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}}{{>additionalModelTypeAnnotations}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}{{^parent}}{{#hateoas}}extends RepresentationModel<{{classname}}> {{/hateoas}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#serializableModel}} private static final long serialVersionUID = 1L; diff --git a/modules/openapi-generator/src/main/resources/JavaVertXServer/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaVertXServer/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaVertXServer/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache index 014ba3e2b43..8a1d4180d44 100644 --- a/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache @@ -1,4 +1,4 @@ -@JsonInclude(JsonInclude.Include.NON_NULL) +{{>additionalModelTypeAnnotations}}@JsonInclude(JsonInclude.Include.NON_NULL) public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} diff --git a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/pojo.mustache index 014ba3e2b43..8a1d4180d44 100644 --- a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/pojo.mustache @@ -1,4 +1,4 @@ -@JsonInclude(JsonInclude.Include.NON_NULL) +{{>additionalModelTypeAnnotations}}@JsonInclude(JsonInclude.Include.NON_NULL) public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} diff --git a/modules/openapi-generator/src/main/resources/apex/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/apex/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/apex/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/apex/pojo.mustache b/modules/openapi-generator/src/main/resources/apex/pojo.mustache index 320b90922d8..9f192178eea 100644 --- a/modules/openapi-generator/src/main/resources/apex/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/apex/pojo.mustache @@ -1,6 +1,6 @@ /** * {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} - */ + */{{>additionalModelTypeAnnotations}} public class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}{{#interfaces}}{{#-first}} implements {{/-first}}{{^-first}}, {{/-first}}{{.}}{{/interfaces}} { {{#vars}} {{#isEnum}} diff --git a/modules/openapi-generator/src/main/resources/java-msf4j-server/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/java-msf4j-server/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/java-msf4j-server/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/java-msf4j-server/pojo.mustache b/modules/openapi-generator/src/main/resources/java-msf4j-server/pojo.mustache index 38559db8fb4..7f44c8fd125 100644 --- a/modules/openapi-generator/src/main/resources/java-msf4j-server/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/java-msf4j-server/pojo.mustache @@ -2,7 +2,7 @@ * {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} */{{#description}} @ApiModel(description = "{{{description}}}"){{/description}} -{{>generatedAnnotation}} +{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}} {{#isEnum}} diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/java-pkmst/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache index 5b853d80943..ddf67509268 100644 --- a/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache @@ -3,7 +3,7 @@ */{{#description}} @ApiModel(description = "{{{description}}}"){{/description}} {{#useBeanValidation}}@Validated{{/useBeanValidation}} -{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}} +{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}}{{>additionalModelTypeAnnotations}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#serializableModel}} private static final long serialVersionUID = 1L; diff --git a/modules/openapi-generator/src/main/resources/java-undertow-server/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/java-undertow-server/additionalModelTypeAnnotations.mustache new file mode 100644 index 00000000000..e5dc1ac1295 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/java-undertow-server/additionalModelTypeAnnotations.mustache @@ -0,0 +1,2 @@ +{{#additionalModelTypeAnnotations}}{{.}} +{{/additionalModelTypeAnnotations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/java-undertow-server/pojo.mustache b/modules/openapi-generator/src/main/resources/java-undertow-server/pojo.mustache index 5fb61ee6fc0..6590268dc96 100644 --- a/modules/openapi-generator/src/main/resources/java-undertow-server/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/java-undertow-server/pojo.mustache @@ -1,5 +1,5 @@ {{#description}}@ApiModel(description = "{{{description}}}"){{/description}} -{{>generatedAnnotation}} +{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java index 0f1223c2bc6..b3b18538873 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesAnyType.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesAnyType extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java index c03535ab947..b096a099e9d 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesArray.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesArray extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java index 4356a4f8c1e..cb08b798a87 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesBoolean.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesBoolean extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java index 781d4686e98..e35f2cca9ab 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java @@ -43,6 +43,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; AdditionalPropertiesClass.JSON_PROPERTY_ANYTYPE2, AdditionalPropertiesClass.JSON_PROPERTY_ANYTYPE3 }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesClass { public static final String JSON_PROPERTY_MAP_STRING = "map_string"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java index 2426e7c974c..c3241fbab3d 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesInteger.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesInteger extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java index da407ccdc47..2e4c40ce549 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesNumber.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesNumber extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java index 5e468870311..ac8cd6cf152 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesObject.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesObject extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java index ed080254966..94b3707ee95 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ AdditionalPropertiesString.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class AdditionalPropertiesString extends HashMap { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Animal.java index ff1d1f941ae..845a10ecb10 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Animal.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Animal.JSON_PROPERTY_CLASS_NAME, Animal.JSON_PROPERTY_COLOR }) +@javax.annotation.concurrent.Immutable @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true) @JsonSubTypes({ diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java index 96f829bc648..d2b96d3910a 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ ArrayOfArrayOfNumberOnly.JSON_PROPERTY_ARRAY_ARRAY_NUMBER }) +@javax.annotation.concurrent.Immutable public class ArrayOfArrayOfNumberOnly { public static final String JSON_PROPERTY_ARRAY_ARRAY_NUMBER = "ArrayArrayNumber"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java index 37e40dbd3ec..c4ad3fd608d 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ ArrayOfNumberOnly.JSON_PROPERTY_ARRAY_NUMBER }) +@javax.annotation.concurrent.Immutable public class ArrayOfNumberOnly { public static final String JSON_PROPERTY_ARRAY_NUMBER = "ArrayNumber"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayTest.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayTest.java index de7c895ac93..c650f156e57 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayTest.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ArrayTest.java @@ -34,6 +34,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; ArrayTest.JSON_PROPERTY_ARRAY_ARRAY_OF_INTEGER, ArrayTest.JSON_PROPERTY_ARRAY_ARRAY_OF_MODEL }) +@javax.annotation.concurrent.Immutable public class ArrayTest { public static final String JSON_PROPERTY_ARRAY_OF_STRING = "array_of_string"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Capitalization.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Capitalization.java index 033e9788110..20050a23c00 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Capitalization.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Capitalization.java @@ -34,6 +34,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Capitalization.JSON_PROPERTY_SC_A_E_T_H_FLOW_POINTS, Capitalization.JSON_PROPERTY_A_T_T_N_A_M_E }) +@javax.annotation.concurrent.Immutable public class Capitalization { public static final String JSON_PROPERTY_SMALL_CAMEL = "smallCamel"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Cat.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Cat.java index 569d7d08d59..80b4560effc 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Cat.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Cat.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ Cat.JSON_PROPERTY_DECLAWED }) +@javax.annotation.concurrent.Immutable public class Cat extends Animal { public static final String JSON_PROPERTY_DECLAWED = "declawed"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/CatAllOf.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/CatAllOf.java index cc04e0e022d..a1c88ddb120 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/CatAllOf.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/CatAllOf.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ CatAllOf.JSON_PROPERTY_DECLAWED }) +@javax.annotation.concurrent.Immutable public class CatAllOf { public static final String JSON_PROPERTY_DECLAWED = "declawed"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Category.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Category.java index 868ba875074..e351a7841bb 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Category.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Category.JSON_PROPERTY_ID, Category.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class Category { public static final String JSON_PROPERTY_ID = "id"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ClassModel.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ClassModel.java index 4de7664b26a..01403deddd8 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ClassModel.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ClassModel.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ ClassModel.JSON_PROPERTY_PROPERTY_CLASS }) +@javax.annotation.concurrent.Immutable public class ClassModel { public static final String JSON_PROPERTY_PROPERTY_CLASS = "_class"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Client.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Client.java index 02b0aac2247..6cd245b2f72 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Client.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Client.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ Client.JSON_PROPERTY_CLIENT }) +@javax.annotation.concurrent.Immutable public class Client { public static final String JSON_PROPERTY_CLIENT = "client"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Dog.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Dog.java index 78044654d50..fd9ac0975c6 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Dog.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Dog.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ Dog.JSON_PROPERTY_BREED }) +@javax.annotation.concurrent.Immutable public class Dog extends Animal { public static final String JSON_PROPERTY_BREED = "breed"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/DogAllOf.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/DogAllOf.java index dd42595cf20..57942316357 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/DogAllOf.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/DogAllOf.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ DogAllOf.JSON_PROPERTY_BREED }) +@javax.annotation.concurrent.Immutable public class DogAllOf { public static final String JSON_PROPERTY_BREED = "breed"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java index aff182cd498..5585af2f9c2 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; EnumArrays.JSON_PROPERTY_JUST_SYMBOL, EnumArrays.JSON_PROPERTY_ARRAY_ENUM }) +@javax.annotation.concurrent.Immutable public class EnumArrays { /** diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java index 51a1a645a10..ca72f8b9012 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java @@ -34,6 +34,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; EnumTest.JSON_PROPERTY_ENUM_NUMBER, EnumTest.JSON_PROPERTY_OUTER_ENUM }) +@javax.annotation.concurrent.Immutable public class EnumTest { /** diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java index 8166597792d..d1793a655e0 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; FileSchemaTestClass.JSON_PROPERTY_FILE, FileSchemaTestClass.JSON_PROPERTY_FILES }) +@javax.annotation.concurrent.Immutable public class FileSchemaTestClass { public static final String JSON_PROPERTY_FILE = "file"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FormatTest.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FormatTest.java index 4dee7f6c9dc..20939e85f8b 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FormatTest.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/FormatTest.java @@ -47,6 +47,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; FormatTest.JSON_PROPERTY_PASSWORD, FormatTest.JSON_PROPERTY_BIG_DECIMAL }) +@javax.annotation.concurrent.Immutable public class FormatTest { public static final String JSON_PROPERTY_INTEGER = "integer"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java index 0a3f0d46436..43e9ddd65f6 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; HasOnlyReadOnly.JSON_PROPERTY_BAR, HasOnlyReadOnly.JSON_PROPERTY_FOO }) +@javax.annotation.concurrent.Immutable public class HasOnlyReadOnly { public static final String JSON_PROPERTY_BAR = "bar"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java index 113f92dd9cb..62492374cca 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java @@ -35,6 +35,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; MapTest.JSON_PROPERTY_DIRECT_MAP, MapTest.JSON_PROPERTY_INDIRECT_MAP }) +@javax.annotation.concurrent.Immutable public class MapTest { public static final String JSON_PROPERTY_MAP_MAP_OF_STRING = "map_map_of_string"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java index d483d69700f..205ba6040a9 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java @@ -37,6 +37,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; MixedPropertiesAndAdditionalPropertiesClass.JSON_PROPERTY_DATE_TIME, MixedPropertiesAndAdditionalPropertiesClass.JSON_PROPERTY_MAP }) +@javax.annotation.concurrent.Immutable public class MixedPropertiesAndAdditionalPropertiesClass { public static final String JSON_PROPERTY_UUID = "uuid"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Model200Response.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Model200Response.java index dd99468a005..5d4a6f98461 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Model200Response.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Model200Response.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Model200Response.JSON_PROPERTY_NAME, Model200Response.JSON_PROPERTY_PROPERTY_CLASS }) +@javax.annotation.concurrent.Immutable public class Model200Response { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelApiResponse.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelApiResponse.java index 383cafdd3a5..d6acae129e4 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelApiResponse.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelApiResponse.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; ModelApiResponse.JSON_PROPERTY_TYPE, ModelApiResponse.JSON_PROPERTY_MESSAGE }) +@javax.annotation.concurrent.Immutable public class ModelApiResponse { public static final String JSON_PROPERTY_CODE = "code"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelReturn.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelReturn.java index b62e13a90a0..9b51c8944a4 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelReturn.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ModelReturn.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ ModelReturn.JSON_PROPERTY_RETURN }) +@javax.annotation.concurrent.Immutable public class ModelReturn { public static final String JSON_PROPERTY_RETURN = "return"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Name.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Name.java index bd625c5f66f..811858d4a84 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Name.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Name.java @@ -33,6 +33,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Name.JSON_PROPERTY_PROPERTY, Name.JSON_PROPERTY_123NUMBER }) +@javax.annotation.concurrent.Immutable public class Name { public static final String JSON_PROPERTY_NAME = "name"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/NumberOnly.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/NumberOnly.java index 5ca72a169fe..7e27fe83b1c 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/NumberOnly.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/NumberOnly.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ NumberOnly.JSON_PROPERTY_JUST_NUMBER }) +@javax.annotation.concurrent.Immutable public class NumberOnly { public static final String JSON_PROPERTY_JUST_NUMBER = "JustNumber"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java index d4f5f1c55bd..aa3d4a98d0c 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java @@ -35,6 +35,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Order.JSON_PROPERTY_STATUS, Order.JSON_PROPERTY_COMPLETE }) +@javax.annotation.concurrent.Immutable public class Order { public static final String JSON_PROPERTY_ID = "id"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterComposite.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterComposite.java index 4d73ff2bbd6..89b5ed48f3b 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterComposite.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterComposite.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; OuterComposite.JSON_PROPERTY_MY_STRING, OuterComposite.JSON_PROPERTY_MY_BOOLEAN }) +@javax.annotation.concurrent.Immutable public class OuterComposite { public static final String JSON_PROPERTY_MY_NUMBER = "my_number"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java index be74dd5ca08..874476d41a3 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java @@ -38,6 +38,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Pet.JSON_PROPERTY_TAGS, Pet.JSON_PROPERTY_STATUS }) +@javax.annotation.concurrent.Immutable public class Pet { public static final String JSON_PROPERTY_ID = "id"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java index b3e58ef3d2c..1cee03d06c3 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; ReadOnlyFirst.JSON_PROPERTY_BAR, ReadOnlyFirst.JSON_PROPERTY_BAZ }) +@javax.annotation.concurrent.Immutable public class ReadOnlyFirst { public static final String JSON_PROPERTY_BAR = "bar"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/SpecialModelName.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/SpecialModelName.java index 35ad3bf4699..453c8ad9b99 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/SpecialModelName.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/SpecialModelName.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({ SpecialModelName.JSON_PROPERTY_$_SPECIAL_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class SpecialModelName { public static final String JSON_PROPERTY_$_SPECIAL_PROPERTY_NAME = "$special[property.name]"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Tag.java index a3ecb398faa..a7c2f4cafe2 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Tag.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; Tag.JSON_PROPERTY_ID, Tag.JSON_PROPERTY_NAME }) +@javax.annotation.concurrent.Immutable public class Tag { public static final String JSON_PROPERTY_ID = "id"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderDefault.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderDefault.java index e5996f69468..f5a3d19c0a9 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderDefault.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderDefault.java @@ -36,6 +36,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; TypeHolderDefault.JSON_PROPERTY_BOOL_ITEM, TypeHolderDefault.JSON_PROPERTY_ARRAY_ITEM }) +@javax.annotation.concurrent.Immutable public class TypeHolderDefault { public static final String JSON_PROPERTY_STRING_ITEM = "string_item"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderExample.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderExample.java index b7f141913e7..d00f5441862 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderExample.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/TypeHolderExample.java @@ -37,6 +37,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; TypeHolderExample.JSON_PROPERTY_BOOL_ITEM, TypeHolderExample.JSON_PROPERTY_ARRAY_ITEM }) +@javax.annotation.concurrent.Immutable public class TypeHolderExample { public static final String JSON_PROPERTY_STRING_ITEM = "string_item"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/User.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/User.java index b7e74643dab..f83fb1e6718 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/User.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/User.java @@ -36,6 +36,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; User.JSON_PROPERTY_PHONE, User.JSON_PROPERTY_USER_STATUS }) +@javax.annotation.concurrent.Immutable public class User { public static final String JSON_PROPERTY_ID = "id"; diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/XmlItem.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/XmlItem.java index 65e7c295192..22d7ad37054 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/XmlItem.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/XmlItem.java @@ -60,6 +60,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; XmlItem.JSON_PROPERTY_PREFIX_NS_ARRAY, XmlItem.JSON_PROPERTY_PREFIX_NS_WRAPPED_ARRAY }) +@javax.annotation.concurrent.Immutable public class XmlItem { public static final String JSON_PROPERTY_ATTRIBUTE_STRING = "attribute_string"; From dd1a624ba3dae349fd869d45135f1b222294e1fe Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 3 Dec 2019 21:55:28 +0800 Subject: [PATCH 51/96] Add a link to blog post in dotnetthoughts (#4683) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 46253b06bbd..d3a61a20f90 100644 --- a/README.md +++ b/README.md @@ -703,6 +703,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/) - 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com) - 2019-11-20 - [Introduction to OpenAPI](https://noti.st/lornajane/HvDH7U/introduction-to-openapi) by [Lorna Mitchell](https://twitter.com/lornajane) at [GOTO Copenhagen 2019](https://gotocph.com/2019/) +- 2019-11-20 - [How to Generate Angular code from OpenAPI specifications](https://dotnetthoughts.net/how-to-generate-angular-code-from-openapi-specifications/) by Anuraj - 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) - 2019-11-25 - [openapi-generatorで手軽にスタブサーバとクライアントの生成](https://qiita.com/pochopocho13/items/8db662e1934fb2b408b8) by [@pochopocho13](https://twitter.com/pochopocho13) - 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/) From 2a592b5d013e90f02dff85f1085fa50af4525421 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 09:39:14 +0800 Subject: [PATCH 52/96] Update Swift technical committee --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3a61a20f90..f5c9e10067c 100644 --- a/README.md +++ b/README.md @@ -915,7 +915,7 @@ If you want to join the committee, please kindly apply by sending an email to te | Ruby | @cliffano (2017/07) @zlx (2017/09) @autopp (2019/02) | | Rust | @frol (2017/07) @farcaller (2017/08) @bjgill (2017/12) @richardwhiuk (2019/07) | | Scala | @clasnake (2017/07), @jimschubert (2017/09) [:heart:](https://www.patreon.com/jimschubert), @shijinkui (2018/01), @ramzimaalej (2018/03) | -| Swift | @jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @d-date (2018/03) @4brunu (2019/11) | +| Swift | @jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @4brunu (2019/11) | | TypeScript | @TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @nicokoenig (2018/09) @topce (2018/10) @akehir (2019/07) @petejohansonxo (2019/11) | :heart: = Link to support the contributor directly From cb2df9e84811c162b070554a1db64030b485d292 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 09:41:55 +0800 Subject: [PATCH 53/96] add docspring as sponsor (#4686) --- README.md | 4 +++- website/dynamic/sponsors.yml | 5 +++++ website/dynamic/users.yml | 10 +++++----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f5c9e10067c..d3bcbcbd14b 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,8 @@ If you find OpenAPI Generator useful for work, please consider asking your compa [![NamSor](https://openapi-generator.tech/img/companies/namsor.png)](https://www.namsor.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [![LightBow](https://openapi-generator.tech/img/companies/lightbow.png)](https://www.lightbow.net/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[![DocSpring](https://openapi-generator.tech/img/companies/docspring.png)](https://docspring.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) + #### Thank you GoDaddy for sponsoring the domain names and Linode for sponsoring the VPS @@ -583,11 +585,11 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [Crossover Health](https://crossoverhealth.com/) - [Cupix](https://www.cupix.com/) - [DB Systel](https://www.dbsystel.de) +- [DocSpring](https://docspring.com/) - [dwango](https://dwango.co.jp/) - [Edge Impulse](https://www.edgeimpulse.com/) - [Element AI](https://www.elementai.com/) - [Fenergo](https://www.fenergo.com/) -- [FormAPI](https://formapi.io/) - [FreshCells](https://www.freshcells.de/) - [Fuse](https://www.fuse.no/) - [Gantner](https://www.gantner.com) diff --git a/website/dynamic/sponsors.yml b/website/dynamic/sponsors.yml index ab74517f5f9..97559315838 100644 --- a/website/dynamic/sponsors.yml +++ b/website/dynamic/sponsors.yml @@ -8,3 +8,8 @@ image: "img/companies/lightbow.png" infoLink: "https://www.lightbow.net/?utm_source=openapi_generator&utm_medium=official_website&utm_campaign=sponsor" bronze: true +- + caption: "DocSpring" + image: "img/companies/docspring.png" + infoLink: "https://docspring.com/?utm_source=openapi_generator&utm_medium=official_website&utm_campaign=sponsor" + bronze: true diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index 12c4f5776ea..d37e034c9e2 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -98,6 +98,11 @@ image: "img/companies/db-systel.png" infoLink: "https://www.dbsystel.de" pinned: false +- + caption: "DocSpring" + image: "img/companies/docspring.png" + infoLink: "https://docspring.com" + pinned: false - caption: "dwango" image: "img/companies/dwango.png" @@ -118,11 +123,6 @@ image: "img/companies/fenergo.png" infoLink: "https://www.fenergo.com/" pinned: false -- - caption: "FormAPI" - image: "img/companies/formapi.png" - infoLink: "https://formapi.io/" - pinned: false - caption: "FreshCells" image: "img/companies/freshcells.png" From 7eeeab0825455d716cde533524bd2aae7656ab90 Mon Sep 17 00:00:00 2001 From: Thibault Duperron Date: Wed, 4 Dec 2019 02:43:36 +0100 Subject: [PATCH 54/96] Add space to spring doc (#4674) * Add space to spring doc * Remove fsharp change --- docs/generators/spring.md | 2 +- .../java/org/openapitools/codegen/languages/SpringCodegen.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/generators/spring.md b/docs/generators/spring.md index 082d3fbd0d5..793dfbbaa69 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -50,7 +50,7 @@ sidebar_label: spring |skipDefaultInterface|Whether to generate default implementations for java8 interfaces| |false| |async|use async Callable controllers| |false| |reactive|wrap responses in Mono/Flux Reactor types (spring-boot only)| |false| -|responseWrapper|wrap the responses in given type (Future,Callable,CompletableFuture,ListenableFuture,DeferredResult,HystrixCommand,RxObservable,RxSingle or fully qualified type)| |null| +|responseWrapper|wrap the responses in given type (Future, Callable, CompletableFuture,ListenableFuture, DeferredResult, HystrixCommand, RxObservable, RxSingle or fully qualified type)| |null| |virtualService|Generates the virtual service. For more details refer - https://github.com/elan-venture/virtualan/wiki| |false| |useTags|use tags for creating interface and controller classnames| |false| |useBeanValidation|Use BeanValidation API annotations| |true| 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 96c5f9d35bd..9c1cee26850 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 @@ -131,7 +131,7 @@ public class SpringCodegen extends AbstractJavaCodegen cliOptions.add(CliOption.newBoolean(SKIP_DEFAULT_INTERFACE, "Whether to generate default implementations for java8 interfaces", skipDefaultInterface)); cliOptions.add(CliOption.newBoolean(ASYNC, "use async Callable controllers", async)); cliOptions.add(CliOption.newBoolean(REACTIVE, "wrap responses in Mono/Flux Reactor types (spring-boot only)", reactive)); - cliOptions.add(new CliOption(RESPONSE_WRAPPER, "wrap the responses in given type (Future,Callable,CompletableFuture,ListenableFuture,DeferredResult,HystrixCommand,RxObservable,RxSingle or fully qualified type)")); + cliOptions.add(new CliOption(RESPONSE_WRAPPER, "wrap the responses in given type (Future, Callable, CompletableFuture,ListenableFuture, DeferredResult, HystrixCommand, RxObservable, RxSingle or fully qualified type)")); cliOptions.add(CliOption.newBoolean(VIRTUAL_SERVICE, "Generates the virtual service. For more details refer - https://github.com/elan-venture/virtualan/wiki")); cliOptions.add(CliOption.newBoolean(USE_TAGS, "use tags for creating interface and controller classnames", useTags)); cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations", useBeanValidation)); From 01e84d79a09cc8ca2e4bfbadcd84dc006f261c48 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Wed, 4 Dec 2019 09:53:12 +0800 Subject: [PATCH 55/96] Update the condition to free apiClient->apiKeys (#4685) --- .../src/main/resources/C-libcurl/apiClient.c.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/apiClient.c.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/apiClient.c.mustache index ac95c7ace7e..c6f29bc4918 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/apiClient.c.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/apiClient.c.mustache @@ -50,7 +50,7 @@ void apiClient_free(apiClient_t *apiClient) { } {{/isOAuth}} {{#isApiKey}} - if(apiClient->accessToken) { + if(apiClient->apiKeys) { list_free(apiClient->apiKeys); } {{/isApiKey}} From e0d6f7df1ff75affbdc10a57b3fd08b43379d32f Mon Sep 17 00:00:00 2001 From: Ramanth Addala Date: Wed, 4 Dec 2019 07:23:55 +0530 Subject: [PATCH 56/96] fix(r): fixing serializatin bug in empty json array (#4667) * fix(r): fixing serializatin bug in empty json array * fix(r): fixing serializatin bug in empty json array --- .../src/main/resources/r/api_client.mustache | 10 ++++++---- samples/client/petstore/R/R/api_client.R | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/r/api_client.mustache b/modules/openapi-generator/src/main/resources/r/api_client.mustache index eb70bad3447..22fd994ab64 100644 --- a/modules/openapi-generator/src/main/resources/r/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/r/api_client.mustache @@ -151,10 +151,12 @@ ApiClient <- R6::R6Class( } } } else { - returnObj <- vector("list", length = nrow(obj)) - if (nrow(obj) > 0) { - for (row in 1:nrow(obj)) { - returnObj[[row]] <- self$deserializeObj(obj[row, , drop = FALSE], innerReturnType, pkgEnv) + if(!is.null(nrow(obj))){ + returnObj <- vector("list", length = nrow(obj)) + if (nrow(obj) > 0) { + for (row in 1:nrow(obj)) { + returnObj[[row]] <- self$deserializeObj(obj[row, , drop = FALSE], innerReturnType, pkgEnv) + } } } } diff --git a/samples/client/petstore/R/R/api_client.R b/samples/client/petstore/R/R/api_client.R index 45396b84391..f6b8544aacd 100644 --- a/samples/client/petstore/R/R/api_client.R +++ b/samples/client/petstore/R/R/api_client.R @@ -149,10 +149,12 @@ ApiClient <- R6::R6Class( } } } else { - returnObj <- vector("list", length = nrow(obj)) - if (nrow(obj) > 0) { - for (row in 1:nrow(obj)) { - returnObj[[row]] <- self$deserializeObj(obj[row, , drop = FALSE], innerReturnType, pkgEnv) + if(!is.null(nrow(obj))){ + returnObj <- vector("list", length = nrow(obj)) + if (nrow(obj) > 0) { + for (row in 1:nrow(obj)) { + returnObj[[row]] <- self$deserializeObj(obj[row, , drop = FALSE], innerReturnType, pkgEnv) + } } } } From 06ba8317f9714fb303b5d48c8317359681d3e7f1 Mon Sep 17 00:00:00 2001 From: Jorge Rodriguez Date: Wed, 4 Dec 2019 03:06:42 +0100 Subject: [PATCH 57/96] Error in the reactive client when the path variables are a list (#4687) (#4689) * Error in the reactive client when the path variables are a list (#4687) * Update samples (#4687) --- .../libraries/webclient/ApiClient.mustache | 24 ++++++++++++++++++- .../Java/libraries/webclient/api.mustache | 3 ++- .../org/openapitools/client/ApiClient.java | 24 ++++++++++++++++++- .../client/api/AnotherFakeApi.java | 1 + .../org/openapitools/client/api/FakeApi.java | 14 +++++++++++ .../client/api/FakeClassnameTags123Api.java | 1 + .../org/openapitools/client/api/PetApi.java | 9 +++++++ .../org/openapitools/client/api/StoreApi.java | 4 ++++ .../org/openapitools/client/api/UserApi.java | 8 +++++++ 9 files changed, 85 insertions(+), 3 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 013ab6dc0e5..e21f3847641 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 @@ -497,7 +497,7 @@ public class ApiClient { formParams .toSingleValueMap() .entrySet() - .forEach(es -> map.add(es.getKey(), (String) es.getValue())); + .forEach(es -> map.add(es.getKey(), String.valueOf(es.getValue()))); return BodyInserters.fromFormData(map); } else if(MediaType.MULTIPART_FORM_DATA.equals(contentType)) { @@ -638,6 +638,28 @@ public class ApiClient { } } + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param values The values of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(CollectionFormat collectionFormat, Collection values) { + // create the value based on the collection format + if (CollectionFormat.MULTI.equals(collectionFormat)) { + // not valid for path params + return parameterToString(values); + } + + // collectionFormat is assumed to be "csv" by default + if(collectionFormat == null) { + collectionFormat = CollectionFormat.CSV; + } + + return collectionFormat.collectionToString(values); + } + private class ApiClientHttpRequestInterceptor implements ClientHttpRequestInterceptor { private final Log log = LogFactory.getLog(ApiClientHttpRequestInterceptor.class); 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 96066577b0e..9138d7d2e7a 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 @@ -70,7 +70,8 @@ public class {{classname}} { {{/required}}{{/allParams}} // create path and map variables final Map pathParams = new HashMap();{{#hasPathParams}}{{#pathParams}} - pathParams.put("{{baseName}}", {{{paramName}}});{{/pathParams}}{{/hasPathParams}} + pathParams.put("{{baseName}}", {{#collectionFormat}}apiClient.collectionPathParameterToString(ApiClient.CollectionFormat.valueOf("csv".toUpperCase()), {{/collectionFormat}}{{{paramName}}}{{#collectionFormat}}){{/collectionFormat}});{{/pathParams}}{{/hasPathParams}} + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); 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 776694a8b87..6ace9f2a182 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 @@ -493,7 +493,7 @@ public class ApiClient { formParams .toSingleValueMap() .entrySet() - .forEach(es -> map.add(es.getKey(), (String) es.getValue())); + .forEach(es -> map.add(es.getKey(), String.valueOf(es.getValue()))); return BodyInserters.fromFormData(map); } else if(MediaType.MULTIPART_FORM_DATA.equals(contentType)) { @@ -634,6 +634,28 @@ public class ApiClient { } } + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param values The values of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(CollectionFormat collectionFormat, Collection values) { + // create the value based on the collection format + if (CollectionFormat.MULTI.equals(collectionFormat)) { + // not valid for path params + return parameterToString(values); + } + + // collectionFormat is assumed to be "csv" by default + if(collectionFormat == null) { + collectionFormat = CollectionFormat.CSV; + } + + return collectionFormat.collectionToString(values); + } + private class ApiClientHttpRequestInterceptor implements ClientHttpRequestInterceptor { private final Log log = LogFactory.getLog(ApiClientHttpRequestInterceptor.class); 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 202d239489f..1b7f76e019b 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 @@ -64,6 +64,7 @@ public class AnotherFakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); 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 25423c5bb27..fcbe10439e9 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 @@ -71,6 +71,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -102,6 +103,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -133,6 +135,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -164,6 +167,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -195,6 +199,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -230,6 +235,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -271,6 +277,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -309,6 +316,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -375,6 +383,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -442,6 +451,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -507,6 +517,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -550,6 +561,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -591,6 +603,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -655,6 +668,7 @@ public class FakeApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); 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 b6f694ab5f3..35c54dd0fc6 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 @@ -64,6 +64,7 @@ public class FakeClassnameTags123Api { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); 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 d1b34d105c2..079890b3a06 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 @@ -66,6 +66,7 @@ public class PetApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -104,6 +105,7 @@ public class PetApi { final Map pathParams = new HashMap(); pathParams.put("petId", petId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -142,6 +144,7 @@ public class PetApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -181,6 +184,7 @@ public class PetApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -222,6 +226,7 @@ public class PetApi { final Map pathParams = new HashMap(); pathParams.put("petId", petId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -260,6 +265,7 @@ public class PetApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -298,6 +304,7 @@ public class PetApi { final Map pathParams = new HashMap(); pathParams.put("petId", petId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -342,6 +349,7 @@ public class PetApi { final Map pathParams = new HashMap(); pathParams.put("petId", petId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -393,6 +401,7 @@ public class PetApi { final Map pathParams = new HashMap(); pathParams.put("petId", petId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); 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 364767217b6..232dd361d2c 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 @@ -65,6 +65,7 @@ public class StoreApi { final Map pathParams = new HashMap(); pathParams.put("order_id", orderId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -93,6 +94,7 @@ public class StoreApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -132,6 +134,7 @@ public class StoreApi { final Map pathParams = new HashMap(); pathParams.put("order_id", orderId); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -169,6 +172,7 @@ public class StoreApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); 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 d884b800a38..28023c26f31 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 @@ -63,6 +63,7 @@ public class UserApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -96,6 +97,7 @@ public class UserApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -129,6 +131,7 @@ public class UserApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -164,6 +167,7 @@ public class UserApi { final Map pathParams = new HashMap(); pathParams.put("username", username); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -201,6 +205,7 @@ public class UserApi { final Map pathParams = new HashMap(); pathParams.put("username", username); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -244,6 +249,7 @@ public class UserApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -276,6 +282,7 @@ public class UserApi { // create path and map variables final Map pathParams = new HashMap(); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); @@ -317,6 +324,7 @@ public class UserApi { final Map pathParams = new HashMap(); pathParams.put("username", username); + final MultiValueMap queryParams = new LinkedMultiValueMap(); final HttpHeaders headerParams = new HttpHeaders(); final MultiValueMap cookieParams = new LinkedMultiValueMap(); From e774db05b639d75e6945603b5a30a651227e4ff1 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 10:07:33 +0800 Subject: [PATCH 58/96] Regenerate hashCode, equals, toString (#4648) * update hashCode, equals, toString in CodegenParameter * update equals, hashCode, toString in CodegenProperty * update toString, hashCode, equals in CodegenOperation * update toString, hashCode, equals in CodegenResponse * update toString, hashCode, equals in CodegenSecurity * update hashCode, toString, equals in CodegenModel * add hashCode, toString, equals to CodegenServer and more * update hashCode, equals, toString in CodegenDiscriminator * update testS * update samples --- .../openapitools/codegen/CodegenCallback.java | 5 + .../codegen/CodegenDiscriminator.java | 16 +- .../openapitools/codegen/CodegenModel.java | 296 ++++++------ .../codegen/CodegenOperation.java | 262 ++++++----- .../codegen/CodegenParameter.java | 378 +++++++--------- .../openapitools/codegen/CodegenProperty.java | 421 ++++++++---------- .../openapitools/codegen/CodegenResponse.java | 92 ++-- .../openapitools/codegen/CodegenSecurity.java | 129 +++--- .../openapitools/codegen/CodegenServer.java | 27 ++ .../codegen/CodegenServerVariable.java | 31 ++ .../codegen/DefaultCodegenTest.java | 2 + .../SymfonyBundle-php/Api/PetApiInterface.php | 18 +- 12 files changed, 827 insertions(+), 850 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenCallback.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenCallback.java index 3dcf7cfbeae..982433c64de 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenCallback.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenCallback.java @@ -44,6 +44,7 @@ public class CodegenCallback { public int hashCode() { return Objects.hash(expression, hasMore, requests, vendorExtensions); } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -64,10 +65,12 @@ public class CodegenCallback { return Objects.equals(that.name, name) && Objects.equals(that.hasMore, hasMore) && Objects.equals(that.urls, urls) && Objects.equals(that.vendorExtensions, vendorExtensions); } + @Override public int hashCode() { return Objects.hash(name, hasMore, urls, vendorExtensions); } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -77,4 +80,6 @@ public class CodegenCallback { sb.append("}"); return sb.toString(); } + + } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java index 1758abb2a1c..9b548e8b549 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java @@ -91,21 +91,25 @@ public class CodegenDiscriminator { if (o == null || getClass() != o.getClass()) return false; CodegenDiscriminator that = (CodegenDiscriminator) o; return Objects.equals(propertyName, that.propertyName) && + Objects.equals(propertyBaseName, that.propertyBaseName) && Objects.equals(mapping, that.mapping) && Objects.equals(mappedModels, that.mappedModels); } @Override public int hashCode() { - return Objects.hash(propertyName, mapping, mappedModels); + + return Objects.hash(propertyName, propertyBaseName, mapping, mappedModels); } @Override public String toString() { - return new ToStringBuilder(this) - .append("propertyName", propertyName) - .append("mapping", mapping) - .append("mappedModels", mappedModels) - .toString(); + final StringBuffer sb = new StringBuffer("CodegenDiscriminator{"); + sb.append("propertyName='").append(propertyName).append('\''); + sb.append(", propertyBaseName='").append(propertyBaseName).append('\''); + sb.append(", mapping=").append(mapping); + sb.append(", mappedModels=").append(mappedModels); + sb.append('}'); + return sb.toString(); } } 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 876162afe13..a7289087ef5 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 @@ -70,157 +70,6 @@ public class CodegenModel { //The type of the value from additional properties. Used in map like objects. public String additionalPropertiesType; - @Override - public String toString() { - return new ToStringBuilder(this) - .append("parent", parent) - .append("parentSchema", parentSchema) - .append("interfaces", interfaces) - .append("parentModel", parentModel) - .append("interfaceModels", interfaceModels) - .append("children", children) - .append("name", name) - .append("classname", classname) - .append("title", title) - .append("description", description) - .append("classVarName", classVarName) - .append("modelJson", modelJson) - .append("dataType", dataType) - .append("xmlPrefix", xmlPrefix) - .append("xmlNamespace", xmlNamespace) - .append("xmlName", xmlName) - .append("classFilename", classFilename) - .append("unescapedDescription", unescapedDescription) - .append("discriminator", discriminator) - .append("defaultValue", defaultValue) - .append("arrayModelType", arrayModelType) - .append("isAlias", isAlias) - .append("isString", isString) - .append("isNumeric", isNumeric) - .append("isInteger", isInteger) - .append("isLong", isLong) - .append("isNumber", isNumber) - .append("isFloat", isFloat) - .append("isDouble", isDouble) - .append("vars", vars) - .append("requiredVars", requiredVars) - .append("optionalVars", optionalVars) - .append("readOnlyVars", readOnlyVars) - .append("readWriteVars", readWriteVars) - .append("allVars", allVars) - .append("parentVars", parentVars) - .append("allowableValues", allowableValues) - .append("mandatory", mandatory) - .append("allMandatory", allMandatory) - .append("imports", imports) - .append("hasVars", hasVars) - .append("emptyVars", emptyVars) - .append("hasMoreModels", hasMoreModels) - .append("hasEnums", hasEnums) - .append("isEnum", isEnum) - .append("isNullable", isNullable) - .append("hasRequired", hasRequired) - .append("hasOptional", hasOptional) - .append("isArrayModel", isArrayModel) - .append("hasChildren", hasChildren) - .append("isMapModel", isMapModel) - .append("hasOnlyReadOnly", hasOnlyReadOnly) - .append("externalDocumentation", externalDocumentation) - .append("vendorExtensions", vendorExtensions) - .append("additionalPropertiesType", additionalPropertiesType) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - CodegenModel that = (CodegenModel) o; - - return Objects.equals(parent, that.parent) && - Objects.equals(parentSchema, that.parentSchema) && - Objects.equals(interfaces, that.interfaces) && - Objects.equals(allParents, that.allParents) && - Objects.equals(parentModel, that.parentModel) && - Objects.equals(interfaceModels, that.interfaceModels) && - Objects.equals(name, that.name) && - Objects.equals(classname, that.classname) && - Objects.equals(title, that.title) && - Objects.equals(description, that.description) && - Objects.equals(classVarName, that.classVarName) && - Objects.equals(modelJson, that.modelJson) && - Objects.equals(dataType, that.dataType) && - Objects.equals(xmlPrefix, that.xmlPrefix) && - Objects.equals(xmlNamespace, that.xmlNamespace) && - Objects.equals(xmlName, that.xmlName) && - Objects.equals(classFilename, that.classFilename) && - Objects.equals(unescapedDescription, that.unescapedDescription) && - Objects.equals(discriminator, that.discriminator) && - Objects.equals(defaultValue, that.defaultValue) && - Objects.equals(vars, that.vars) && - Objects.equals(requiredVars, that.requiredVars) && - Objects.equals(optionalVars, that.optionalVars) && - Objects.equals(allVars, that.allVars) && - Objects.equals(allowableValues, that.allowableValues) && - Objects.equals(mandatory, that.mandatory) && - Objects.equals(allMandatory, that.allMandatory) && - Objects.equals(imports, that.imports) && - Objects.equals(hasVars, that.hasVars) && - Objects.equals(emptyVars, that.emptyVars) && - Objects.equals(hasMoreModels, that.hasMoreModels) && - Objects.equals(hasEnums, that.hasEnums) && - Objects.equals(isEnum, that.isEnum) && - Objects.equals(externalDocumentation, that.externalDocumentation) && - Objects.equals(hasOnlyReadOnly, that.hasOnlyReadOnly) && - Objects.equals(hasChildren, that.hasChildren) && - Objects.equals(parentVars, that.parentVars) && - Objects.equals(vendorExtensions, that.vendorExtensions); - } - - @Override - public int hashCode() { - return Objects.hash( - parent, - parentSchema, - interfaces, - allParents, - parentModel, - interfaceModels, - name, - classname, - title, - description, - classVarName, - modelJson, - dataType, - xmlPrefix, - xmlNamespace, - xmlName, - classFilename, - unescapedDescription, - discriminator, - defaultValue, - vars, - requiredVars, - optionalVars, - allVars, - allowableValues, - mandatory, - allMandatory, - imports, - hasVars, - emptyVars, - hasMoreModels, - hasEnums, - isEnum, - externalDocumentation, - vendorExtensions, - hasOnlyReadOnly, - hasChildren, - parentVars); - } - public String getParent() { return parent; } @@ -601,4 +450,149 @@ public class CodegenModel { } } } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenModel that = (CodegenModel) o; + return isAlias == that.isAlias && + isString == that.isString && + isInteger == that.isInteger && + isLong == that.isLong && + isNumber == that.isNumber && + isNumeric == that.isNumeric && + isFloat == that.isFloat && + isDouble == that.isDouble && + hasVars == that.hasVars && + emptyVars == that.emptyVars && + hasMoreModels == that.hasMoreModels && + hasEnums == that.hasEnums && + isEnum == that.isEnum && + isNullable == that.isNullable && + hasRequired == that.hasRequired && + hasOptional == that.hasOptional && + isArrayModel == that.isArrayModel && + hasChildren == that.hasChildren && + isMapModel == that.isMapModel && + hasOnlyReadOnly == that.hasOnlyReadOnly && + Objects.equals(parent, that.parent) && + Objects.equals(parentSchema, that.parentSchema) && + Objects.equals(interfaces, that.interfaces) && + Objects.equals(allParents, that.allParents) && + Objects.equals(parentModel, that.parentModel) && + Objects.equals(interfaceModels, that.interfaceModels) && + Objects.equals(children, that.children) && + Objects.equals(anyOf, that.anyOf) && + Objects.equals(oneOf, that.oneOf) && + Objects.equals(allOf, that.allOf) && + Objects.equals(name, that.name) && + Objects.equals(classname, that.classname) && + Objects.equals(title, that.title) && + Objects.equals(description, that.description) && + Objects.equals(classVarName, that.classVarName) && + Objects.equals(modelJson, that.modelJson) && + Objects.equals(dataType, that.dataType) && + Objects.equals(xmlPrefix, that.xmlPrefix) && + Objects.equals(xmlNamespace, that.xmlNamespace) && + Objects.equals(xmlName, that.xmlName) && + Objects.equals(classFilename, that.classFilename) && + Objects.equals(unescapedDescription, that.unescapedDescription) && + Objects.equals(discriminator, that.discriminator) && + Objects.equals(defaultValue, that.defaultValue) && + Objects.equals(arrayModelType, that.arrayModelType) && + Objects.equals(vars, that.vars) && + Objects.equals(allVars, that.allVars) && + Objects.equals(requiredVars, that.requiredVars) && + Objects.equals(optionalVars, that.optionalVars) && + Objects.equals(readOnlyVars, that.readOnlyVars) && + Objects.equals(readWriteVars, that.readWriteVars) && + Objects.equals(parentVars, that.parentVars) && + Objects.equals(allowableValues, that.allowableValues) && + Objects.equals(mandatory, that.mandatory) && + Objects.equals(allMandatory, that.allMandatory) && + Objects.equals(imports, that.imports) && + Objects.equals(externalDocumentation, that.externalDocumentation) && + Objects.equals(vendorExtensions, that.vendorExtensions) && + Objects.equals(additionalPropertiesType, that.additionalPropertiesType); + } + + @Override + public int hashCode() { + + return Objects.hash(parent, parentSchema, interfaces, allParents, parentModel, interfaceModels, children, + anyOf, oneOf, allOf, name, classname, title, description, classVarName, modelJson, dataType, + xmlPrefix, xmlNamespace, xmlName, classFilename, unescapedDescription, discriminator, defaultValue, + arrayModelType, isAlias, isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, + vars, allVars, requiredVars, optionalVars, readOnlyVars, readWriteVars, parentVars, allowableValues, + mandatory, allMandatory, imports, hasVars, emptyVars, hasMoreModels, hasEnums, isEnum, isNullable, + hasRequired, hasOptional, isArrayModel, hasChildren, isMapModel, hasOnlyReadOnly, + externalDocumentation, vendorExtensions, additionalPropertiesType); + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenModel{"); + sb.append("parent='").append(parent).append('\''); + sb.append(", parentSchema='").append(parentSchema).append('\''); + sb.append(", interfaces=").append(interfaces); + sb.append(", allParents=").append(allParents); + sb.append(", parentModel=").append(parentModel); + sb.append(", interfaceModels=").append(interfaceModels); + sb.append(", children=").append(children); + sb.append(", anyOf=").append(anyOf); + sb.append(", oneOf=").append(oneOf); + sb.append(", allOf=").append(allOf); + sb.append(", name='").append(name).append('\''); + sb.append(", classname='").append(classname).append('\''); + sb.append(", title='").append(title).append('\''); + sb.append(", description='").append(description).append('\''); + sb.append(", classVarName='").append(classVarName).append('\''); + sb.append(", modelJson='").append(modelJson).append('\''); + sb.append(", dataType='").append(dataType).append('\''); + sb.append(", xmlPrefix='").append(xmlPrefix).append('\''); + sb.append(", xmlNamespace='").append(xmlNamespace).append('\''); + sb.append(", xmlName='").append(xmlName).append('\''); + sb.append(", classFilename='").append(classFilename).append('\''); + sb.append(", unescapedDescription='").append(unescapedDescription).append('\''); + sb.append(", discriminator=").append(discriminator); + sb.append(", defaultValue='").append(defaultValue).append('\''); + sb.append(", arrayModelType='").append(arrayModelType).append('\''); + sb.append(", isAlias=").append(isAlias); + sb.append(", isString=").append(isString); + sb.append(", isInteger=").append(isInteger); + sb.append(", isLong=").append(isLong); + sb.append(", isNumber=").append(isNumber); + sb.append(", isNumeric=").append(isNumeric); + sb.append(", isFloat=").append(isFloat); + sb.append(", isDouble=").append(isDouble); + sb.append(", vars=").append(vars); + sb.append(", allVars=").append(allVars); + sb.append(", requiredVars=").append(requiredVars); + sb.append(", optionalVars=").append(optionalVars); + sb.append(", readOnlyVars=").append(readOnlyVars); + sb.append(", readWriteVars=").append(readWriteVars); + sb.append(", parentVars=").append(parentVars); + sb.append(", allowableValues=").append(allowableValues); + sb.append(", mandatory=").append(mandatory); + sb.append(", allMandatory=").append(allMandatory); + sb.append(", imports=").append(imports); + sb.append(", hasVars=").append(hasVars); + sb.append(", emptyVars=").append(emptyVars); + sb.append(", hasMoreModels=").append(hasMoreModels); + sb.append(", hasEnums=").append(hasEnums); + sb.append(", isEnum=").append(isEnum); + sb.append(", isNullable=").append(isNullable); + sb.append(", hasRequired=").append(hasRequired); + sb.append(", hasOptional=").append(hasOptional); + sb.append(", isArrayModel=").append(isArrayModel); + sb.append(", hasChildren=").append(hasChildren); + sb.append(", isMapModel=").append(isMapModel); + sb.append(", hasOnlyReadOnly=").append(hasOnlyReadOnly); + sb.append(", externalDocumentation=").append(externalDocumentation); + sb.append(", vendorExtensions=").append(vendorExtensions); + sb.append(", additionalPropertiesType='").append(additionalPropertiesType).append('\''); + sb.append('}'); + return sb.toString(); + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java index 583b1cbab1c..2f839171045 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java @@ -244,134 +244,160 @@ public class CodegenOperation { @Override public String toString() { - return String.format(Locale.ROOT, "%s(%s)", baseName, path); + final StringBuffer sb = new StringBuffer("CodegenOperation{"); + sb.append("responseHeaders=").append(responseHeaders); + sb.append(", hasAuthMethods=").append(hasAuthMethods); + sb.append(", hasConsumes=").append(hasConsumes); + sb.append(", hasProduces=").append(hasProduces); + sb.append(", hasParams=").append(hasParams); + sb.append(", hasOptionalParams=").append(hasOptionalParams); + sb.append(", hasRequiredParams=").append(hasRequiredParams); + sb.append(", returnTypeIsPrimitive=").append(returnTypeIsPrimitive); + sb.append(", returnSimpleType=").append(returnSimpleType); + sb.append(", subresourceOperation=").append(subresourceOperation); + sb.append(", isMapContainer=").append(isMapContainer); + sb.append(", isListContainer=").append(isListContainer); + sb.append(", isMultipart=").append(isMultipart); + sb.append(", hasMore=").append(hasMore); + sb.append(", isResponseBinary=").append(isResponseBinary); + sb.append(", isResponseFile=").append(isResponseFile); + sb.append(", hasReference=").append(hasReference); + sb.append(", isRestfulIndex=").append(isRestfulIndex); + sb.append(", isRestfulShow=").append(isRestfulShow); + sb.append(", isRestfulCreate=").append(isRestfulCreate); + sb.append(", isRestfulUpdate=").append(isRestfulUpdate); + sb.append(", isRestfulDestroy=").append(isRestfulDestroy); + sb.append(", isRestful=").append(isRestful); + sb.append(", isDeprecated=").append(isDeprecated); + sb.append(", isCallbackRequest=").append(isCallbackRequest); + sb.append(", path='").append(path).append('\''); + sb.append(", operationId='").append(operationId).append('\''); + sb.append(", returnType='").append(returnType).append('\''); + sb.append(", httpMethod='").append(httpMethod).append('\''); + sb.append(", returnBaseType='").append(returnBaseType).append('\''); + sb.append(", returnContainer='").append(returnContainer).append('\''); + sb.append(", summary='").append(summary).append('\''); + sb.append(", unescapedNotes='").append(unescapedNotes).append('\''); + sb.append(", notes='").append(notes).append('\''); + sb.append(", baseName='").append(baseName).append('\''); + sb.append(", defaultResponse='").append(defaultResponse).append('\''); + sb.append(", discriminator=").append(discriminator); + sb.append(", consumes=").append(consumes); + sb.append(", produces=").append(produces); + sb.append(", prioritizedContentTypes=").append(prioritizedContentTypes); + sb.append(", servers=").append(servers); + sb.append(", bodyParam=").append(bodyParam); + sb.append(", allParams=").append(allParams); + sb.append(", bodyParams=").append(bodyParams); + sb.append(", pathParams=").append(pathParams); + sb.append(", queryParams=").append(queryParams); + sb.append(", headerParams=").append(headerParams); + sb.append(", formParams=").append(formParams); + sb.append(", cookieParams=").append(cookieParams); + sb.append(", requiredParams=").append(requiredParams); + sb.append(", optionalParams=").append(optionalParams); + sb.append(", authMethods=").append(authMethods); + sb.append(", tags=").append(tags); + sb.append(", responses=").append(responses); + sb.append(", callbacks=").append(callbacks); + sb.append(", imports=").append(imports); + sb.append(", examples=").append(examples); + sb.append(", requestBodyExamples=").append(requestBodyExamples); + sb.append(", externalDocs=").append(externalDocs); + sb.append(", vendorExtensions=").append(vendorExtensions); + sb.append(", nickname='").append(nickname).append('\''); + sb.append(", operationIdOriginal='").append(operationIdOriginal).append('\''); + sb.append(", operationIdLowerCase='").append(operationIdLowerCase).append('\''); + sb.append(", operationIdCamelCase='").append(operationIdCamelCase).append('\''); + sb.append(", operationIdSnakeCase='").append(operationIdSnakeCase).append('\''); + sb.append('}'); + return sb.toString(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - CodegenOperation that = (CodegenOperation) o; - - return Objects.equals(responseHeaders, that.responseHeaders) && - Objects.equals(hasAuthMethods, that.hasAuthMethods) && - Objects.equals(hasConsumes, that.hasConsumes) && - Objects.equals(hasProduces, that.hasProduces) && - Objects.equals(hasParams, that.hasParams) && - Objects.equals(hasOptionalParams, that.hasOptionalParams) && - Objects.equals(returnTypeIsPrimitive, that.returnTypeIsPrimitive) && - Objects.equals(returnSimpleType, that.returnSimpleType) && - Objects.equals(subresourceOperation, that.subresourceOperation) && - Objects.equals(isMapContainer, that.isMapContainer) && - Objects.equals(isListContainer, that.isListContainer) && - Objects.equals(isMultipart, that.isMultipart) && - Objects.equals(hasMore, that.hasMore) && - Objects.equals(isResponseBinary, that.isResponseBinary) && - Objects.equals(hasReference, that.hasReference) && - Objects.equals(isResponseFile, that.isResponseFile) && - Objects.equals(isDeprecated, that.isDeprecated) && - Objects.equals(isCallbackRequest, that.isCallbackRequest) && - Objects.equals(path, that.path) && - Objects.equals(operationId, that.operationId) && - Objects.equals(returnType, that.returnType) && - Objects.equals(httpMethod, that.httpMethod) && - Objects.equals(returnBaseType, that.returnBaseType) && - Objects.equals(returnContainer, that.returnContainer) && - Objects.equals(summary, that.summary) && - Objects.equals(unescapedNotes, that.unescapedNotes) && - Objects.equals(notes, that.notes) && - Objects.equals(baseName, that.baseName) && - Objects.equals(defaultResponse, that.defaultResponse) && - Objects.equals(discriminator, that.discriminator) && - Objects.equals(consumes, that.consumes) && - Objects.equals(produces, that.produces) && - Objects.equals(servers, that.servers) && - Objects.equals(bodyParam, that.bodyParam) && - Objects.equals(allParams, that.allParams) && - Objects.equals(bodyParams, that.bodyParams) && - Objects.equals(pathParams, that.pathParams) && - Objects.equals(queryParams, that.queryParams) && - Objects.equals(headerParams, that.headerParams) && - Objects.equals(formParams, that.formParams) && - Objects.equals(cookieParams, that.cookieParams) && - Objects.equals(requiredParams, that.requiredParams) && - Objects.equals(optionalParams, that.optionalParams) && - Objects.equals(authMethods, that.authMethods) && - Objects.equals(tags, that.tags) && - Objects.equals(responses, that.responses) && - Objects.equals(callbacks, that.callbacks) && - Objects.equals(imports, that.imports) && - Objects.equals(examples, that.examples) && - Objects.equals(externalDocs, that.externalDocs) && - Objects.equals(vendorExtensions, that.vendorExtensions) && - Objects.equals(nickname, that.nickname) && - Objects.equals(prioritizedContentTypes, that.prioritizedContentTypes) && - Objects.equals(operationIdOriginal, that.operationIdOriginal) && - Objects.equals(operationIdLowerCase, that.operationIdLowerCase) && - Objects.equals(operationIdCamelCase, that.operationIdCamelCase); + return hasAuthMethods == that.hasAuthMethods && + hasConsumes == that.hasConsumes && + hasProduces == that.hasProduces && + hasParams == that.hasParams && + hasOptionalParams == that.hasOptionalParams && + hasRequiredParams == that.hasRequiredParams && + returnTypeIsPrimitive == that.returnTypeIsPrimitive && + returnSimpleType == that.returnSimpleType && + subresourceOperation == that.subresourceOperation && + isMapContainer == that.isMapContainer && + isListContainer == that.isListContainer && + isMultipart == that.isMultipart && + hasMore == that.hasMore && + isResponseBinary == that.isResponseBinary && + isResponseFile == that.isResponseFile && + hasReference == that.hasReference && + isRestfulIndex == that.isRestfulIndex && + isRestfulShow == that.isRestfulShow && + isRestfulCreate == that.isRestfulCreate && + isRestfulUpdate == that.isRestfulUpdate && + isRestfulDestroy == that.isRestfulDestroy && + isRestful == that.isRestful && + isDeprecated == that.isDeprecated && + isCallbackRequest == that.isCallbackRequest && + Objects.equals(responseHeaders, that.responseHeaders) && + Objects.equals(path, that.path) && + Objects.equals(operationId, that.operationId) && + Objects.equals(returnType, that.returnType) && + Objects.equals(httpMethod, that.httpMethod) && + Objects.equals(returnBaseType, that.returnBaseType) && + Objects.equals(returnContainer, that.returnContainer) && + Objects.equals(summary, that.summary) && + Objects.equals(unescapedNotes, that.unescapedNotes) && + Objects.equals(notes, that.notes) && + Objects.equals(baseName, that.baseName) && + Objects.equals(defaultResponse, that.defaultResponse) && + Objects.equals(discriminator, that.discriminator) && + Objects.equals(consumes, that.consumes) && + Objects.equals(produces, that.produces) && + Objects.equals(prioritizedContentTypes, that.prioritizedContentTypes) && + Objects.equals(servers, that.servers) && + Objects.equals(bodyParam, that.bodyParam) && + Objects.equals(allParams, that.allParams) && + Objects.equals(bodyParams, that.bodyParams) && + Objects.equals(pathParams, that.pathParams) && + Objects.equals(queryParams, that.queryParams) && + Objects.equals(headerParams, that.headerParams) && + Objects.equals(formParams, that.formParams) && + Objects.equals(cookieParams, that.cookieParams) && + Objects.equals(requiredParams, that.requiredParams) && + Objects.equals(optionalParams, that.optionalParams) && + Objects.equals(authMethods, that.authMethods) && + Objects.equals(tags, that.tags) && + Objects.equals(responses, that.responses) && + Objects.equals(callbacks, that.callbacks) && + Objects.equals(imports, that.imports) && + Objects.equals(examples, that.examples) && + Objects.equals(requestBodyExamples, that.requestBodyExamples) && + Objects.equals(externalDocs, that.externalDocs) && + Objects.equals(vendorExtensions, that.vendorExtensions) && + Objects.equals(nickname, that.nickname) && + Objects.equals(operationIdOriginal, that.operationIdOriginal) && + Objects.equals(operationIdLowerCase, that.operationIdLowerCase) && + Objects.equals(operationIdCamelCase, that.operationIdCamelCase) && + Objects.equals(operationIdSnakeCase, that.operationIdSnakeCase); } @Override public int hashCode() { - return Objects.hash( - responseHeaders, - hasAuthMethods, - hasConsumes, - hasProduces, - hasParams, - hasOptionalParams, - returnTypeIsPrimitive, - returnSimpleType, - subresourceOperation, - isMapContainer, - isListContainer, - isMultipart, - hasMore, - isResponseBinary, - isResponseFile, - hasReference, - isDeprecated, - isCallbackRequest, - path, - operationId, - returnType, - httpMethod, - returnBaseType, - returnContainer, - summary, - unescapedNotes, - notes, - baseName, - defaultResponse, - discriminator, - consumes, - produces, - servers, - bodyParam, - allParams, - bodyParams, - pathParams, - queryParams, - headerParams, - formParams, - cookieParams, - requiredParams, - optionalParams, - authMethods, - tags, - responses, - callbacks, - imports, - examples, - externalDocs, - vendorExtensions, - nickname, - prioritizedContentTypes, - operationIdOriginal, - operationIdLowerCase, - operationIdCamelCase); + + return Objects.hash(responseHeaders, hasAuthMethods, hasConsumes, hasProduces, hasParams, hasOptionalParams, + hasRequiredParams, returnTypeIsPrimitive, returnSimpleType, subresourceOperation, isMapContainer, + isListContainer, isMultipart, hasMore, isResponseBinary, isResponseFile, hasReference, isRestfulIndex, + isRestfulShow, isRestfulCreate, isRestfulUpdate, isRestfulDestroy, isRestful, isDeprecated, + isCallbackRequest, path, operationId, returnType, httpMethod, returnBaseType, returnContainer, + summary, unescapedNotes, notes, baseName, defaultResponse, discriminator, consumes, produces, + prioritizedContentTypes, servers, bodyParam, allParams, bodyParams, pathParams, queryParams, + headerParams, formParams, cookieParams, requiredParams, optionalParams, authMethods, tags, + responses, callbacks, imports, examples, requestBodyExamples, externalDocs, vendorExtensions, + nickname, operationIdOriginal, operationIdLowerCase, operationIdCamelCase, operationIdSnakeCase); } - - } 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 1e8c89b6408..15979f7ad61 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 @@ -43,6 +43,167 @@ public class CodegenParameter { public CodegenProperty mostInnerItems; public Map vendorExtensions = new HashMap(); public boolean hasValidation; + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenParameter{"); + sb.append("isFormParam=").append(isFormParam); + sb.append(", isQueryParam=").append(isQueryParam); + sb.append(", isPathParam=").append(isPathParam); + sb.append(", isHeaderParam=").append(isHeaderParam); + sb.append(", isCookieParam=").append(isCookieParam); + sb.append(", isBodyParam=").append(isBodyParam); + sb.append(", hasMore=").append(hasMore); + sb.append(", isContainer=").append(isContainer); + sb.append(", secondaryParam=").append(secondaryParam); + sb.append(", isCollectionFormatMulti=").append(isCollectionFormatMulti); + sb.append(", isPrimitiveType=").append(isPrimitiveType); + sb.append(", isModel=").append(isModel); + sb.append(", isExplode=").append(isExplode); + sb.append(", baseName='").append(baseName).append('\''); + sb.append(", paramName='").append(paramName).append('\''); + sb.append(", dataType='").append(dataType).append('\''); + sb.append(", datatypeWithEnum='").append(datatypeWithEnum).append('\''); + sb.append(", dataFormat='").append(dataFormat).append('\''); + sb.append(", collectionFormat='").append(collectionFormat).append('\''); + sb.append(", description='").append(description).append('\''); + sb.append(", unescapedDescription='").append(unescapedDescription).append('\''); + sb.append(", baseType='").append(baseType).append('\''); + sb.append(", defaultValue='").append(defaultValue).append('\''); + sb.append(", enumName='").append(enumName).append('\''); + sb.append(", style='").append(style).append('\''); + sb.append(", example='").append(example).append('\''); + sb.append(", jsonSchema='").append(jsonSchema).append('\''); + sb.append(", isString=").append(isString); + sb.append(", isNumeric=").append(isNumeric); + sb.append(", isInteger=").append(isInteger); + sb.append(", isLong=").append(isLong); + sb.append(", isNumber=").append(isNumber); + sb.append(", isFloat=").append(isFloat); + sb.append(", isDouble=").append(isDouble); + sb.append(", isByteArray=").append(isByteArray); + sb.append(", isBinary=").append(isBinary); + sb.append(", isBoolean=").append(isBoolean); + sb.append(", isDate=").append(isDate); + sb.append(", isDateTime=").append(isDateTime); + sb.append(", isUuid=").append(isUuid); + sb.append(", isUri=").append(isUri); + sb.append(", isEmail=").append(isEmail); + sb.append(", isFreeFormObject=").append(isFreeFormObject); + sb.append(", isListContainer=").append(isListContainer); + sb.append(", isMapContainer=").append(isMapContainer); + sb.append(", isFile=").append(isFile); + sb.append(", isEnum=").append(isEnum); + sb.append(", _enum=").append(_enum); + sb.append(", allowableValues=").append(allowableValues); + sb.append(", items=").append(items); + sb.append(", mostInnerItems=").append(mostInnerItems); + sb.append(", vendorExtensions=").append(vendorExtensions); + sb.append(", hasValidation=").append(hasValidation); + sb.append(", isNullable=").append(isNullable); + sb.append(", required=").append(required); + sb.append(", maximum='").append(maximum).append('\''); + sb.append(", exclusiveMaximum=").append(exclusiveMaximum); + sb.append(", minimum='").append(minimum).append('\''); + sb.append(", exclusiveMinimum=").append(exclusiveMinimum); + sb.append(", maxLength=").append(maxLength); + sb.append(", minLength=").append(minLength); + sb.append(", pattern='").append(pattern).append('\''); + sb.append(", maxItems=").append(maxItems); + sb.append(", minItems=").append(minItems); + sb.append(", uniqueItems=").append(uniqueItems); + sb.append(", multipleOf=").append(multipleOf); + sb.append('}'); + return sb.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenParameter that = (CodegenParameter) o; + return isFormParam == that.isFormParam && + isQueryParam == that.isQueryParam && + isPathParam == that.isPathParam && + isHeaderParam == that.isHeaderParam && + isCookieParam == that.isCookieParam && + isBodyParam == that.isBodyParam && + hasMore == that.hasMore && + isContainer == that.isContainer && + secondaryParam == that.secondaryParam && + isCollectionFormatMulti == that.isCollectionFormatMulti && + isPrimitiveType == that.isPrimitiveType && + isModel == that.isModel && + isExplode == that.isExplode && + isString == that.isString && + isNumeric == that.isNumeric && + isInteger == that.isInteger && + isLong == that.isLong && + isNumber == that.isNumber && + isFloat == that.isFloat && + isDouble == that.isDouble && + isByteArray == that.isByteArray && + isBinary == that.isBinary && + isBoolean == that.isBoolean && + isDate == that.isDate && + isDateTime == that.isDateTime && + isUuid == that.isUuid && + isUri == that.isUri && + isEmail == that.isEmail && + isFreeFormObject == that.isFreeFormObject && + isListContainer == that.isListContainer && + isMapContainer == that.isMapContainer && + isFile == that.isFile && + isEnum == that.isEnum && + hasValidation == that.hasValidation && + isNullable == that.isNullable && + required == that.required && + exclusiveMaximum == that.exclusiveMaximum && + exclusiveMinimum == that.exclusiveMinimum && + uniqueItems == that.uniqueItems && + Objects.equals(baseName, that.baseName) && + Objects.equals(paramName, that.paramName) && + Objects.equals(dataType, that.dataType) && + Objects.equals(datatypeWithEnum, that.datatypeWithEnum) && + Objects.equals(dataFormat, that.dataFormat) && + Objects.equals(collectionFormat, that.collectionFormat) && + Objects.equals(description, that.description) && + Objects.equals(unescapedDescription, that.unescapedDescription) && + Objects.equals(baseType, that.baseType) && + Objects.equals(defaultValue, that.defaultValue) && + Objects.equals(enumName, that.enumName) && + Objects.equals(style, that.style) && + Objects.equals(example, that.example) && + Objects.equals(jsonSchema, that.jsonSchema) && + Objects.equals(_enum, that._enum) && + Objects.equals(allowableValues, that.allowableValues) && + Objects.equals(items, that.items) && + Objects.equals(mostInnerItems, that.mostInnerItems) && + Objects.equals(vendorExtensions, that.vendorExtensions) && + Objects.equals(maximum, that.maximum) && + Objects.equals(minimum, that.minimum) && + Objects.equals(maxLength, that.maxLength) && + Objects.equals(minLength, that.minLength) && + Objects.equals(pattern, that.pattern) && + Objects.equals(maxItems, that.maxItems) && + Objects.equals(minItems, that.minItems) && + Objects.equals(multipleOf, that.multipleOf); + } + + @Override + public int hashCode() { + + return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, hasMore, + isContainer, secondaryParam, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, + paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, + baseType, defaultValue, enumName, style, example, jsonSchema, isString, isNumeric, isInteger, isLong, + isNumber, isFloat, isDouble, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, + isEmail, isFreeFormObject, isListContainer, isMapContainer, isFile, isEnum, _enum, allowableValues, + items, mostInnerItems, vendorExtensions, hasValidation, isNullable, required, maximum, + exclusiveMaximum, minimum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, + uniqueItems, multipleOf); + } + public boolean isNullable; /** @@ -179,222 +340,5 @@ public class CodegenParameter { return output; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - CodegenParameter that = (CodegenParameter) o; - - return Objects.equals(isEnum, that.isEnum) && - Objects.equals(isFormParam, that.isFormParam) && - Objects.equals(isQueryParam, that.isQueryParam) && - Objects.equals(isPathParam, that.isPathParam) && - Objects.equals(isHeaderParam, that.isHeaderParam) && - Objects.equals(isCookieParam, that.isCookieParam) && - Objects.equals(isBodyParam, that.isBodyParam) && - Objects.equals(hasMore, that.hasMore) && - Objects.equals(isContainer, that.isContainer) && - Objects.equals(secondaryParam, that.secondaryParam) && - Objects.equals(isCollectionFormatMulti, that.isCollectionFormatMulti) && - Objects.equals(isPrimitiveType, that.isPrimitiveType) && - Objects.equals(isModel, that.isModel) && - Objects.equals(baseName, that.baseName) && - Objects.equals(paramName, that.paramName) && - Objects.equals(dataType, that.dataType) && - Objects.equals(datatypeWithEnum, that.datatypeWithEnum) && - Objects.equals(enumName, that.enumName) && - Objects.equals(dataFormat, that.dataFormat) && - Objects.equals(collectionFormat, that.collectionFormat) && - Objects.equals(description, that.description) && - Objects.equals(unescapedDescription, that.unescapedDescription) && - Objects.equals(baseType, that.baseType) && - Objects.equals(defaultValue, that.defaultValue) && - Objects.equals(example, that.example) && - Objects.equals(jsonSchema, that.jsonSchema) && - Objects.equals(isString, that.isString) && - Objects.equals(isNumeric, that.isNumeric) && - Objects.equals(isInteger, that.isInteger) && - Objects.equals(isLong, that.isLong) && - Objects.equals(isNumber, that.isNumber) && - Objects.equals(isFloat, that.isFloat) && - Objects.equals(isDouble, that.isDouble) && - Objects.equals(isByteArray, that.isByteArray) && - Objects.equals(isBinary, that.isBinary) && - Objects.equals(isBoolean, that.isBoolean) && - Objects.equals(isDate, that.isDate) && - Objects.equals(isDateTime, that.isDateTime) && - Objects.equals(isUuid, that.isUuid) && - Objects.equals(isUri, that.isUri) && - Objects.equals(isEmail, that.isEmail) && - Objects.equals(isFreeFormObject, that.isFreeFormObject) && - Objects.equals(isListContainer, that.isListContainer) && - Objects.equals(isMapContainer, that.isMapContainer) && - Objects.equals(isFile, that.isFile) && - Objects.equals(_enum, that._enum) && - Objects.equals(allowableValues, that.allowableValues) && - Objects.equals(items, that.items) && - Objects.equals(mostInnerItems, that.mostInnerItems) && - Objects.equals(vendorExtensions, that.vendorExtensions) && - Objects.equals(hasValidation, that.hasValidation) && - Objects.equals(isNullable, that.isNullable) && - Objects.equals(required, that.required) && - Objects.equals(maximum, that.maximum) && - Objects.equals(exclusiveMaximum, that.exclusiveMaximum) && - Objects.equals(minimum, that.minimum) && - Objects.equals(exclusiveMinimum, that.exclusiveMinimum) && - Objects.equals(maxLength, that.maxLength) && - Objects.equals(minLength, that.minLength) && - Objects.equals(pattern, that.pattern) && - Objects.equals(maxItems, that.maxItems) && - Objects.equals(minItems, that.minItems) && - Objects.equals(uniqueItems, that.uniqueItems) && - Objects.equals(multipleOf, that.multipleOf) && - Objects.equals(isExplode, that.isExplode) && - Objects.equals(style, that.style); - } - - @Override - public int hashCode() { - return Objects.hash( - isFormParam, - isQueryParam, - isPathParam, - isHeaderParam, - isCookieParam, - isBodyParam, - hasMore, - isContainer, - secondaryParam, - isCollectionFormatMulti, - isPrimitiveType, - isModel, - baseName, - paramName, - dataType, - datatypeWithEnum, - enumName, - dataFormat, - collectionFormat, - description, - unescapedDescription, - baseType, - defaultValue, - example, - jsonSchema, - isString, - isNumeric, - isInteger, - isLong, - isFloat, - isNumber, - isDouble, - isByteArray, - isBinary, - isBoolean, - isDate, - isDateTime, - isUuid, - isUri, - isEmail, - isFreeFormObject, - isListContainer, - isMapContainer, - isFile, - isEnum, - _enum, - allowableValues, - items, - mostInnerItems, - vendorExtensions, - hasValidation, - isNullable, - required, - maximum, - exclusiveMaximum, - minimum, - exclusiveMinimum, - maxLength, - minLength, - pattern, - maxItems, - minItems, - uniqueItems, - multipleOf, - isExplode, - style); - } - - @java.lang.Override - public java.lang.String toString() { - return "CodegenParameter{" + - "isFormParam=" + isFormParam + - ", isQueryParam=" + isQueryParam + - ", isPathParam=" + isPathParam + - ", isHeaderParam=" + isHeaderParam + - ", isCookieParam=" + isCookieParam + - ", isBodyParam=" + isBodyParam + - ", hasMore=" + hasMore + - ", isContainer=" + isContainer + - ", secondaryParam=" + secondaryParam + - ", isCollectionFormatMulti=" + isCollectionFormatMulti + - ", isPrimitiveType=" + isPrimitiveType + - ", isModel=" + isModel + - ", baseName='" + baseName + '\'' + - ", paramName='" + paramName + '\'' + - ", dataType='" + dataType + '\'' + - ", datatypeWithEnum='" + datatypeWithEnum + '\'' + - ", dataFormat='" + dataFormat + '\'' + - ", collectionFormat='" + collectionFormat + '\'' + - ", description='" + description + '\'' + - ", unescapedDescription='" + unescapedDescription + '\'' + - ", baseType='" + baseType + '\'' + - ", defaultValue='" + defaultValue + '\'' + - ", enumName='" + enumName + '\'' + - ", example='" + example + '\'' + - ", jsonSchema='" + jsonSchema + '\'' + - ", isString=" + isString + - ", isNumeric=" + isNumeric + - ", isInteger=" + isInteger + - ", isLong=" + isLong + - ", isNumber=" + isNumber + - ", isFloat=" + isFloat + - ", isDouble=" + isDouble + - ", isByteArray=" + isByteArray + - ", isBinary=" + isBinary + - ", isBoolean=" + isBoolean + - ", isDate=" + isDate + - ", isDateTime=" + isDateTime + - ", isUuid=" + isUuid + - ", isUri=" + isUri + - ", isEmail=" + isEmail + - ", isFreeFormObject=" + isFreeFormObject + - ", isListContainer=" + isListContainer + - ", isMapContainer=" + isMapContainer + - ", isFile=" + isFile + - ", isEnum=" + isEnum + - ", _enum=" + _enum + - ", allowableValues=" + allowableValues + - ", items=" + items + - ", mostInnerItems=" + mostInnerItems + - ", vendorExtensions=" + vendorExtensions + - ", hasValidation=" + hasValidation + - ", isNullable=" + isNullable + - ", required=" + required + - ", maximum='" + maximum + '\'' + - ", exclusiveMaximum=" + exclusiveMaximum + - ", minimum='" + minimum + '\'' + - ", exclusiveMinimum=" + exclusiveMinimum + - ", maxLength=" + maxLength + - ", minLength=" + minLength + - ", pattern='" + pattern + '\'' + - ", maxItems=" + maxItems + - ", minItems=" + minItems + - ", uniqueItems=" + uniqueItems + - ", multipleOf=" + multipleOf + - ", isExplode=" + isExplode + - ", style='" + style + '\'' + - '}'; - } } 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 137e2596925..2b36fd5a227 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 @@ -410,170 +410,6 @@ public class CodegenProperty implements Cloneable { this.xmlNamespace = xmlNamespace; } - @Override - public int hashCode() { - return Objects.hash( - _enum, - allowableValues, - openApiType, - baseName, - baseType, - complexType, - containerType, - dataType, - datatypeWithEnum, - dataFormat, - defaultValue, - defaultValueWithParam, - description, - title, - example, - exclusiveMaximum, - exclusiveMinimum, - getter, - hasMore, - hasMoreNonReadOnly, - isContainer, - isEnum, - isPrimitiveType, - isModel, - isReadOnly, - isWriteOnly, - isNullable, - isSelfReference, - items, - mostInnerItems, - jsonSchema, - max, - maxLength, - maximum, - min, - minLength, - minimum, - name, - pattern, - required, - secondaryParam, - setter, - unescapedDescription, - vendorExtensions, - hasValidation, - isString, - isNumeric, - isInteger, - isLong, - isNumber, - isFloat, - isDouble, - isByteArray, - isBinary, - isFile, - isBoolean, - isDate, - isDateTime, - isUuid, - isUri, - isEmail, - isFreeFormObject, - isMapContainer, - isListContainer, - isInherited, - discriminatorValue, - nameInCamelCase, - nameInSnakeCase, - enumName, - maxItems, - minItems, - isXmlAttribute, - xmlPrefix, - xmlName, - xmlNamespace, - isXmlWrapped); - } - - @Override - public boolean equals(Object obj) { - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - - final CodegenProperty other = (CodegenProperty) obj; - - return Objects.equals(baseName, other.baseName) && - Objects.equals(openApiType, other.openApiType) && - Objects.equals(complexType, other.complexType) && - Objects.equals(getter, other.getter) && - Objects.equals(setter, other.setter) && - Objects.equals(description, other.description) && - Objects.equals(title, other.title) && - Objects.equals(dataType, other.dataType) && - Objects.equals(datatypeWithEnum, other.datatypeWithEnum) && - Objects.equals(dataFormat, other.dataFormat) && - Objects.equals(name, other.name) && - Objects.equals(min, other.min) && - Objects.equals(max, other.max) && - Objects.equals(defaultValue, other.defaultValue) && - Objects.equals(baseType, other.baseType) && - Objects.equals(containerType, other.containerType) && - Objects.equals(maxLength, other.maxLength) && - Objects.equals(minLength, other.minLength) && - Objects.equals(pattern, other.pattern) && - Objects.equals(example, other.example) && - Objects.equals(jsonSchema, other.jsonSchema) && - Objects.equals(minimum, other.minimum) && - Objects.equals(maximum, other.maximum) && - Objects.equals(exclusiveMinimum, other.exclusiveMinimum) && - Objects.equals(exclusiveMaximum, other.exclusiveMaximum) && - Objects.equals(required, other.required) && - Objects.equals(secondaryParam, other.secondaryParam) && - Objects.equals(isPrimitiveType, other.isPrimitiveType) && - Objects.equals(isModel, other.isModel) && - Objects.equals(isContainer, other.isContainer) && - Objects.equals(isEnum, other.isEnum) && - Objects.equals(isReadOnly, other.isReadOnly) && - Objects.equals(isWriteOnly, other.isWriteOnly) && - Objects.equals(isNullable, other.isNullable) && - Objects.equals(isSelfReference, other.isSelfReference) && - Objects.equals(_enum, other._enum) && - Objects.equals(allowableValues, other.allowableValues) && - Objects.equals(vendorExtensions, other.vendorExtensions) && - Objects.equals(hasValidation, other.hasValidation) && - Objects.equals(isString, other.isString) && - Objects.equals(isNumeric, other.isNumeric) && - Objects.equals(isInteger, other.isInteger) && - Objects.equals(isLong, other.isLong) && - Objects.equals(isNumber, other.isNumber) && - Objects.equals(isFloat, other.isFloat) && - Objects.equals(isDouble, other.isDouble) && - Objects.equals(isByteArray, other.isByteArray) && - Objects.equals(isBoolean, other.isBoolean) && - Objects.equals(isDate, other.isDate) && - Objects.equals(isDateTime, other.isDateTime) && - Objects.equals(isUuid, other.isUuid) && - Objects.equals(isUri, other.isUri) && - Objects.equals(isEmail, other.isEmail) && - Objects.equals(isFreeFormObject, other.isFreeFormObject) && - Objects.equals(isBinary, other.isBinary) && - Objects.equals(isFile, other.isFile) && - Objects.equals(isListContainer, other.isListContainer) && - Objects.equals(isMapContainer, other.isMapContainer) && - Objects.equals(isInherited, other.isInherited) && - Objects.equals(discriminatorValue, other.discriminatorValue) && - Objects.equals(nameInCamelCase, other.nameInCamelCase) && - Objects.equals(nameInSnakeCase, other.nameInSnakeCase) && - Objects.equals(enumName, other.enumName) && - Objects.equals(maxItems, other.maxItems) && - Objects.equals(minItems, other.minItems) && - Objects.equals(isXmlAttribute, other.isXmlAttribute) && - Objects.equals(xmlPrefix, other.xmlPrefix) && - Objects.equals(xmlName, other.xmlName) && - Objects.equals(xmlNamespace, other.xmlNamespace) && - Objects.equals(isXmlWrapped, other.isXmlWrapped); - } - @Override public CodegenProperty clone() { try { @@ -600,86 +436,185 @@ public class CodegenProperty implements Cloneable { } } - @java.lang.Override - public java.lang.String toString() { - return "CodegenProperty{" + - "baseName='" + baseName + '\'' + - ", openApiType='" + openApiType + '\'' + - ", complexType='" + complexType + '\'' + - ", getter='" + getter + '\'' + - ", setter='" + setter + '\'' + - ", description='" + description + '\'' + - ", datatype='" + dataType + '\'' + - ", datatypeWithEnum='" + datatypeWithEnum + '\'' + - ", dataFormat='" + dataFormat + '\'' + - ", name='" + name + '\'' + - ", min='" + min + '\'' + - ", max='" + max + '\'' + - ", defaultValue='" + defaultValue + '\'' + - ", defaultValueWithParam='" + defaultValueWithParam + '\'' + - ", baseType='" + baseType + '\'' + - ", containerType='" + containerType + '\'' + - ", title='" + title + '\'' + - ", unescapedDescription='" + unescapedDescription + '\'' + - ", maxLength=" + maxLength + - ", minLength=" + minLength + - ", pattern='" + pattern + '\'' + - ", example='" + example + '\'' + - ", jsonSchema='" + jsonSchema + '\'' + - ", minimum='" + minimum + '\'' + - ", maximum='" + maximum + '\'' + - ", exclusiveMinimum=" + exclusiveMinimum + - ", exclusiveMaximum=" + exclusiveMaximum + - ", hasMore=" + hasMore + - ", required=" + required + - ", secondaryParam=" + secondaryParam + - ", hasMoreNonReadOnly=" + hasMoreNonReadOnly + - ", isPrimitiveType=" + isPrimitiveType + - ", isModel=" + isModel + - ", isContainer=" + isContainer + - ", isString=" + isString + - ", isNumeric=" + isNumeric + - ", isInteger=" + isInteger + - ", isLong=" + isLong + - ", isNumber=" + isNumber + - ", isFloat=" + isFloat + - ", isDouble=" + isDouble + - ", isByteArray=" + isByteArray + - ", isBinary=" + isBinary + - ", isFile=" + isFile + - ", isBoolean=" + isBoolean + - ", isDate=" + isDate + - ", isDateTime=" + isDateTime + - ", isUuid=" + isUuid + - ", isUri=" + isUri + - ", isEmail=" + isEmail + - ", isFreeFormObject=" + isFreeFormObject + - ", isListContainer=" + isListContainer + - ", isMapContainer=" + isMapContainer + - ", isEnum=" + isEnum + - ", isReadOnly=" + isReadOnly + - ", isWriteOnly=" + isWriteOnly + - ", isNullable=" + isNullable + - ", isSelfReference=" + isSelfReference + - ", _enum=" + _enum + - ", allowableValues=" + allowableValues + - ", items=" + items + - ", mostInnerItems=" + mostInnerItems + - ", vendorExtensions=" + vendorExtensions + - ", hasValidation=" + hasValidation + - ", isInherited=" + isInherited + - ", discriminatorValue='" + discriminatorValue + '\'' + - ", nameInCamelCase='" + nameInCamelCase + '\'' + - ", enumName='" + enumName + '\'' + - ", maxItems=" + maxItems + - ", minItems=" + minItems + - ", isXmlAttribute=" + isXmlAttribute + - ", xmlPrefix='" + xmlPrefix + '\'' + - ", xmlName='" + xmlName + '\'' + - ", xmlNamespace='" + xmlNamespace + '\'' + - ", isXmlWrapped=" + isXmlWrapped + - '}'; + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenProperty{"); + sb.append("openApiType='").append(openApiType).append('\''); + sb.append(", baseName='").append(baseName).append('\''); + sb.append(", complexType='").append(complexType).append('\''); + sb.append(", getter='").append(getter).append('\''); + sb.append(", setter='").append(setter).append('\''); + sb.append(", description='").append(description).append('\''); + sb.append(", dataType='").append(dataType).append('\''); + sb.append(", datatypeWithEnum='").append(datatypeWithEnum).append('\''); + sb.append(", dataFormat='").append(dataFormat).append('\''); + sb.append(", name='").append(name).append('\''); + sb.append(", min='").append(min).append('\''); + sb.append(", max='").append(max).append('\''); + sb.append(", defaultValue='").append(defaultValue).append('\''); + sb.append(", defaultValueWithParam='").append(defaultValueWithParam).append('\''); + sb.append(", baseType='").append(baseType).append('\''); + sb.append(", containerType='").append(containerType).append('\''); + sb.append(", title='").append(title).append('\''); + sb.append(", unescapedDescription='").append(unescapedDescription).append('\''); + sb.append(", maxLength=").append(maxLength); + sb.append(", minLength=").append(minLength); + sb.append(", pattern='").append(pattern).append('\''); + sb.append(", example='").append(example).append('\''); + sb.append(", jsonSchema='").append(jsonSchema).append('\''); + sb.append(", minimum='").append(minimum).append('\''); + sb.append(", maximum='").append(maximum).append('\''); + sb.append(", exclusiveMinimum=").append(exclusiveMinimum); + sb.append(", exclusiveMaximum=").append(exclusiveMaximum); + sb.append(", hasMore=").append(hasMore); + sb.append(", required=").append(required); + sb.append(", secondaryParam=").append(secondaryParam); + sb.append(", hasMoreNonReadOnly=").append(hasMoreNonReadOnly); + sb.append(", isPrimitiveType=").append(isPrimitiveType); + sb.append(", isModel=").append(isModel); + sb.append(", isContainer=").append(isContainer); + sb.append(", isString=").append(isString); + sb.append(", isNumeric=").append(isNumeric); + sb.append(", isInteger=").append(isInteger); + sb.append(", isLong=").append(isLong); + sb.append(", isNumber=").append(isNumber); + sb.append(", isFloat=").append(isFloat); + sb.append(", isDouble=").append(isDouble); + sb.append(", isByteArray=").append(isByteArray); + sb.append(", isBinary=").append(isBinary); + sb.append(", isFile=").append(isFile); + sb.append(", isBoolean=").append(isBoolean); + sb.append(", isDate=").append(isDate); + sb.append(", isDateTime=").append(isDateTime); + sb.append(", isUuid=").append(isUuid); + sb.append(", isUri=").append(isUri); + sb.append(", isEmail=").append(isEmail); + sb.append(", isFreeFormObject=").append(isFreeFormObject); + sb.append(", isListContainer=").append(isListContainer); + sb.append(", isMapContainer=").append(isMapContainer); + sb.append(", isEnum=").append(isEnum); + sb.append(", isReadOnly=").append(isReadOnly); + sb.append(", isWriteOnly=").append(isWriteOnly); + sb.append(", isNullable=").append(isNullable); + sb.append(", isSelfReference=").append(isSelfReference); + sb.append(", _enum=").append(_enum); + sb.append(", allowableValues=").append(allowableValues); + sb.append(", items=").append(items); + sb.append(", mostInnerItems=").append(mostInnerItems); + sb.append(", vendorExtensions=").append(vendorExtensions); + sb.append(", hasValidation=").append(hasValidation); + sb.append(", isInherited=").append(isInherited); + sb.append(", discriminatorValue='").append(discriminatorValue).append('\''); + sb.append(", nameInCamelCase='").append(nameInCamelCase).append('\''); + sb.append(", nameInSnakeCase='").append(nameInSnakeCase).append('\''); + sb.append(", enumName='").append(enumName).append('\''); + sb.append(", maxItems=").append(maxItems); + sb.append(", minItems=").append(minItems); + sb.append(", isXmlAttribute=").append(isXmlAttribute); + sb.append(", xmlPrefix='").append(xmlPrefix).append('\''); + sb.append(", xmlName='").append(xmlName).append('\''); + sb.append(", xmlNamespace='").append(xmlNamespace).append('\''); + sb.append(", isXmlWrapped=").append(isXmlWrapped); + sb.append('}'); + return sb.toString(); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenProperty that = (CodegenProperty) o; + return exclusiveMinimum == that.exclusiveMinimum && + exclusiveMaximum == that.exclusiveMaximum && + hasMore == that.hasMore && + required == that.required && + secondaryParam == that.secondaryParam && + hasMoreNonReadOnly == that.hasMoreNonReadOnly && + isPrimitiveType == that.isPrimitiveType && + isModel == that.isModel && + isContainer == that.isContainer && + isString == that.isString && + isNumeric == that.isNumeric && + isInteger == that.isInteger && + isLong == that.isLong && + isNumber == that.isNumber && + isFloat == that.isFloat && + isDouble == that.isDouble && + isByteArray == that.isByteArray && + isBinary == that.isBinary && + isFile == that.isFile && + isBoolean == that.isBoolean && + isDate == that.isDate && + isDateTime == that.isDateTime && + isUuid == that.isUuid && + isUri == that.isUri && + isEmail == that.isEmail && + isFreeFormObject == that.isFreeFormObject && + isListContainer == that.isListContainer && + isMapContainer == that.isMapContainer && + isEnum == that.isEnum && + isReadOnly == that.isReadOnly && + isWriteOnly == that.isWriteOnly && + isNullable == that.isNullable && + isSelfReference == that.isSelfReference && + hasValidation == that.hasValidation && + isInherited == that.isInherited && + isXmlAttribute == that.isXmlAttribute && + isXmlWrapped == that.isXmlWrapped && + Objects.equals(openApiType, that.openApiType) && + Objects.equals(baseName, that.baseName) && + Objects.equals(complexType, that.complexType) && + Objects.equals(getter, that.getter) && + Objects.equals(setter, that.setter) && + Objects.equals(description, that.description) && + Objects.equals(dataType, that.dataType) && + Objects.equals(datatypeWithEnum, that.datatypeWithEnum) && + Objects.equals(dataFormat, that.dataFormat) && + Objects.equals(name, that.name) && + Objects.equals(min, that.min) && + Objects.equals(max, that.max) && + Objects.equals(defaultValue, that.defaultValue) && + Objects.equals(defaultValueWithParam, that.defaultValueWithParam) && + Objects.equals(baseType, that.baseType) && + Objects.equals(containerType, that.containerType) && + Objects.equals(title, that.title) && + Objects.equals(unescapedDescription, that.unescapedDescription) && + Objects.equals(maxLength, that.maxLength) && + Objects.equals(minLength, that.minLength) && + Objects.equals(pattern, that.pattern) && + Objects.equals(example, that.example) && + Objects.equals(jsonSchema, that.jsonSchema) && + Objects.equals(minimum, that.minimum) && + Objects.equals(maximum, that.maximum) && + Objects.equals(_enum, that._enum) && + Objects.equals(allowableValues, that.allowableValues) && + Objects.equals(items, that.items) && + Objects.equals(mostInnerItems, that.mostInnerItems) && + Objects.equals(vendorExtensions, that.vendorExtensions) && + Objects.equals(discriminatorValue, that.discriminatorValue) && + Objects.equals(nameInCamelCase, that.nameInCamelCase) && + Objects.equals(nameInSnakeCase, that.nameInSnakeCase) && + Objects.equals(enumName, that.enumName) && + Objects.equals(maxItems, that.maxItems) && + Objects.equals(minItems, that.minItems) && + Objects.equals(xmlPrefix, that.xmlPrefix) && + Objects.equals(xmlName, that.xmlName) && + Objects.equals(xmlNamespace, that.xmlNamespace); + } + @Override + public int hashCode() { + + return Objects.hash(openApiType, baseName, complexType, getter, setter, description, dataType, + datatypeWithEnum, dataFormat, name, min, max, defaultValue, defaultValueWithParam, baseType, + containerType, title, unescapedDescription, maxLength, minLength, pattern, example, jsonSchema, + minimum, maximum, exclusiveMinimum, exclusiveMaximum, hasMore, required, secondaryParam, + hasMoreNonReadOnly, isPrimitiveType, isModel, isContainer, isString, isNumeric, isInteger, + isLong, isNumber, isFloat, isDouble, isByteArray, isBinary, isFile, isBoolean, isDate, isDateTime, + isUuid, isUri, isEmail, isFreeFormObject, isListContainer, isMapContainer, isEnum, isReadOnly, + isWriteOnly, isNullable, isSelfReference, _enum, allowableValues, items, mostInnerItems, + vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase, nameInSnakeCase, + enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName, xmlNamespace, isXmlWrapped); + } } 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 e4241ee00eb..42120f9ea5d 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 @@ -43,46 +43,6 @@ public class CodegenResponse { return "0".equals(code) || "default".equals(code); } - @Override - public String toString() { - return "CodegenResponse{" + - "headers=" + headers + - ", code='" + code + '\'' + - ", message='" + message + '\'' + - ", hasMore=" + hasMore + - ", examples=" + examples + - ", dataType='" + dataType + '\'' + - ", baseType='" + baseType + '\'' + - ", containerType='" + containerType + '\'' + - ", hasHeaders=" + hasHeaders + - ", isString=" + isString + - ", isNumeric=" + isNumeric + - ", isInteger=" + isInteger + - ", isLong=" + isLong + - ", isNumber=" + isNumber + - ", isFloat=" + isFloat + - ", isDouble=" + isDouble + - ", isByteArray=" + isByteArray + - ", isBoolean=" + isBoolean + - ", isDate=" + isDate + - ", isDateTime=" + isDateTime + - ", isUuid=" + isUuid + - ", isEmail=" + isEmail + - ", isFreeFormObject=" + isFreeFormObject + - ", isModel=" + isModel + - ", isDefault=" + isDefault + - ", simpleType=" + simpleType + - ", primitiveType=" + primitiveType + - ", isMapContainer=" + isMapContainer + - ", isListContainer=" + isListContainer + - ", isBinary=" + isBinary + - ", isFile=" + isFile + - ", schema=" + schema + - ", jsonSchema='" + jsonSchema + '\'' + - ", vendorExtensions=" + vendorExtensions + - '}'; - } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -103,8 +63,8 @@ public class CodegenResponse { isDateTime == that.isDateTime && isUuid == that.isUuid && isEmail == that.isEmail && - isFreeFormObject == that.isFreeFormObject && isModel == that.isModel && + isFreeFormObject == that.isFreeFormObject && isDefault == that.isDefault && simpleType == that.simpleType && primitiveType == that.primitiveType && @@ -126,9 +86,51 @@ public class CodegenResponse { @Override public int hashCode() { - return Objects.hash(headers, code, message, hasMore, examples, dataType, baseType, containerType, hasHeaders, - isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBoolean, isDate, - isDateTime, isUuid, isEmail, isFreeFormObject, isModel, isDefault, simpleType, primitiveType, isMapContainer, - isListContainer, isBinary, isFile, schema, jsonSchema, vendorExtensions); + + return Objects.hash(headers, code, message, hasMore, examples, dataType, baseType, containerType, + hasHeaders, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, + isBoolean, isDate, isDateTime, isUuid, isEmail, isModel, isFreeFormObject, isDefault, simpleType, + primitiveType, isMapContainer, isListContainer, isBinary, isFile, schema, jsonSchema, vendorExtensions); + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenResponse{"); + sb.append("headers=").append(headers); + sb.append(", code='").append(code).append('\''); + sb.append(", message='").append(message).append('\''); + sb.append(", hasMore=").append(hasMore); + sb.append(", examples=").append(examples); + sb.append(", dataType='").append(dataType).append('\''); + sb.append(", baseType='").append(baseType).append('\''); + sb.append(", containerType='").append(containerType).append('\''); + sb.append(", hasHeaders=").append(hasHeaders); + sb.append(", isString=").append(isString); + sb.append(", isNumeric=").append(isNumeric); + sb.append(", isInteger=").append(isInteger); + sb.append(", isLong=").append(isLong); + sb.append(", isNumber=").append(isNumber); + sb.append(", isFloat=").append(isFloat); + sb.append(", isDouble=").append(isDouble); + sb.append(", isByteArray=").append(isByteArray); + sb.append(", isBoolean=").append(isBoolean); + sb.append(", isDate=").append(isDate); + sb.append(", isDateTime=").append(isDateTime); + sb.append(", isUuid=").append(isUuid); + sb.append(", isEmail=").append(isEmail); + sb.append(", isModel=").append(isModel); + sb.append(", isFreeFormObject=").append(isFreeFormObject); + sb.append(", isDefault=").append(isDefault); + sb.append(", simpleType=").append(simpleType); + sb.append(", primitiveType=").append(primitiveType); + sb.append(", isMapContainer=").append(isMapContainer); + sb.append(", isListContainer=").append(isListContainer); + sb.append(", isBinary=").append(isBinary); + sb.append(", isFile=").append(isFile); + sb.append(", schema=").append(schema); + sb.append(", jsonSchema='").append(jsonSchema).append('\''); + sb.append(", vendorExtensions=").append(vendorExtensions); + sb.append('}'); + return sb.toString(); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java index ea51d6ff559..e7abb8c90d1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java @@ -41,67 +41,6 @@ public class CodegenSecurity { public List> scopes; public Boolean isCode, isPassword, isApplication, isImplicit; - @Override - public String toString() { - return String.format(Locale.ROOT, "%s(%s)", name, type); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - CodegenSecurity that = (CodegenSecurity) o; - - return Objects.equals(name, that.name) && - Objects.equals(type, that.type) && - Objects.equals(hasMore, that.hasMore) && - Objects.equals(isBasic, that.isBasic) && - Objects.equals(isBasicBasic, that.isBasicBasic) && - Objects.equals(isBasicBearer, that.isBasicBearer) && - Objects.equals(bearerFormat, that.bearerFormat) && - Objects.equals(isOAuth, that.isOAuth) && - Objects.equals(isApiKey, that.isApiKey) && - Objects.equals(vendorExtensions, that.vendorExtensions) && - Objects.equals(keyParamName, that.keyParamName) && - Objects.equals(isKeyInQuery, that.isKeyInQuery) && - Objects.equals(isKeyInHeader, that.isKeyInHeader) && - Objects.equals(flow, that.flow) && - Objects.equals(authorizationUrl, that.authorizationUrl) && - Objects.equals(tokenUrl, that.tokenUrl) && - Objects.equals(isCode, that.isCode) && - Objects.equals(isPassword, that.isPassword) && - Objects.equals(isApplication, that.isApplication) && - Objects.equals(isImplicit, that.isImplicit) && - Objects.equals(scopes, that.scopes); - } - - @Override - public int hashCode() { - return Objects.hash( - name, - type, - hasMore, - isBasic, - isBasicBasic, - isBasicBearer, - bearerFormat, - isOAuth, - isApiKey, - vendorExtensions, - keyParamName, - isKeyInQuery, - isKeyInHeader, - flow, - authorizationUrl, - tokenUrl, - isCode, - isPassword, - isApplication, - isImplicit, - scopes); - } - // Return a copy of the security object, filtering out any scopes from the passed-in list. public CodegenSecurity filterByScopeNames(List filterScopes) { CodegenSecurity filteredSecurity = new CodegenSecurity(); @@ -144,4 +83,72 @@ public class CodegenSecurity { return filteredSecurity; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenSecurity that = (CodegenSecurity) o; + return Objects.equals(name, that.name) && + Objects.equals(type, that.type) && + Objects.equals(scheme, that.scheme) && + Objects.equals(hasMore, that.hasMore) && + Objects.equals(isBasic, that.isBasic) && + Objects.equals(isOAuth, that.isOAuth) && + Objects.equals(isApiKey, that.isApiKey) && + Objects.equals(isBasicBasic, that.isBasicBasic) && + Objects.equals(isBasicBearer, that.isBasicBearer) && + Objects.equals(bearerFormat, that.bearerFormat) && + Objects.equals(vendorExtensions, that.vendorExtensions) && + Objects.equals(keyParamName, that.keyParamName) && + Objects.equals(isKeyInQuery, that.isKeyInQuery) && + Objects.equals(isKeyInHeader, that.isKeyInHeader) && + Objects.equals(isKeyInCookie, that.isKeyInCookie) && + Objects.equals(flow, that.flow) && + Objects.equals(authorizationUrl, that.authorizationUrl) && + Objects.equals(tokenUrl, that.tokenUrl) && + Objects.equals(scopes, that.scopes) && + Objects.equals(isCode, that.isCode) && + Objects.equals(isPassword, that.isPassword) && + Objects.equals(isApplication, that.isApplication) && + Objects.equals(isImplicit, that.isImplicit); + } + + @Override + public int hashCode() { + + return Objects.hash(name, type, scheme, hasMore, isBasic, isOAuth, isApiKey, isBasicBasic, isBasicBearer, + bearerFormat, vendorExtensions, keyParamName, isKeyInQuery, isKeyInHeader, isKeyInCookie, flow, + authorizationUrl, tokenUrl, scopes, isCode, isPassword, isApplication, isImplicit); + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenSecurity{"); + sb.append("name='").append(name).append('\''); + sb.append(", type='").append(type).append('\''); + sb.append(", scheme='").append(scheme).append('\''); + sb.append(", hasMore=").append(hasMore); + sb.append(", isBasic=").append(isBasic); + sb.append(", isOAuth=").append(isOAuth); + sb.append(", isApiKey=").append(isApiKey); + sb.append(", isBasicBasic=").append(isBasicBasic); + sb.append(", isBasicBearer=").append(isBasicBearer); + sb.append(", bearerFormat='").append(bearerFormat).append('\''); + sb.append(", vendorExtensions=").append(vendorExtensions); + sb.append(", keyParamName='").append(keyParamName).append('\''); + sb.append(", isKeyInQuery=").append(isKeyInQuery); + sb.append(", isKeyInHeader=").append(isKeyInHeader); + sb.append(", isKeyInCookie=").append(isKeyInCookie); + sb.append(", flow='").append(flow).append('\''); + sb.append(", authorizationUrl='").append(authorizationUrl).append('\''); + sb.append(", tokenUrl='").append(tokenUrl).append('\''); + sb.append(", scopes=").append(scopes); + sb.append(", isCode=").append(isCode); + sb.append(", isPassword=").append(isPassword); + sb.append(", isApplication=").append(isApplication); + sb.append(", isImplicit=").append(isImplicit); + sb.append('}'); + return sb.toString(); + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java index 0708d4407fc..f1116546028 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java @@ -1,9 +1,36 @@ package org.openapitools.codegen; import java.util.List; +import java.util.Objects; public class CodegenServer { public String url; public String description; public List variables; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenServer that = (CodegenServer) o; + return Objects.equals(url, that.url) && + Objects.equals(description, that.description) && + Objects.equals(variables, that.variables); + } + + @Override + public int hashCode() { + + return Objects.hash(url, description, variables); + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenServer{"); + sb.append("url='").append(url).append('\''); + sb.append(", description='").append(description).append('\''); + sb.append(", variables=").append(variables); + sb.append('}'); + return sb.toString(); + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java index 15ae1ca15b1..0cd643e2723 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java @@ -1,6 +1,7 @@ package org.openapitools.codegen; import java.util.List; +import java.util.Objects; public class CodegenServerVariable { public String name; @@ -8,4 +9,34 @@ public class CodegenServerVariable { public String description; public List enumValues; public String value; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenServerVariable that = (CodegenServerVariable) o; + return Objects.equals(name, that.name) && + Objects.equals(defaultValue, that.defaultValue) && + Objects.equals(description, that.description) && + Objects.equals(enumValues, that.enumValues) && + Objects.equals(value, that.value); + } + + @Override + public int hashCode() { + + return Objects.hash(name, defaultValue, description, enumValues, value); + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("CodegenServerVariable{"); + sb.append("name='").append(name).append('\''); + sb.append(", defaultValue='").append(defaultValue).append('\''); + sb.append(", description='").append(description).append('\''); + sb.append(", enumValues=").append(enumValues); + sb.append(", value='").append(value).append('\''); + sb.append('}'); + return sb.toString(); + } } 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 4221086015c..609e57e946b 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 @@ -450,6 +450,7 @@ public class DefaultCodegenTest { CodegenDiscriminator discriminator = animalModel.getDiscriminator(); CodegenDiscriminator test = new CodegenDiscriminator(); test.setPropertyName("className"); + test.setPropertyBaseName("className"); test.getMappedModels().add(new CodegenDiscriminator.MappedModel("Dog", "Dog")); test.getMappedModels().add(new CodegenDiscriminator.MappedModel("Cat", "Cat")); Assert.assertEquals(discriminator, test); @@ -804,6 +805,7 @@ public class DefaultCodegenTest { private void verifyPersonDiscriminator(CodegenDiscriminator discriminator) { CodegenDiscriminator test = new CodegenDiscriminator(); test.setPropertyName("DollarUnderscoretype"); + test.setPropertyBaseName("$_type"); test.setMapping(new HashMap<>()); test.getMapping().put("a", "#/components/schemas/Adult"); test.getMapping().put("c", "Child"); diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Api/PetApiInterface.php b/samples/server/petstore/php-symfony/SymfonyBundle-php/Api/PetApiInterface.php index 864fa5cd80f..3d822e56f29 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Api/PetApiInterface.php +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Api/PetApiInterface.php @@ -43,15 +43,6 @@ use OpenAPI\Server\Model\Pet; interface PetApiInterface { - /** - * Sets authentication method petstore_auth - * - * @param string $value Value of the petstore_auth authentication method. - * - * @return void - */ - public function setpetstore_auth($value); - /** * Sets authentication method api_key * @@ -61,6 +52,15 @@ interface PetApiInterface */ public function setapi_key($value); + /** + * Sets authentication method petstore_auth + * + * @param string $value Value of the petstore_auth authentication method. + * + * @return void + */ + public function setpetstore_auth($value); + /** * Operation addPet * From c882338ef134e9c00a02fed2d2792b7eda36ea95 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Tue, 3 Dec 2019 18:43:24 -0800 Subject: [PATCH 59/96] [Java/Core] Adds properties to ComposedSchema models when they exist (#4482) * Adds comment in java test where we need to check the fruit model * Adds oneOf test to DefaultCodegenTest.java, adds code to include properties in composed schema --- .../openapitools/codegen/DefaultCodegen.java | 11 ++++++ .../codegen/DefaultCodegenTest.java | 35 +++++++++++++++++++ .../src/test/resources/3_0/oneOf.yaml | 3 ++ 3 files changed, 49 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 c2347eabfdb..370ad8f82e9 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 @@ -1788,6 +1788,17 @@ public class DefaultCodegen implements CodegenConfig { Map allProperties = new LinkedHashMap(); List allRequired = new ArrayList(); + // if schema has properties outside of allOf/oneOf/anyOf also add them to m + if (schema.getProperties() != null) { + addVars(m, unaliasPropertySchema(schema.getProperties()), schema.getRequired(), null, null); + } + + // uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved + // if schema has additionalproperties outside of allOf/oneOf/anyOf also add it to m + // if (schema.getAdditionalProperties() != null) { + // addAdditionPropertiesToCodeGenModel(m, schema); + // } + // parent model final String parentName = ModelUtils.getParentName(composed, allDefinitions); final List allParents = ModelUtils.getAllParentsName(composed, allDefinitions); 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 609e57e946b..41e83880097 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 @@ -268,6 +268,41 @@ public class DefaultCodegenTest { Assert.assertEquals(type, "oneOf"); } + @Test + public void testComposedSchemaOneOfWithProperties() { + final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/oneOf.yaml"); + final DefaultCodegen codegen = new DefaultCodegen(); + + final Schema schema = openAPI.getComponents().getSchemas().get("fruit"); + codegen.setOpenAPI(openAPI); + CodegenModel fruit = codegen.fromModel("Fruit", schema); + + Set oneOf = new TreeSet(); + oneOf.add("Apple"); + oneOf.add("Banana"); + Assert.assertEquals(fruit.oneOf, oneOf); + Assert.assertEquals(fruit.optionalVars.size(), 3); + Assert.assertEquals(fruit.vars.size(), 3); + // make sure that fruit has the property color + boolean colorSeen = false; + for (CodegenProperty cp : fruit.vars) { + if (cp.name.equals("color")) { + colorSeen = true; + break; + } + } + Assert.assertTrue(colorSeen); + colorSeen = false; + for (CodegenProperty cp : fruit.optionalVars) { + if (cp.name.equals("color")) { + colorSeen = true; + break; + } + } + Assert.assertTrue(colorSeen); + } + + @Test public void testEscapeText() { final DefaultCodegen codegen = new DefaultCodegen(); diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml index d98fcf6667a..b9f0938421e 100644 --- a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml @@ -22,6 +22,9 @@ components: oneOf: - $ref: '#/components/schemas/apple' - $ref: '#/components/schemas/banana' + # additionalProperties: + # type: string + # uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved apple: title: apple type: object From a3c30127071fbe48b5934f883b1289de68a39220 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 12:12:54 +0800 Subject: [PATCH 60/96] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d3bcbcbd14b..54085440554 100644 --- a/README.md +++ b/README.md @@ -709,6 +709,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) - 2019-11-25 - [openapi-generatorで手軽にスタブサーバとクライアントの生成](https://qiita.com/pochopocho13/items/8db662e1934fb2b408b8) by [@pochopocho13](https://twitter.com/pochopocho13) - 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/) +- 2020-12-04 - [Angular+NestJS+OpenAPI(Swagger)でマイクロサービスを視野に入れた環境を考える](https://qiita.com/teracy55/items/0327c7a170ec772970c6) by [てらしー](https://twitter.com/teracy55) ## [6 - About Us](#table-of-contents) From 5453edf1b6127020c87d6ea0d2a3deb556b891b8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 12:15:23 +0800 Subject: [PATCH 61/96] Add a blog post to qiita (#4694) From dce392336dda566a6b556a6000674b0e0df0a34c Mon Sep 17 00:00:00 2001 From: Jiri Kuncar Date: Wed, 4 Dec 2019 09:27:30 +0100 Subject: [PATCH 62/96] [Go] Add multiple servers support to Go(-experimental) client (#4635) * [Go] Add multiple servers support to Go-experimental client * [Go] Use same configuration in go and go-experimental * [Go] Use Replace -1 instead of ReplaceAll * [Go] Fix typo and add bound check * [Go] Regenerate missing templates --- .../go-experimental/configuration.mustache | 77 +++++++++++++++++ .../main/resources/go/configuration.mustache | 77 +++++++++++++++++ .../go-petstore/configuration.go | 50 +++++++++++ .../go/go-petstore-withXml/configuration.go | 50 +++++++++++ .../petstore/go/go-petstore/configuration.go | 50 +++++++++++ .../go-petstore/.openapi-generator/VERSION | 2 +- .../go-petstore/configuration.go | 82 +++++++++++++++++++ .../petstore/go/go-petstore/configuration.go | 82 +++++++++++++++++++ 8 files changed, 469 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache b/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache index 1fd52f5e057..9d52ea1f528 100644 --- a/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/go-experimental/configuration.mustache @@ -2,7 +2,9 @@ package {{packageName}} import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -41,6 +43,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -49,6 +65,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -59,6 +76,38 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "{{#httpUserAgent}}{{{.}}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{{packageVersion}}}/go{{/httpUserAgent}}", Debug: false, + {{#servers}} + {{#-first}} + Servers: []ServerConfiguration{{ + {{/-first}} + Url: "{{{url}}}", + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + {{#variables}} + {{#-first}} + Variables: map[string]ServerVariable{ + {{/-first}} + "{{{name}}}": ServerVariable{ + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + DefaultValue: "{{{defaultValue}}}", + {{#enumValues}} + {{#-first}} + EnumValues: []string{ + {{/-first}} + "{{{.}}}", + {{#-last}} + }, + {{/-last}} + {{/enumValues}} + }, + {{#-last}} + }, + {{/-last}} + {{/variables}} + }, + {{#-last}} + }, + {{/-last}} + {{/servers}} } return cfg } @@ -67,3 +116,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} diff --git a/modules/openapi-generator/src/main/resources/go/configuration.mustache b/modules/openapi-generator/src/main/resources/go/configuration.mustache index 17bc0aab306..e6fa96d2057 100644 --- a/modules/openapi-generator/src/main/resources/go/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/go/configuration.mustache @@ -2,7 +2,9 @@ package {{packageName}} import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -41,6 +43,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -49,6 +65,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -59,6 +76,38 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "{{#httpUserAgent}}{{{.}}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{{packageVersion}}}/go{{/httpUserAgent}}", Debug: false, + {{#servers}} + {{#-first}} + Servers: []ServerConfiguration{{ + {{/-first}} + Url: "{{{url}}}", + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + {{#variables}} + {{#-first}} + Variables: map[string]ServerVariable{ + {{/-first}} + "{{{name}}}": ServerVariable{ + Description: "{{{description}}}{{^description}}No description provided{{/description}}", + DefaultValue: "{{{defaultValue}}}", + {{#enumValues}} + {{#-first}} + EnumValues: []string{ + {{/-first}} + "{{{.}}}", + {{#-last}} + }, + {{/-last}} + {{/enumValues}} + }, + {{#-last}} + }, + {{/-last}} + {{/variables}} + }, + {{#-last}} + }, + {{/-last}} + {{/servers}} } return cfg } @@ -67,3 +116,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} diff --git a/samples/client/petstore/go-experimental/go-petstore/configuration.go b/samples/client/petstore/go-experimental/go-petstore/configuration.go index 15ed61df374..5a4a915d1d3 100644 --- a/samples/client/petstore/go-experimental/go-petstore/configuration.go +++ b/samples/client/petstore/go-experimental/go-petstore/configuration.go @@ -10,7 +10,9 @@ package petstore import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -49,6 +51,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -57,6 +73,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -67,6 +84,11 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", Debug: false, + Servers: []ServerConfiguration{{ + Url: "http://petstore.swagger.io:80/v2", + Description: "No description provided", + }, + }, } return cfg } @@ -75,3 +97,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} diff --git a/samples/client/petstore/go/go-petstore-withXml/configuration.go b/samples/client/petstore/go/go-petstore-withXml/configuration.go index 9618bd142cb..59728f054c7 100644 --- a/samples/client/petstore/go/go-petstore-withXml/configuration.go +++ b/samples/client/petstore/go/go-petstore-withXml/configuration.go @@ -11,7 +11,9 @@ package petstore import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -50,6 +52,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -58,6 +74,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -68,6 +85,11 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", Debug: false, + Servers: []ServerConfiguration{{ + Url: "http://petstore.swagger.io:80/v2", + Description: "No description provided", + }, + }, } return cfg } @@ -76,3 +98,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} diff --git a/samples/client/petstore/go/go-petstore/configuration.go b/samples/client/petstore/go/go-petstore/configuration.go index 40bb03ddcb5..34f8f242922 100644 --- a/samples/client/petstore/go/go-petstore/configuration.go +++ b/samples/client/petstore/go/go-petstore/configuration.go @@ -10,7 +10,9 @@ package petstore import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -49,6 +51,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -57,6 +73,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -67,6 +84,11 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", Debug: false, + Servers: []ServerConfiguration{{ + Url: "http://petstore.swagger.io:80/v2", + Description: "No description provided", + }, + }, } return cfg } @@ -75,3 +97,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION b/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go b/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go index 54c8ae0f91d..04cac069b34 100644 --- a/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go +++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/configuration.go @@ -10,7 +10,9 @@ package openapi import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -49,6 +51,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -57,6 +73,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -67,6 +84,43 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", Debug: false, + Servers: []ServerConfiguration{{ + Url: "http://{server}.swagger.io:{port}/v2", + Description: "petstore server", + Variables: map[string]ServerVariable{ + "server": ServerVariable{ + Description: "No description provided", + DefaultValue: "petstore", + EnumValues: []string{ + "petstore", + "qa-petstore", + "dev-petstore", + }, + }, + "port": ServerVariable{ + Description: "No description provided", + DefaultValue: "80", + EnumValues: []string{ + "80", + "8080", + }, + }, + }, + }, + Url: "https://localhost:8080/{version}", + Description: "The local server", + Variables: map[string]ServerVariable{ + "version": ServerVariable{ + Description: "No description provided", + DefaultValue: "v2", + EnumValues: []string{ + "v1", + "v2", + }, + }, + }, + }, + }, } return cfg } @@ -75,3 +129,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} diff --git a/samples/openapi3/client/petstore/go/go-petstore/configuration.go b/samples/openapi3/client/petstore/go/go-petstore/configuration.go index 40bb03ddcb5..333de81350d 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/configuration.go +++ b/samples/openapi3/client/petstore/go/go-petstore/configuration.go @@ -10,7 +10,9 @@ package petstore import ( + "fmt" "net/http" + "strings" ) // contextKeys are used to identify the type of value in the context. @@ -49,6 +51,20 @@ type APIKey struct { Prefix string } +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + Url string + Description string + Variables map[string]ServerVariable +} + // Configuration stores the configuration of the API client type Configuration struct { BasePath string `json:"basePath,omitempty"` @@ -57,6 +73,7 @@ type Configuration struct { DefaultHeader map[string]string `json:"defaultHeader,omitempty"` UserAgent string `json:"userAgent,omitempty"` Debug bool `json:"debug,omitempty"` + Servers []ServerConfiguration HTTPClient *http.Client } @@ -67,6 +84,43 @@ func NewConfiguration() *Configuration { DefaultHeader: make(map[string]string), UserAgent: "OpenAPI-Generator/1.0.0/go", Debug: false, + Servers: []ServerConfiguration{{ + Url: "http://{server}.swagger.io:{port}/v2", + Description: "petstore server", + Variables: map[string]ServerVariable{ + "server": ServerVariable{ + Description: "No description provided", + DefaultValue: "petstore", + EnumValues: []string{ + "petstore", + "qa-petstore", + "dev-petstore", + }, + }, + "port": ServerVariable{ + Description: "No description provided", + DefaultValue: "80", + EnumValues: []string{ + "80", + "8080", + }, + }, + }, + }, + Url: "https://localhost:8080/{version}", + Description: "The local server", + Variables: map[string]ServerVariable{ + "version": ServerVariable{ + Description: "No description provided", + DefaultValue: "v2", + EnumValues: []string{ + "v1", + "v2", + }, + }, + }, + }, + }, } return cfg } @@ -75,3 +129,31 @@ func NewConfiguration() *Configuration { func (c *Configuration) AddDefaultHeader(key string, value string) { c.DefaultHeader[key] = value } + +// ServerUrl returns URL based on server settings +func (c *Configuration) ServerUrl(index int, variables map[string]string) (string, error) { + if index < 0 || len(c.Servers) <= index { + return "", fmt.Errorf("Index %v out of range %v", index, len(c.Servers) - 1) + } + server := c.Servers[index] + url := server.Url + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("The variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} From acf081bc028c638a71b0e3626cdf271a99d708a8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 16:40:01 +0800 Subject: [PATCH 63/96] add docspring image --- website/static/img/companies/docspring.png | Bin 0 -> 1841 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/static/img/companies/docspring.png diff --git a/website/static/img/companies/docspring.png b/website/static/img/companies/docspring.png new file mode 100644 index 0000000000000000000000000000000000000000..edf3b924ec0b532d912d634586c68101fab3f596 GIT binary patch literal 1841 zcmb`I`#Tc~7{@(MiJ2o&n#<})VTK}wwG`8o+s+Xdtx;|btqvJ!ImwhGjpxL2o0gQz zM5_#2bI)xStuUI&CFPRLWmB^qo&P}3`Qd%v=llKn{eHfwC{LsYKo6j#q@;1&74gT~ zZT~T<%4^%m!M;ODNkw`bar9(d{)`ZF>vWi5+kDt?Y-}ij!50XFS%N5L-au#U`P;=M z=QpRH@KD9kATH3i>Q*!9&s8B#T8%IlD}?FuGiYRXaGsx>8T2s)Znweu)CW9R>5C$EA>&+%WQ{LqP6D75GraZH8YOCX>z{EVZ(Vi**5LK9hd-MZV+Qd zG&aMGM(p5U*bxy)T1wSyVO57a>cyQ6h#`=tKw3-zAVP5@LP&oz0wirEZ#XP-<=!AI zFSeB}+N&H0Hl;tVMmAG#^S7zb$Cu{Ps#NOO37^L%{L?#7Xd(Do5wifV*$O1R>zfho zRnzRpxu<|ds23c){nftbtaW^=KM7BH+yCb`<$5F#AoGza{OlJ%(&clU5utzdaK*cO zYvQ~EmJ(sR$2ln7^W!$Zmv&B=LUS2`_Nmb+or^-ZGGN!t#u}ZFRuAFm;zkgl%bpO9 z;B=+!CIoZSuIlGkR9T83vX#NInA9TOH+(Q>H4cc&J%oM}4|IJNiN-L{T7lRKC>O)s9$xAsXg>RsR)it(P7BWhVW77v2kq z70u+eFcl1GXHR$SRsl?zZnD@OEm}-S(Fjq`I;U$Ra0;n{>8S}Nsg`bnH(p-6m(ig) zVUW2~3Q&=4fHsXnJwK!fj_{UJ#s1xtM1^F6z=K-Q#fS;=plXDN^|nKH1K&E@#$d3b zX=(|@;;v#}ChSuDL`#;tL)*gLLYx_WXiINkBJ$ynTsVC|-A9#iLr?gHiTx%48xI#V zXnQKn(7deI0j&-ngivu*miGTPJ!dYAxCBNFipt9LqOjU!#WZm6yZ&Rm>+ zb{ZdLM#l^lIm+Jm`McvhdTJ|DzaBhH1*j<3J3Jeg*d4Zcu8)kW{@hMbKDLhF5 zob9Mv`CWl{+jFVG>N3MBNMpU!XhNYUuGD5BiqFV1y7%hzji2qE(<(dn=e{|Ks@z7W z56`m*DZjGdRxcA*reB+-R7?XZySHLNxmQ+-Iyfhd!%d|LKBYA|F`tF?7KLoas01o6 z@5tNV$kDqRdc@*q;046EKYhfqkcC6G0HttbMd``+Ql}4&3%-^#8y(+WB97xx)&ZRh*)b<-9|@-e*xtA>~k#% Date: Wed, 4 Dec 2019 03:25:35 -0600 Subject: [PATCH 64/96] [typescript-angular] Support text response types (#4617) * [typescript-angular] responseType based on Accept header. * [typescript-angular] Generate sample client code. * [typescript-angular] Use in-line param to HttpClient. * [typescript-angular] Fix CI check. * [typescript-angular] Remove files introduced by running /bin/openapi3 scripts. * [typescript-angular] Apply suggestions from code review Co-Authored-By: Esteban Gehring * [typescript-angular] Default responseType = 'json' * [typescript-angular] Fix potential NPE * [typescript-angular] Remove type checking on responseType. * [typescript-angular] Update samples. --- .../typescript-angular/api.service.mustache | 21 ++++++-- .../default/api/pet.service.ts | 8 ++++ .../default/api/store.service.ts | 4 ++ .../default/api/user.service.ts | 8 ++++ .../npm/api/pet.service.ts | 8 ++++ .../npm/api/store.service.ts | 4 ++ .../npm/api/user.service.ts | 8 ++++ .../with-interfaces/api/pet.service.ts | 8 ++++ .../with-interfaces/api/store.service.ts | 4 ++ .../with-interfaces/api/user.service.ts | 8 ++++ .../npm/api/pet.service.ts | 48 +++++++++++++++++++ .../npm/api/store.service.ts | 24 ++++++++++ .../npm/api/user.service.ts | 48 +++++++++++++++++++ .../npm/api/pet.service.ts | 8 ++++ .../npm/api/store.service.ts | 4 ++ .../npm/api/user.service.ts | 8 ++++ .../builds/default/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/default/api/store.service.ts | 24 ++++++++++ .../builds/default/api/user.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/store.service.ts | 24 ++++++++++ .../builds/with-npm/api/user.service.ts | 48 +++++++++++++++++++ .../builds/default/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/default/api/store.service.ts | 24 ++++++++++ .../builds/default/api/user.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/store.service.ts | 24 ++++++++++ .../builds/with-npm/api/user.service.ts | 48 +++++++++++++++++++ .../builds/default/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/default/api/store.service.ts | 24 ++++++++++ .../builds/default/api/user.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/store.service.ts | 24 ++++++++++ .../builds/with-npm/api/user.service.ts | 48 +++++++++++++++++++ .../builds/default/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/default/api/store.service.ts | 24 ++++++++++ .../builds/default/api/user.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/store.service.ts | 24 ++++++++++ .../builds/with-npm/api/user.service.ts | 48 +++++++++++++++++++ .../api/pet.service.ts | 48 +++++++++++++++++++ .../api/store.service.ts | 24 ++++++++++ .../api/user.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/pet.service.ts | 48 +++++++++++++++++++ .../builds/with-npm/api/store.service.ts | 24 ++++++++++ .../builds/with-npm/api/user.service.ts | 48 +++++++++++++++++++ .../api/pet.service.ts | 48 +++++++++++++++++++ .../api/store.service.ts | 24 ++++++++++ .../api/user.service.ts | 48 +++++++++++++++++++ 49 files changed, 1537 insertions(+), 4 deletions(-) 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 28d21d1e299..7ab6c76bb2e 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 @@ -385,15 +385,25 @@ export class {{classname}} { {{/hasFormParams}} {{#useHttpClient}} + {{^isResponseFile}} + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + + {{/isResponseFile}} return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.configuration.basePath}{{{path}}}`,{{#isBodyAllowed}} {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}convertFormParamsToString ? formParams.toString() : formParams{{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/bodyParam}},{{/isBodyAllowed}} { -{{#hasQueryParams}} + {{#hasQueryParams}} params: queryParameters, -{{/hasQueryParams}} -{{#isResponseFile}} + {{/hasQueryParams}} + {{#isResponseFile}} responseType: "blob", -{{/isResponseFile}} + {{/isResponseFile}} + {{^isResponseFile}} + responseType: responseType, + {{/isResponseFile}} withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -414,6 +424,9 @@ export class {{classname}} { {{#isResponseFile}} responseType: ResponseContentType.Blob, {{/isResponseFile}} +{{^isResponseFile}} + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, +{{/isResponseFile}} {{#hasQueryParams}} search: queryParameters, {{/hasQueryParams}} diff --git a/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts index df0ef7ccd01..36d9db6744e 100644 --- a/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts @@ -246,6 +246,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -291,6 +292,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -340,6 +342,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -390,6 +393,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -432,6 +436,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -484,6 +489,7 @@ export class PetService { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -554,6 +560,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -628,6 +635,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts index 9a84a67805e..5a2292441dd 100644 --- a/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts @@ -140,6 +140,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -176,6 +177,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -212,6 +214,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -256,6 +259,7 @@ export class StoreService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts index 49f4c7f4732..229426692fe 100644 --- a/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts @@ -219,6 +219,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -261,6 +262,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -303,6 +305,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -337,6 +340,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -372,6 +376,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -419,6 +424,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -449,6 +455,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -496,6 +503,7 @@ export class UserService { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts index df0ef7ccd01..36d9db6744e 100644 --- a/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts @@ -246,6 +246,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -291,6 +292,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -340,6 +342,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -390,6 +393,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -432,6 +436,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -484,6 +489,7 @@ export class PetService { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -554,6 +560,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -628,6 +635,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts index 9a84a67805e..5a2292441dd 100644 --- a/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts @@ -140,6 +140,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -176,6 +177,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -212,6 +214,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -256,6 +259,7 @@ export class StoreService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts index 49f4c7f4732..229426692fe 100644 --- a/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts @@ -219,6 +219,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -261,6 +262,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -303,6 +305,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -337,6 +340,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -372,6 +376,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -419,6 +424,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -449,6 +455,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -496,6 +503,7 @@ export class UserService { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts index 4937a32e7bb..ee64586f950 100644 --- a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts @@ -249,6 +249,7 @@ export class PetService implements PetServiceInterface { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -294,6 +295,7 @@ export class PetService implements PetServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -343,6 +345,7 @@ export class PetService implements PetServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -393,6 +396,7 @@ export class PetService implements PetServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -435,6 +439,7 @@ export class PetService implements PetServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -487,6 +492,7 @@ export class PetService implements PetServiceInterface { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -557,6 +563,7 @@ export class PetService implements PetServiceInterface { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -631,6 +638,7 @@ export class PetService implements PetServiceInterface { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts index 744e2a3e9b5..6b2eee80069 100644 --- a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts @@ -143,6 +143,7 @@ export class StoreService implements StoreServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -179,6 +180,7 @@ export class StoreService implements StoreServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -215,6 +217,7 @@ export class StoreService implements StoreServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -259,6 +262,7 @@ export class StoreService implements StoreServiceInterface { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts index 1b4542f3e8b..d999f296618 100644 --- a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts @@ -222,6 +222,7 @@ export class UserService implements UserServiceInterface { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -264,6 +265,7 @@ export class UserService implements UserServiceInterface { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -306,6 +308,7 @@ export class UserService implements UserServiceInterface { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -340,6 +343,7 @@ export class UserService implements UserServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -375,6 +379,7 @@ export class UserService implements UserServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -422,6 +427,7 @@ export class UserService implements UserServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -452,6 +458,7 @@ export class UserService implements UserServiceInterface { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -499,6 +506,7 @@ export class UserService implements UserServiceInterface { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts index 7fe1b177c46..61b38e3aa07 100644 --- a/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts @@ -104,9 +104,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -152,8 +158,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -203,9 +215,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -255,9 +273,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -299,8 +323,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -352,9 +382,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -420,9 +456,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -492,9 +534,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts index fc37529edc6..7d46fee178f 100644 --- a/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts @@ -73,8 +73,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -111,8 +117,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -149,8 +161,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -194,9 +212,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts index b1cb03cc470..4ae84764be3 100644 --- a/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts @@ -81,9 +81,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -125,9 +131,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -169,9 +181,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -206,8 +224,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -243,8 +267,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -292,9 +322,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -324,8 +360,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -372,9 +414,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts index df0ef7ccd01..36d9db6744e 100644 --- a/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts @@ -246,6 +246,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -291,6 +292,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -340,6 +342,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -390,6 +393,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -432,6 +436,7 @@ export class PetService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -484,6 +489,7 @@ export class PetService { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -554,6 +560,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -628,6 +635,7 @@ export class PetService { method: RequestMethod.Post, headers: headers, body: convertFormParamsToString ? formParams.toString() : formParams, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts index 9a84a67805e..5a2292441dd 100644 --- a/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts @@ -140,6 +140,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -176,6 +177,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -212,6 +214,7 @@ export class StoreService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -256,6 +259,7 @@ export class StoreService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts index 49f4c7f4732..229426692fe 100644 --- a/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts @@ -219,6 +219,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -261,6 +262,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -303,6 +305,7 @@ export class UserService { method: RequestMethod.Post, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -337,6 +340,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Delete, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -372,6 +376,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -419,6 +424,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, search: queryParameters, withCredentials:this.configuration.withCredentials }); @@ -449,6 +455,7 @@ export class UserService { let requestOptions: RequestOptionsArgs = new RequestOptions({ method: RequestMethod.Get, headers: headers, + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 @@ -496,6 +503,7 @@ export class UserService { method: RequestMethod.Put, headers: headers, body: body == null ? '' : JSON.stringify(body), // https://github.com/angular/angular/issues/10612 + responseType: httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text') ? ResponseContentType.Text : ResponseContentType.Json, withCredentials:this.configuration.withCredentials }); // issues#4037 diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts index 9e5456808b8..f0b0cff753c 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts @@ -104,9 +104,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -152,8 +158,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -203,9 +215,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -255,9 +273,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -299,8 +323,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -352,9 +382,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -420,9 +456,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -492,9 +534,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts index b64d961c32c..68737439b9a 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts @@ -73,8 +73,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -111,8 +117,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -149,8 +161,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -194,9 +212,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts index 8064a6da574..cb25ca73c0f 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts @@ -81,9 +81,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -125,9 +131,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -169,9 +181,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -206,8 +224,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -243,8 +267,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -292,9 +322,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -324,8 +360,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -372,9 +414,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts index 9e5456808b8..f0b0cff753c 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts @@ -104,9 +104,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -152,8 +158,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -203,9 +215,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -255,9 +273,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -299,8 +323,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -352,9 +382,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -420,9 +456,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -492,9 +534,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts index b64d961c32c..68737439b9a 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts @@ -73,8 +73,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -111,8 +117,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -149,8 +161,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -194,9 +212,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts index 8064a6da574..cb25ca73c0f 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts @@ -81,9 +81,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -125,9 +131,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -169,9 +181,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -206,8 +224,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -243,8 +267,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -292,9 +322,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -324,8 +360,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -372,9 +414,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts index dd6227c1ce0..110615d2f42 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts @@ -106,9 +106,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -154,8 +160,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -205,9 +217,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -257,9 +275,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -301,8 +325,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -354,9 +384,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -422,9 +458,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -494,9 +536,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts index dae6e4e90a6..0bacbf87c22 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts @@ -75,8 +75,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -113,8 +119,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -151,8 +163,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -196,9 +214,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts index 00aa65bec1a..d344374967d 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts @@ -83,9 +83,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -127,9 +133,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -171,9 +183,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -208,8 +226,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,8 +269,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -294,9 +324,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -326,8 +362,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -374,9 +416,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts index dd6227c1ce0..110615d2f42 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts @@ -106,9 +106,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -154,8 +160,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -205,9 +217,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -257,9 +275,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -301,8 +325,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -354,9 +384,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -422,9 +458,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -494,9 +536,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts index dae6e4e90a6..0bacbf87c22 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts @@ -75,8 +75,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -113,8 +119,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -151,8 +163,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -196,9 +214,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts index 00aa65bec1a..d344374967d 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts @@ -83,9 +83,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -127,9 +133,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -171,9 +183,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -208,8 +226,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,8 +269,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -294,9 +324,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -326,8 +362,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -374,9 +416,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts index 9e5456808b8..f0b0cff753c 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts @@ -104,9 +104,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -152,8 +158,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -203,9 +215,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -255,9 +273,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -299,8 +323,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -352,9 +382,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -420,9 +456,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -492,9 +534,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts index b64d961c32c..68737439b9a 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts @@ -73,8 +73,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -111,8 +117,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -149,8 +161,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -194,9 +212,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts index 8064a6da574..cb25ca73c0f 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts @@ -81,9 +81,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -125,9 +131,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -169,9 +181,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -206,8 +224,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -243,8 +267,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -292,9 +322,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -324,8 +360,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -372,9 +414,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts index 9e5456808b8..f0b0cff753c 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts @@ -104,9 +104,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -152,8 +158,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -203,9 +215,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -255,9 +273,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -299,8 +323,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -352,9 +382,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -420,9 +456,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -492,9 +534,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts index b64d961c32c..68737439b9a 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts @@ -73,8 +73,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -111,8 +117,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -149,8 +161,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -194,9 +212,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts index 8064a6da574..cb25ca73c0f 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts @@ -81,9 +81,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -125,9 +131,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -169,9 +181,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -206,8 +224,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -243,8 +267,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -292,9 +322,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -324,8 +360,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -372,9 +414,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts index dd6227c1ce0..110615d2f42 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts @@ -106,9 +106,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -154,8 +160,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -205,9 +217,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -257,9 +275,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -301,8 +325,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -354,9 +384,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -422,9 +458,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -494,9 +536,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts index dae6e4e90a6..0bacbf87c22 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts @@ -75,8 +75,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -113,8 +119,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -151,8 +163,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -196,9 +214,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts index 00aa65bec1a..d344374967d 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts @@ -83,9 +83,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -127,9 +133,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -171,9 +183,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -208,8 +226,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,8 +269,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -294,9 +324,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -326,8 +362,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -374,9 +416,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts index dd6227c1ce0..110615d2f42 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts @@ -106,9 +106,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -154,8 +160,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -205,9 +217,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -257,9 +275,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -301,8 +325,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -354,9 +384,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -422,9 +458,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -494,9 +536,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts index dae6e4e90a6..0bacbf87c22 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts @@ -75,8 +75,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -113,8 +119,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -151,8 +163,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -196,9 +214,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts index 00aa65bec1a..d344374967d 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts @@ -83,9 +83,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -127,9 +133,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -171,9 +183,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -208,8 +226,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,8 +269,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -294,9 +324,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -326,8 +362,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -374,9 +416,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts index 4156b6a005e..1ab6514d615 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts @@ -144,9 +144,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -193,8 +199,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,9 +257,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -298,9 +316,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -343,8 +367,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -397,9 +427,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -466,9 +502,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -539,9 +581,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts index f5ce3496728..624eed3ea74 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts @@ -88,8 +88,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -126,8 +132,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -165,8 +177,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -211,9 +229,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts index 00056c76771..02f139bd64a 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts @@ -114,9 +114,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -159,9 +165,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -204,9 +216,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -242,8 +260,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -280,8 +304,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -330,9 +360,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -362,8 +398,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -411,9 +453,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts index dd6227c1ce0..110615d2f42 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts @@ -106,9 +106,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -154,8 +160,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -205,9 +217,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -257,9 +275,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -301,8 +325,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -354,9 +384,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -422,9 +458,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -494,9 +536,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts index dae6e4e90a6..0bacbf87c22 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts @@ -75,8 +75,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -113,8 +119,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -151,8 +163,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -196,9 +214,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts index 00aa65bec1a..d344374967d 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts @@ -83,9 +83,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -127,9 +133,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -171,9 +183,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -208,8 +226,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,8 +269,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -294,9 +324,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -326,8 +362,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -374,9 +416,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts index dd6227c1ce0..110615d2f42 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts @@ -106,9 +106,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -154,8 +160,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -205,9 +217,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -257,9 +275,15 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -301,8 +325,14 @@ export class PetService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -354,9 +384,15 @@ export class PetService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/pet`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -422,9 +458,15 @@ export class PetService { formParams = formParams.append('status', status) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -494,9 +536,15 @@ export class PetService { formParams = formParams.append('file', file) as any || formParams; } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, convertFormParamsToString ? formParams.toString() : formParams, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts index dae6e4e90a6..0bacbf87c22 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts @@ -75,8 +75,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -113,8 +119,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -151,8 +163,14 @@ export class StoreService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -196,9 +214,15 @@ export class StoreService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/store/order`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts index 00aa65bec1a..d344374967d 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts @@ -83,9 +83,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -127,9 +133,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -171,9 +183,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -208,8 +226,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -245,8 +269,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -294,9 +324,15 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/login`, { params: queryParameters, + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -326,8 +362,14 @@ export class UserService { } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.get(`${this.configuration.basePath}/user/logout`, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -374,9 +416,15 @@ export class UserService { headers = headers.set('Content-Type', httpContentTypeSelected); } + let responseType: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType = 'text'; + } + return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, body, { + responseType: responseType, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, From d0dfe3e4a0f614377e486f170571bc269d9117c1 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 4 Dec 2019 17:34:42 +0800 Subject: [PATCH 65/96] fix sponsor image size (#4697) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 54085440554..14bc1440431 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ If you find OpenAPI Generator useful for work, please consider asking your compa [![NamSor](https://openapi-generator.tech/img/companies/namsor.png)](https://www.namsor.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [![LightBow](https://openapi-generator.tech/img/companies/lightbow.png)](https://www.lightbow.net/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) -[![DocSpring](https://openapi-generator.tech/img/companies/docspring.png)](https://docspring.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://docspring.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) #### Thank you GoDaddy for sponsoring the domain names and Linode for sponsoring the VPS From f472020412f8e5e44c40f7c1978f316c1b6e7f05 Mon Sep 17 00:00:00 2001 From: mosesonline Date: Thu, 5 Dec 2019 12:58:12 +0100 Subject: [PATCH 66/96] typescript-node: handle additional properties (#4699) * add handling additional properties into typescript node * additional tests * petscripts * Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java Co-Authored-By: Esteban Gehring * Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java Co-Authored-By: Esteban Gehring --- .../TypeScriptNodeClientCodegen.java | 42 ++++++++++------ .../TypeScriptNodeModelTest.java | 50 +++++++++++++++++++ .../builds/default/.openapi-generator/VERSION | 2 +- 3 files changed, 78 insertions(+), 16 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java index e6d906804f9..b5ccea1606c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java @@ -18,8 +18,10 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.responses.ApiResponse; + import org.openapitools.codegen.*; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -112,7 +114,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } return camelize(name) + apiSuffix; } - + @Override public String toApiFilename(String name) { if (name.length() == 0) { @@ -150,7 +152,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen return modelPackage() + "/" + camelize(toModelName(name), true); } - + @Override public Map postProcessAllModels(Map objs) { Map result = super.postProcessAllModels(objs); @@ -167,7 +169,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } return result; } - + private List> toTsImports(CodegenModel cm, Set imports) { List> tsImports = new ArrayList<>(); for (String im : imports) { @@ -180,31 +182,31 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } return tsImports; } - + @Override public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); - + // The api.mustache template requires all of the auth methods for the whole api // Loop over all the operations and pick out each unique auth method Map authMethodsMap = new HashMap<>(); for (CodegenOperation op : (List) objs.get("operation")) { - if(op.hasAuthMethods){ - for(CodegenSecurity sec : op.authMethods){ + if (op.hasAuthMethods) { + for (CodegenSecurity sec : op.authMethods) { authMethodsMap.put(sec.name, sec); } } } - + // If there wer any auth methods specified add them to the operations context if (!authMethodsMap.isEmpty()) { operations.put("authMethods", authMethodsMap.values()); operations.put("hasAuthMethods", true); } - + // Add filename information for api imports objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); - + // Add additional filename information for model imports in the apis List> imports = (List>) operations.get("imports"); for (Map im : imports) { @@ -231,7 +233,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen supportingFiles.add(new SupportingFile("api.mustache", getIndexDirectory(), "api.ts")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("gitignore", "", ".gitignore")); - + if (additionalProperties.containsKey(NPM_NAME)) { addNpmPackageGeneration(); } @@ -247,7 +249,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen supportingFiles.add(new SupportingFile("package.mustache", getPackageRootDirectory(), "package.json")); supportingFiles.add(new SupportingFile("tsconfig.mustache", getPackageRootDirectory(), "tsconfig.json")); } - + private String getIndexDirectory() { String indexPackage = modelPackage.substring(0, Math.max(0, modelPackage.lastIndexOf('.'))); return indexPackage.replace('.', File.separatorChar); @@ -270,7 +272,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } return type; } - + private boolean isLanguagePrimitive(String type) { return languageSpecificPrimitives.contains(type); } @@ -289,14 +291,24 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen String indexPackage = modelPackage.substring(0, Math.max(0, modelPackage.lastIndexOf('.'))); return indexPackage.replace('.', File.separatorChar); } - + private String getApiFilenameFromClassname(String classname) { String name = classname.substring(0, classname.length() - apiSuffix.length()); return toApiFilename(name); } - + private String getModelnameFromModelFilename(String filename) { String name = filename.substring((modelPackage() + File.separator).length()); return camelize(name); } +@Override + protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { + super.addAdditionPropertiesToCodeGenModel(codegenModel, schema); + Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); + codegenModel.additionalPropertiesType = getSchemaType(additionalProperties); + if ("array".equalsIgnoreCase(codegenModel.additionalPropertiesType)) { + codegenModel.additionalPropertiesType += '<' + getSchemaType(((ArraySchema) additionalProperties).getItems()) + '>'; + } + addImport(codegenModel, codegenModel.additionalPropertiesType); + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java index d3a11b970c0..efc0d377b92 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java @@ -18,9 +18,11 @@ package org.openapitools.codegen.typescript.typescriptnode; 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.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.DefaultCodegen; @@ -206,6 +208,54 @@ public class TypeScriptNodeModelTest { Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); } + @Test(description = "convert an array additional properties model") + public void arrayModelAdditionalPropertiesArrayTest() { + final Schema schema = new Schema() + .description("a map model") + .additionalProperties(new ArraySchema().type("array").items(new Schema().type("string"))); + final DefaultCodegen codegen = new TypeScriptNodeClientCodegen(); + 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, "a map model"); + Assert.assertEquals(cm.additionalPropertiesType, "Array"); + } + + @Test(description = "convert an string additional properties model") + public void arrayModelAdditionalPropertiesStringTest() { + final Schema schema = new Schema() + .description("a map model") + .additionalProperties(new Schema().type("string")); + final DefaultCodegen codegen = new TypeScriptNodeClientCodegen(); + 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, "a map model"); + Assert.assertEquals(cm.additionalPropertiesType, "string"); + } + + @Test(description = "convert an complex additional properties model") + public void arrayModelAdditionalPropertiesComplexTest() { + final Schema schema = new Schema() + .description("a map model") + .additionalProperties(new Schema().type("object").$ref("#/definitions/Children")); + final DefaultCodegen codegen = new TypeScriptNodeClientCodegen(); + 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, "a map model"); + Assert.assertEquals(cm.additionalPropertiesType, "Children"); + } + @Test(description = "prepend imports with ./ by default") public void defaultFromModelTest() { final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/petstore.yaml"); diff --git a/samples/client/petstore/typescript-redux-query/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-redux-query/builds/default/.openapi-generator/VERSION index e4955748d3e..58592f031f6 100644 --- a/samples/client/petstore/typescript-redux-query/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-redux-query/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.2-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file From 8d8eea4fe956f78ffac97f4afe132b4b6543f08c Mon Sep 17 00:00:00 2001 From: Vadim Markovtsev Date: Thu, 5 Dec 2019 17:02:43 +0100 Subject: [PATCH 67/96] Fix typo aiohtpp -> aiohttp (#4709) --- .../src/main/resources/python-aiohttp/README.mustache | 4 ++-- samples/server/petstore/python-aiohttp/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python-aiohttp/README.mustache b/modules/openapi-generator/src/main/resources/python-aiohttp/README.mustache index 3402bd835d9..a9730470093 100644 --- a/modules/openapi-generator/src/main/resources/python-aiohttp/README.mustache +++ b/modules/openapi-generator/src/main/resources/python-aiohttp/README.mustache @@ -3,9 +3,9 @@ ## Overview This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://openapis.org) from a remote server, you can easily generate a server stub. This -is an example of building a OpenAPI-enabled aiohtpp server. +is an example of building a OpenAPI-enabled aiohttp server. -This example uses the [Connexion](https://github.com/zalando/connexion) library on top of aiohtpp. +This example uses the [Connexion](https://github.com/zalando/connexion) library on top of aiohttp. ## Requirements Python 3.5.2+ diff --git a/samples/server/petstore/python-aiohttp/README.md b/samples/server/petstore/python-aiohttp/README.md index 5983d83f184..6aa7491711b 100644 --- a/samples/server/petstore/python-aiohttp/README.md +++ b/samples/server/petstore/python-aiohttp/README.md @@ -3,9 +3,9 @@ ## Overview This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://openapis.org) from a remote server, you can easily generate a server stub. This -is an example of building a OpenAPI-enabled aiohtpp server. +is an example of building a OpenAPI-enabled aiohttp server. -This example uses the [Connexion](https://github.com/zalando/connexion) library on top of aiohtpp. +This example uses the [Connexion](https://github.com/zalando/connexion) library on top of aiohttp. ## Requirements Python 3.5.2+ From 4dc07cb9c524e4ef6cce6a5bf30692b8887eb8e2 Mon Sep 17 00:00:00 2001 From: Toby Murray Date: Thu, 5 Dec 2019 11:03:01 -0500 Subject: [PATCH 68/96] Add Embotics as a user of OpenAPI generator (#4704) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 14bc1440431..f4f865fc24d 100644 --- a/README.md +++ b/README.md @@ -589,6 +589,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [dwango](https://dwango.co.jp/) - [Edge Impulse](https://www.edgeimpulse.com/) - [Element AI](https://www.elementai.com/) +- [Embotics](https://www.embotics.com/) - [Fenergo](https://www.fenergo.com/) - [FreshCells](https://www.freshcells.de/) - [Fuse](https://www.fuse.no/) From 467fb74a21dc3480eb20b73b0961fde3dca3c0a7 Mon Sep 17 00:00:00 2001 From: Alexander Eggers Date: Fri, 6 Dec 2019 03:05:03 +1100 Subject: [PATCH 69/96] Added support for consuming OpenApi 3.0 nullable required fields (#4696) --- ...otlin-client-petstore-nullable-required.sh | 35 + .../kotlin-client-nullable-required.bat | 10 + .../kotlin-client/data_class_req_var.mustache | 2 +- .../3_0/petstore-with-nullable-required.yaml | 723 ++++++++++++++++++ 4 files changed, 769 insertions(+), 1 deletion(-) create mode 100644 bin/openapi3/kotlin-client-petstore-nullable-required.sh create mode 100644 bin/openapi3/windows/kotlin-client-nullable-required.bat create mode 100644 modules/openapi-generator/src/test/resources/3_0/petstore-with-nullable-required.yaml diff --git a/bin/openapi3/kotlin-client-petstore-nullable-required.sh b/bin/openapi3/kotlin-client-petstore-nullable-required.sh new file mode 100644 index 00000000000..18c09a54cac --- /dev/null +++ b/bin/openapi3/kotlin-client-petstore-nullable-required.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=$(ls -ld "$SCRIPT") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=$(dirname "$SCRIPT")/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=$(dirname "$SCRIPT")/.. + APP_DIR=$(cd "${APP_DIR}"; pwd) +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn clean package +fi + +export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -i modules/openapi-generator/src/test/resources/3_0/petstore-with-nullable-required.yaml -t modules/openapi-generator/src/main/resources/kotlin-client -g kotlin --artifact-id kotlin-petstore-nullable-required --additional-properties allowRequiredAsNullable=true -o samples/openapi3/client/petstore/kotlin-nullable-required $@" + +echo "Cleaning previously generated files if any from samples/openapi3/client/petstore/kotlin-nullable-required" +rm -rf samples/openapi3/client/petstore/kotlin-nullable-required + +echo "Generating Kotling client..." +java $JAVA_OPTS -jar $executable $ags \ No newline at end of file diff --git a/bin/openapi3/windows/kotlin-client-nullable-required.bat b/bin/openapi3/windows/kotlin-client-nullable-required.bat new file mode 100644 index 00000000000..dd7bf0d16a7 --- /dev/null +++ b/bin/openapi3/windows/kotlin-client-nullable-required.bat @@ -0,0 +1,10 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M +set ags=generate -i modules\openapi-generator\src\test\resources\3_0\petstore-with-nullable-required.yaml -g kotlin --artifact-id "kotlin-petstore-nullable-required" --additional-properties allowRequiredAsNullable=true -o samples\openapi3\client\petstore\kotlin-nullable-required + +java %JAVA_OPTS% -jar %executable% %ags% \ 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 23943c6913d..c7a068e7ca3 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 @@ -9,4 +9,4 @@ @SerializedName("{{{vendorExtensions.x-base-name-literal}}}") {{/gson}} {{/jvm}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} \ No newline at end of file + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-with-nullable-required.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-with-nullable-required.yaml new file mode 100644 index 00000000000..bf36923229e --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/petstore-with-nullable-required.yaml @@ -0,0 +1,723 @@ +openapi: 3.0.0 +servers: + - url: 'http://petstore.swagger.io/v2' +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: 'http://www.apache.org/licenses/LICENSE-2.0.html' +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user +paths: + /pet: + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + $ref: '#/components/requestBodies/Pet' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + $ref: '#/components/requestBodies/Pet' + /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: false + schema: + type: array + items: + type: string + enum: + - available + - pending + - sold + default: available + 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 + security: + - petstore_auth: + - 'read:pets' + /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 + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + style: form + explode: false + 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 + security: + - petstore_auth: + - 'read:pets' + deprecated: true + '/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 + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + parameters: + - name: api_key + in: header + required: false + schema: + type: string + - name: petId + in: path + description: Pet id to delete + required: true + schema: + 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 + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + type: string + format: binary + /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 + description: '' + operationId: placeOrder + responses: + '200': + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid Order + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + '/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 + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + schema: + type: integer + format: int64 + minimum: 1 + maximum: 5 + 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 + '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 + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + schema: + 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 + responses: + default: + description: successful operation + security: + - auth_cookie: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + responses: + default: + description: successful operation + security: + - auth_cookie: [] + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + responses: + default: + description: successful operation + security: + - auth_cookie: [] + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$' + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + '200': + description: successful operation + headers: + Set-Cookie: + description: >- + Cookie authentication key for use with the `auth_cookie` + apiKey authentication. + schema: + type: string + example: AUTH_KEY=abcde12345; Path=/; HttpOnly + X-Rate-Limit: + description: calls per hour allowed by the user + schema: + type: integer + format: int32 + X-Expires-After: + description: date in UTC when toekn expires + schema: + type: string + format: date-time + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + responses: + default: + description: successful operation + security: + - auth_cookie: [] + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + 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 + '404': + description: User not found + 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 deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + security: + - auth_cookie: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + 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 + '404': + description: User not found + security: + - auth_cookie: [] +externalDocs: + description: Find out more about Swagger + url: 'http://swagger.io' +components: + requestBodies: + UserArray: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + 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 + securitySchemes: + petstore_auth: + type: oauth2 + flows: + implicit: + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + type: apiKey + name: api_key + in: header + auth_cookie: + type: apiKey + name: AUTH_KEY + in: cookie + schemas: + 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 + 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: + title: Pet category + description: A category for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$' + xml: + name: Category + User: + title: a User + description: A User who is purchasing from the pet store + 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 + format: int32 + description: User Status + 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: + - name + - photoUrls + properties: + id: + type: integer + format: int64 + category: + $ref: '#/components/schemas/Category' + name: + type: string + example: doggie + nullable: true + 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: + 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 From 775cf655f99acbd54d1f9865fdcdab29a46e3cd7 Mon Sep 17 00:00:00 2001 From: sullis Date: Fri, 6 Dec 2019 01:38:36 -0800 Subject: [PATCH 70/96] mockito 3.2.0 (#4714) --- modules/openapi-generator/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 316d2a65e07..a7ebff88820 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -301,7 +301,7 @@ org.mockito mockito-core - 3.1.0 + 3.2.0 test From da44e458e0f05f76c66a670279deb61ed9ce286c Mon Sep 17 00:00:00 2001 From: Sami Jaber Date: Fri, 6 Dec 2019 14:17:46 +0100 Subject: [PATCH 71/96] typescript-fetch: Fix compatibility with noImplicitAny TS rule (#4711) * Fix compatibility with noImplicitAny TS rule (required with CRNA app) * new file added with bin/typescript-fetch-petstore.sh * missing files with bin/typescript-fetch-petstore-all.sh * Update modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache Co-Authored-By: Esteban Gehring * Update modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache Co-Authored-By: Esteban Gehring * Update modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache Co-Authored-By: Esteban Gehring * Update modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache Co-Authored-By: Esteban Gehring * changed files after bin/typescript-fetch-petstore-all.sh * re-generate samples, fix windows typescript fetch script --- ...escript-fetch-petstore-prefix-parameter-interfaces.bat | 2 +- .../src/main/resources/typescript-fetch/runtime.mustache | 8 ++++---- .../petstore/typescript-fetch/builds/default/runtime.ts | 8 ++++---- .../typescript-fetch/builds/es6-target/src/runtime.ts | 8 ++++---- .../builds/multiple-parameters/runtime.ts | 8 ++++---- .../builds/prefix-parameter-interfaces/src/runtime.ts | 8 ++++---- .../builds/typescript-three-plus/src/runtime.ts | 8 ++++---- .../typescript-fetch/builds/with-interfaces/runtime.ts | 8 ++++---- .../builds/with-npm-version/src/runtime.ts | 8 ++++---- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/bin/windows/typescript-fetch-petstore-prefix-parameter-interfaces.bat b/bin/windows/typescript-fetch-petstore-prefix-parameter-interfaces.bat index 2b271e1a2a5..f96184e5d22 100644 --- a/bin/windows/typescript-fetch-petstore-prefix-parameter-interfaces.bat +++ b/bin/windows/typescript-fetch-petstore-prefix-parameter-interfaces.bat @@ -7,6 +7,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g typescript-fetch -o samples\client\petstore\typescript-fetch\builds\prefix-parameter-interfaces --additional-properties prefixParameterInterfaces=true +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g typescript-fetch -c bin\typescript-fetch-petstore-prefix-parameter-interfaces.json -o samples\client\petstore\typescript-fetch\builds\prefix-parameter-interfaces java %JAVA_OPTS% -jar %executable% %ags% 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 03e1f986f12..29957247033 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache @@ -275,7 +275,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -283,7 +283,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -291,7 +291,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -299,7 +299,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } diff --git a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts index f6718ebc236..dcd64eefb95 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } 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 f6718ebc236..dcd64eefb95 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 @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } 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 f6718ebc236..dcd64eefb95 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } 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 f6718ebc236..dcd64eefb95 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 @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } 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 a21e1e1ed99..22aa191ef5f 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 @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } 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 f6718ebc236..dcd64eefb95 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } 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 f6718ebc236..dcd64eefb95 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 @@ -286,7 +286,7 @@ export interface ResponseTransformer { export class JSONApiResponse { constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} - async value() { + async value(): Promise { return this.transformer(await this.raw.json()); } } @@ -294,7 +294,7 @@ export class JSONApiResponse { export class VoidApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return undefined; } } @@ -302,7 +302,7 @@ export class VoidApiResponse { export class BlobApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.blob(); }; } @@ -310,7 +310,7 @@ export class BlobApiResponse { export class TextApiResponse { constructor(public raw: Response) {} - async value() { + async value(): Promise { return await this.raw.text(); }; } From 6b99aed93f5938eda759a07989721b8b2a02df0c Mon Sep 17 00:00:00 2001 From: Phillip Campbell <15082+phillc@users.noreply.github.com> Date: Sat, 7 Dec 2019 03:31:30 -0500 Subject: [PATCH 72/96] Add Linode as a user of OpenAPI Generator (#4720) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f4f865fc24d..5d5dbcfd42c 100644 --- a/README.md +++ b/README.md @@ -603,6 +603,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [JustStar](https://www.juststarinfo.com) - [Klarna](https://www.klarna.com/) - [Kronsoft Development](https://www.kronsoft.ro/home/) +- [Linode](https://www.linode.com/) - [Médiavision](https://www.mediavision.fr/) - [Metaswitch](https://www.metaswitch.com/) - [Myworkout](https://myworkout.com) From 0c0050578f2d23255c146e690fe01f7c6b049eae Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sat, 7 Dec 2019 11:27:29 -0500 Subject: [PATCH 73/96] User feedback on confusing use of oneOf (#4695) OAS 3.x specification isn't entirely clear on oneOf support. JSON Schema defines oneOf in such a way that the Schema is only valid if it validates against exactly one of the referenced Schemas. This suggests that a Schema defined with oneOf can't include additional "dynamic" properties. OpenAPI extends on this by adding the necessary discriminator object, which allows tooling to decide the intended Schema. As tooling, openapi-generator may support loose or confusing definitions in the Specification to better support our user's use cases. In this case, we may warn that while this usage is technically valid the two target specifications are unclear about the actual constraints regarding oneOf. --- .../org/openapitools/codegen/cmd/Validate.java | 18 ++++++++++++++++++ .../openapitools/codegen/DefaultCodegen.java | 15 ++++++--------- .../openapitools/codegen/utils/ModelUtils.java | 15 ++++++++++++++- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java index 8520114fd46..4011a448881 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java @@ -22,11 +22,14 @@ import io.airlift.airline.Option; import io.swagger.parser.OpenAPIParser; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.ComposedSchema; +import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.core.models.SwaggerParseResult; import org.openapitools.codegen.utils.ModelUtils; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; @Command(name = "validate", description = "Validate specification") @@ -58,6 +61,21 @@ public class Validate implements Runnable { if (unusedModels != null) { unusedModels.forEach(name -> warnings.add("Unused model: " + name)); } + + // check for loosely defined oneOf extension requirements. + // This is a recommendation because the 3.0.x spec is not clear enough on usage of oneOf. + // see https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.9.2.1.3 and the OAS section on 'Composition and Inheritance'. + Map schemas = ModelUtils.getSchemas(specification); + schemas.forEach((key, schema) -> { + if (schema instanceof ComposedSchema) { + final ComposedSchema composed = (ComposedSchema) schema; + if (composed.getOneOf() != null && composed.getOneOf().size() > 0) { + if (composed.getProperties() != null && composed.getProperties().size() >= 1 && composed.getProperties().get("discriminator") == null) { + warnings.add("Schema (oneOf) should not contain properties: " + key); + } + } + } + }); } } 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 370ad8f82e9..7c2c4565b36 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 @@ -1789,21 +1789,18 @@ public class DefaultCodegen implements CodegenConfig { List allRequired = new ArrayList(); // if schema has properties outside of allOf/oneOf/anyOf also add them to m - if (schema.getProperties() != null) { - addVars(m, unaliasPropertySchema(schema.getProperties()), schema.getRequired(), null, null); + if (composed.getProperties() != null && !composed.getProperties().isEmpty()) { + if (composed.getOneOf() != null && !composed.getOneOf().isEmpty()) { + LOGGER.warn("'oneOf' is intended to include only the additional optional OAS extension discriminator object. " + + "For more details, see https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.9.2.1.3 and the OAS section on 'Composition and Inheritance'."); + } + addVars(m, unaliasPropertySchema(composed.getProperties()), composed.getRequired(), null, null); } - // uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved - // if schema has additionalproperties outside of allOf/oneOf/anyOf also add it to m - // if (schema.getAdditionalProperties() != null) { - // addAdditionPropertiesToCodeGenModel(m, schema); - // } - // parent model final String parentName = ModelUtils.getParentName(composed, allDefinitions); final List allParents = ModelUtils.getAllParentsName(composed, allDefinitions); final Schema parent = StringUtils.isBlank(parentName) || allDefinitions == null ? null : allDefinitions.get(parentName); - final boolean hasParent = StringUtils.isNotBlank(parentName); // TODO revise the logic below to set dicriminator, xml attributes if (supportsInheritance || supportsMixins) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 26b0b6539a9..8a17b0f7305 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -35,6 +35,7 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -117,7 +118,18 @@ public class ModelUtils { * @return schemas a list of unused schemas */ public static List getUnusedSchemas(OpenAPI openAPI) { - Map> childrenMap = getChildrenMap(openAPI); + final Map> childrenMap; + Map> tmpChildrenMap; + try { + tmpChildrenMap = getChildrenMap(openAPI); + } catch (NullPointerException npe) { + // in rare cases, such as a spec document with only one top-level oneOf schema and multiple referenced schemas, + // the stream used in getChildrenMap will raise an NPE. Rather than modify getChildrenMap which is used by getAllUsedSchemas, + // we'll catch here as a workaround for this edge case. + tmpChildrenMap = new HashMap<>(); + } + + childrenMap = tmpChildrenMap; List unusedSchemas = new ArrayList(); Map schemas = getSchemas(openAPI); @@ -875,6 +887,7 @@ public class ModelUtils { public static Map> getChildrenMap(OpenAPI openAPI) { Map allSchemas = getSchemas(openAPI); + // FIXME: The collect here will throw NPE if a spec document has only a single oneOf hierarchy. Map>> groupedByParent = allSchemas.entrySet().stream() .filter(entry -> isComposedSchema(entry.getValue())) .collect(Collectors.groupingBy(entry -> getParentName((ComposedSchema) entry.getValue(), allSchemas))); From 85affe83cb20b2b3cfa0a679030af10b75b73c49 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 9 Dec 2019 10:58:16 +0800 Subject: [PATCH 74/96] add linode logo (#4730) --- website/dynamic/users.yml | 5 +++++ website/static/img/companies/linode.png | Bin 0 -> 37797 bytes 2 files changed, 5 insertions(+) create mode 100644 website/static/img/companies/linode.png diff --git a/website/dynamic/users.yml b/website/dynamic/users.yml index d37e034c9e2..5e55dc0da8c 100644 --- a/website/dynamic/users.yml +++ b/website/dynamic/users.yml @@ -173,6 +173,11 @@ image: "img/companies/klarna.svg" infoLink: "https://www.klarna.com/us/" pinned: false +- + caption: "Linode" + image: "img/companies/linode.png" + infoLink: "https://www.linode.com/" + pinned: false - caption: "Kronsoft Development" image: "img/companies/kronsoft.png" diff --git a/website/static/img/companies/linode.png b/website/static/img/companies/linode.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab380c7ddbfc5ff65cf9676ddc539e6f5411ba3 GIT binary patch literal 37797 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 TCe>C+0lW Date: Mon, 9 Dec 2019 08:13:20 +0500 Subject: [PATCH 75/96] Update PHP coding style link (#4727) * [PHP] Update PHP coding style link * [PHP] Update website doc --- CONTRIBUTING.md | 2 +- docs/contributing.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index baea26419bb..35663693484 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,7 +61,7 @@ Code change should conform to the programming style guide of the respective lang - Go: https://github.com/golang/go/wiki/CodeReviewComments - ObjC: https://github.com/NYTimes/objective-c-style-guide - Perl: http://perldoc.perl.org/perlstyle.html -- PHP: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md +- PHP: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md - PowerShell: https://msdn.microsoft.com/en-us/library/dd878270(v=vs.85).aspx - Python: https://www.python.org/dev/peps/pep-0008/ - R: https://google.github.io/styleguide/Rguide.xml diff --git a/docs/contributing.md b/docs/contributing.md index dee52bd40db..aa0e6f4ff89 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -65,7 +65,7 @@ Code change should conform to the programming style guide of the respective lang - Go: https://github.com/golang/go/wiki/CodeReviewComments - ObjC: https://github.com/NYTimes/objective-c-style-guide - Perl: http://perldoc.perl.org/perlstyle.html -- PHP: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md +- PHP: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md - PowerShell: https://msdn.microsoft.com/en-us/library/dd878270(v=vs.85).aspx - Python: https://www.python.org/dev/peps/pep-0008/ - R: https://google.github.io/styleguide/Rguide.xml From acc04c56096a2c8fd46991d0c74939208fa76aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Mon, 9 Dec 2019 04:14:33 +0100 Subject: [PATCH 76/96] [jaxrs-spec][quarkus] update to 1.0.1.FINAL (#4725) --- .../resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache index 5b6e6b45425..df616018ae0 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache @@ -13,10 +13,10 @@ 1.8 UTF-8 UTF-8 - 1.0.0.Final + 1.0.1.Final quarkus-universe-bom io.quarkus - 1.0.0.Final + 1.0.1.Final 2.22.1 From d405158d3f22fbb606b22e2f09f86b8c806d33a2 Mon Sep 17 00:00:00 2001 From: Christophe Bornet Date: Mon, 9 Dec 2019 04:15:57 +0100 Subject: [PATCH 77/96] Add javadoc to spring API, controller and delegate (#4693) * Add javadoc to spring API, controller and delegate * Add response description and code in javadoc --- .../main/resources/JavaSpring/api.mustache | 19 +++ .../JavaSpring/apiController.mustache | 20 +++ .../resources/JavaSpring/apiDelegate.mustache | 17 ++ .../java/org/openapitools/api/PetApi.java | 63 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../java/org/openapitools/api/PetApi.java | 63 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../java/org/openapitools/api/PetApi.java | 63 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../api/AnotherFakeApiController.java | 8 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../openapitools/api/FakeApiController.java | 151 ++++++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../api/FakeClassnameTestApiController.java | 8 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../openapitools/api/PetApiController.java | 74 +++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../openapitools/api/StoreApiController.java | 34 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../openapitools/api/UserApiController.java | 65 ++++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../api/AnotherFakeApiController.java | 8 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../openapitools/api/FakeApiController.java | 151 ++++++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../api/FakeClassnameTestApiController.java | 8 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../openapitools/api/PetApiController.java | 74 +++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../openapitools/api/StoreApiController.java | 34 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../openapitools/api/UserApiController.java | 65 ++++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../api/AnotherFakeApiDelegate.java | 5 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../org/openapitools/api/FakeApiDelegate.java | 106 ++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../api/FakeClassnameTestApiDelegate.java | 5 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../org/openapitools/api/PetApiDelegate.java | 50 ++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../openapitools/api/StoreApiDelegate.java | 22 +++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../org/openapitools/api/UserApiDelegate.java | 41 +++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../api/AnotherFakeApiController.java | 8 + .../api/AnotherFakeApiDelegate.java | 5 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../openapitools/api/FakeApiController.java | 151 ++++++++++++++++++ .../org/openapitools/api/FakeApiDelegate.java | 106 ++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../api/FakeClassnameTestApiController.java | 8 + .../api/FakeClassnameTestApiDelegate.java | 5 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../openapitools/api/PetApiController.java | 74 +++++++++ .../org/openapitools/api/PetApiDelegate.java | 50 ++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../openapitools/api/StoreApiController.java | 34 ++++ .../openapitools/api/StoreApiDelegate.java | 22 +++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../openapitools/api/UserApiController.java | 65 ++++++++ .../org/openapitools/api/UserApiDelegate.java | 41 +++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../java/org/openapitools/api/FakeApi.java | 132 +++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../java/org/openapitools/api/PetApi.java | 65 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../api/AnotherFakeApiDelegate.java | 5 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../org/openapitools/api/FakeApiDelegate.java | 106 ++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../api/FakeClassnameTestApiDelegate.java | 5 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../org/openapitools/api/PetApiDelegate.java | 50 ++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../openapitools/api/StoreApiDelegate.java | 22 +++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../org/openapitools/api/UserApiDelegate.java | 41 +++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ .../virtualan/api/AnotherFakeApi.java | 7 + .../openapitools/virtualan/api/FakeApi.java | 136 ++++++++++++++++ .../virtualan/api/FakeClassnameTestApi.java | 7 + .../openapitools/virtualan/api/PetApi.java | 66 ++++++++ .../openapitools/virtualan/api/StoreApi.java | 30 ++++ .../openapitools/virtualan/api/UserApi.java | 57 +++++++ .../org/openapitools/api/AnotherFakeApi.java | 7 + .../java/org/openapitools/api/FakeApi.java | 136 ++++++++++++++++ .../api/FakeClassnameTestApi.java | 7 + .../java/org/openapitools/api/PetApi.java | 66 ++++++++ .../java/org/openapitools/api/StoreApi.java | 30 ++++ .../java/org/openapitools/api/UserApi.java | 57 +++++++ 114 files changed, 5541 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache index 7b3cc1f9465..4722038fcd3 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache @@ -84,6 +84,25 @@ public interface {{classname}} { {{/jdk8-default-interface}} {{#operation}} + /** + * {{httpMethod}} {{{path}}}{{#summary}} : {{.}}{{/summary}} + {{#notes}} + * {{.}} + {{/notes}} + * + {{#allParams}} + * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} + {{/allParams}} + * @return {{#responses}}{{message}} (status code {{code}}){{#hasMore}} + * or {{/hasMore}}{{/responses}} + {{#isDeprecated}} + * @deprecated + {{/isDeprecated}} + {{#externalDocs}} + * {{description}} + * @see {{summary}} Documentation + {{/externalDocs}} + */ {{#virtualService}} @ApiVirtual {{/virtualService}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/apiController.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/apiController.mustache index 5052f367a27..75892028502 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/apiController.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/apiController.mustache @@ -89,6 +89,26 @@ public class {{classname}}Controller implements {{classname}} { {{^jdk8}} {{#operation}} + /** + * {{httpMethod}} {{{path}}}{{#summary}} : {{.}}{{/summary}} + {{#notes}} + * {{.}} + {{/notes}} + * + {{#allParams}} + * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} + {{/allParams}} + * @return {{#responses}}{{message}} (status code {{code}}){{#hasMore}} + * or {{/hasMore}}{{/responses}} + {{#isDeprecated}} + * @deprecated + {{/isDeprecated}} + {{#externalDocs}} + * {{description}} + * @see {{summary}} Documentation + {{/externalDocs}} + * @see {{classname}}#{{operationId}} + */ public {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}},{{/hasMore}}{{/allParams}}) { {{^isDelegate}} {{^async}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache index a055cb86d5a..478d0ea3cf3 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache @@ -48,6 +48,23 @@ public interface {{classname}}Delegate { {{#operation}} /** + * {{httpMethod}} {{{path}}}{{#summary}} : {{.}}{{/summary}} + {{#notes}} + * {{.}} + {{/notes}} + * + {{#allParams}} + * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} + {{/allParams}} + * @return {{#responses}}{{message}} (status code {{code}}){{#hasMore}} + * or {{/hasMore}}{{/responses}} + {{#isDeprecated}} + * @deprecated + {{/isDeprecated}} + {{#externalDocs}} + * {{description}} + * @see {{summary}} Documentation + {{/externalDocs}} * @see {{classname}}#{{operationId}} */ {{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isListContainer}}Mono{{/isListContainer}}{{#isListContainer}}Flux{{/isListContainer}}<{{{baseType}}}>{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}MultipartFile{{/isFile}} {{paramName}}{{#hasMore}}, 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 e77f58a9ece..91a6c5f585d 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 @@ -34,6 +34,12 @@ import java.util.concurrent.CompletableFuture; @Api(value = "Pet", description = "the Pet API") public interface PetApi { + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -48,6 +54,13 @@ public interface PetApi { CompletableFuture> addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -61,6 +74,14 @@ public interface PetApi { CompletableFuture> deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey); + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -76,6 +97,15 @@ public interface PetApi { CompletableFuture>> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status); + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -91,6 +121,15 @@ public interface PetApi { CompletableFuture>> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags); + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -104,6 +143,14 @@ public interface PetApi { CompletableFuture> getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId); + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -120,6 +167,14 @@ public interface PetApi { CompletableFuture> updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -134,6 +189,14 @@ public interface PetApi { CompletableFuture> updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet" ) @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet" ) @RequestParam(value="status", required=false) String status); + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 94dfff38907..17070797043 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 @@ -33,6 +33,14 @@ import java.util.concurrent.CompletableFuture; @Api(value = "Store", description = "the Store API") public interface StoreApi { + /** + * DELETE /store/order/{orderId} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -42,6 +50,12 @@ public interface StoreApi { CompletableFuture> deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("orderId") String orderId); + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -53,6 +67,15 @@ public interface StoreApi { CompletableFuture>> getInventory(); + /** + * GET /store/order/{orderId} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -64,6 +87,13 @@ public interface StoreApi { CompletableFuture> getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("orderId") Long orderId); + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 145c71d1afa..13fc9485410 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 @@ -33,6 +33,13 @@ import java.util.concurrent.CompletableFuture; @Api(value = "User", description = "the User API") public interface UserApi { + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -41,6 +48,12 @@ public interface UserApi { CompletableFuture> createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body); + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -49,6 +62,12 @@ public interface UserApi { CompletableFuture> createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -57,6 +76,14 @@ public interface UserApi { CompletableFuture> createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -66,6 +93,14 @@ public interface UserApi { CompletableFuture> deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username); + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -77,6 +112,14 @@ public interface UserApi { CompletableFuture> getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username); + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -87,6 +130,11 @@ public interface UserApi { CompletableFuture> loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password); + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -95,6 +143,15 @@ public interface UserApi { CompletableFuture> logoutUser(); + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 d59976057e6..3ff235fc412 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 @@ -33,6 +33,12 @@ import java.util.Optional; @Api(value = "Pet", description = "the Pet API") public interface PetApi { + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -47,6 +53,13 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand> addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -60,6 +73,14 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand> deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey); + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -75,6 +96,15 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand>> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status); + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -90,6 +120,15 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand>> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags); + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -103,6 +142,14 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand> getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId); + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -119,6 +166,14 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand> updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -133,6 +188,14 @@ public interface PetApi { com.netflix.hystrix.HystrixCommand> updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet" ) @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet" ) @RequestParam(value="status", required=false) String status); + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 85cf089e497..96704d92b32 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 @@ -32,6 +32,14 @@ import java.util.Optional; @Api(value = "Store", description = "the Store API") public interface StoreApi { + /** + * DELETE /store/order/{orderId} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -41,6 +49,12 @@ public interface StoreApi { com.netflix.hystrix.HystrixCommand> deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("orderId") String orderId); + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -52,6 +66,15 @@ public interface StoreApi { com.netflix.hystrix.HystrixCommand>> getInventory(); + /** + * GET /store/order/{orderId} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -63,6 +86,13 @@ public interface StoreApi { com.netflix.hystrix.HystrixCommand> getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("orderId") Long orderId); + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 2cbd2ed99b3..c682375f3fa 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 @@ -32,6 +32,13 @@ import java.util.Optional; @Api(value = "User", description = "the User API") public interface UserApi { + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -40,6 +47,12 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body); + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -48,6 +61,12 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -56,6 +75,14 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -65,6 +92,14 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username); + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -76,6 +111,14 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username); + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -86,6 +129,11 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password); + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -94,6 +142,15 @@ public interface UserApi { com.netflix.hystrix.HystrixCommand> logoutUser(); + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 f36b7b750b9..d79052c73d0 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 @@ -37,6 +37,12 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -54,6 +60,13 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -70,6 +83,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -102,6 +123,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -134,6 +164,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -164,6 +203,14 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -183,6 +230,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -200,6 +255,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 4ee1b2cbdd2..b40f869ca51 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 @@ -36,6 +36,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{orderId} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -48,6 +56,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -62,6 +76,15 @@ public interface StoreApi { } + /** + * GET /store/order/{orderId} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -90,6 +113,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 d2f2ee3f765..87e80226028 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 @@ -36,6 +36,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -47,6 +54,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -58,6 +71,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -69,6 +88,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -81,6 +108,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -109,6 +144,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -122,6 +165,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -133,6 +181,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 25cf444b839..d190ed8cd03 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 @@ -36,6 +36,13 @@ public interface AnotherFakeApi { return Optional.empty(); } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) 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 4f2d81b78b5..afd60347b77 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 @@ -46,6 +46,13 @@ public interface FakeApi { return Optional.empty(); } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -58,6 +65,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -70,6 +84,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -93,6 +114,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -105,6 +133,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -117,6 +152,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -129,6 +171,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -141,6 +190,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -165,6 +221,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -180,6 +257,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -193,6 +285,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -204,6 +308,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -216,6 +326,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -228,6 +345,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -239,6 +367,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 b09990e9f1e..82bca7bcf29 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 @@ -36,6 +36,13 @@ public interface FakeClassnameTestApi { return Optional.empty(); } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) 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 241112df11f..8714900c1e0 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 @@ -38,6 +38,13 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -56,6 +63,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -73,6 +88,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -107,6 +130,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -141,6 +173,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -173,6 +214,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -193,6 +243,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -210,6 +268,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 52e234892fc..ff391a05d84 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 @@ -37,6 +37,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -49,6 +57,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -63,6 +77,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -93,6 +116,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 506002b3d3e..43e85ed4a20 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 @@ -37,6 +37,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -48,6 +55,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -59,6 +72,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -70,6 +89,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -82,6 +109,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -112,6 +147,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -125,6 +168,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -136,6 +184,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 985497e4312..688b8e51a9e 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 @@ -35,6 +35,13 @@ public interface AnotherFakeApi { return Optional.empty(); } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) 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 155b8035260..1d8b2f18050 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 @@ -45,6 +45,13 @@ public interface FakeApi { return Optional.empty(); } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -57,6 +64,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -69,6 +83,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -90,6 +111,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -102,6 +130,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -114,6 +149,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -126,6 +168,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -138,6 +187,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -160,6 +216,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -175,6 +252,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -188,6 +280,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -199,6 +303,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -211,6 +321,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -223,6 +340,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -234,6 +362,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 dcc95822624..9a812e59198 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 @@ -35,6 +35,13 @@ public interface FakeClassnameTestApi { return Optional.empty(); } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) 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 4844b536961..84d7ef0625e 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 @@ -37,6 +37,13 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -55,6 +62,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -72,6 +87,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -104,6 +127,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -136,6 +168,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -166,6 +207,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -186,6 +236,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -203,6 +261,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 1e431779b38..ed0551b3044 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 @@ -36,6 +36,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -48,6 +56,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -62,6 +76,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -90,6 +113,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 75c42b125a3..fc9ca11b96c 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 @@ -36,6 +36,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -47,6 +54,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -58,6 +71,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -69,6 +88,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -81,6 +108,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -109,6 +144,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -122,6 +165,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -133,6 +181,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 3164635c246..9596d158a88 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 @@ -27,6 +27,13 @@ import java.util.Map; @Api(value = "another-fake", description = "the another-fake API") public interface AnotherFakeApi { + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApiController.java index fb922708cb0..d6132e093cf 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApiController.java @@ -31,6 +31,14 @@ public class AnotherFakeApiController implements AnotherFakeApi { this.request = request; } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see AnotherFakeApi#call123testSpecialTags + */ public ResponseEntity call123testSpecialTags(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 97f8197cf58..b31b167dad4 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 @@ -37,6 +37,13 @@ import java.util.Map; @Api(value = "fake", description = "the fake API") public interface FakeApi { + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -46,6 +53,13 @@ public interface FakeApi { ResponseEntity createXmlItem(@ApiParam(value = "XmlItem Body" ,required=true ) @Valid @RequestBody XmlItem xmlItem); + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -55,6 +69,13 @@ public interface FakeApi { ResponseEntity fakeOuterBooleanSerialize(@ApiParam(value = "Input boolean as post body" ) @Valid @RequestBody Boolean body); + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -64,6 +85,13 @@ public interface FakeApi { ResponseEntity fakeOuterCompositeSerialize(@ApiParam(value = "Input composite as post body" ) @Valid @RequestBody OuterComposite body); + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -73,6 +101,13 @@ public interface FakeApi { ResponseEntity fakeOuterNumberSerialize(@ApiParam(value = "Input number as post body" ) @Valid @RequestBody BigDecimal body); + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -82,6 +117,13 @@ public interface FakeApi { ResponseEntity fakeOuterStringSerialize(@ApiParam(value = "Input string as post body" ) @Valid @RequestBody String body); + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -91,6 +133,13 @@ public interface FakeApi { ResponseEntity testBodyWithFileSchema(@ApiParam(value = "" ,required=true ) @Valid @RequestBody FileSchemaTestClass body); + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -100,6 +149,13 @@ public interface FakeApi { ResponseEntity testBodyWithQueryParams(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "query", required = true) String query,@ApiParam(value = "" ,required=true ) @Valid @RequestBody User body); + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -110,6 +166,27 @@ public interface FakeApi { ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body); + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -122,6 +199,21 @@ public interface FakeApi { ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -132,6 +224,18 @@ public interface FakeApi { ResponseEntity testEnumParameters(@ApiParam(value = "Header parameter enum test (string array)" , allowableValues=">, $") @RequestHeader(value="enum_header_string_array", required=false) List enumHeaderStringArray,@ApiParam(value = "Header parameter enum test (string)" , allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestHeader(value="enum_header_string", required=false) String enumHeaderString,@ApiParam(value = "Query parameter enum test (string array)", allowableValues = ">, $") @Valid @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,@ApiParam(value = "Query parameter enum test (string)", allowableValues = "_abc, -efg, (xyz)", defaultValue = "-efg") @Valid @RequestParam(value = "enum_query_string", required = false, defaultValue="-efg") String enumQueryString,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1, -2") @Valid @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1.1, -1.2") @Valid @RequestParam(value = "enum_query_double", required = false) Double enumQueryDouble,@ApiParam(value = "Form parameter enum test (string array)", allowableValues=">, $") @RequestParam(value="enum_form_string_array", required=false) List enumFormStringArray,@ApiParam(value = "Form parameter enum test (string)", allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestParam(value="enum_form_string", required=false) String enumFormString); + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -140,6 +244,12 @@ public interface FakeApi { ResponseEntity testGroupParameters(@NotNull @ApiParam(value = "Required String in group parameters", required = true) @Valid @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,@ApiParam(value = "Required Boolean in group parameters" ,required=true) @RequestHeader(value="required_boolean_group", required=true) Boolean requiredBooleanGroup,@NotNull @ApiParam(value = "Required Integer in group parameters", required = true) @Valid @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,@ApiParam(value = "String in group parameters") @Valid @RequestParam(value = "string_group", required = false) Integer stringGroup,@ApiParam(value = "Boolean in group parameters" ) @RequestHeader(value="boolean_group", required=false) Boolean booleanGroup,@ApiParam(value = "Integer in group parameters") @Valid @RequestParam(value = "int64_group", required = false) Long int64Group); + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -149,6 +259,13 @@ public interface FakeApi { ResponseEntity testInlineAdditionalProperties(@ApiParam(value = "request body" ,required=true ) @Valid @RequestBody Map param); + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -158,6 +275,17 @@ public interface FakeApi { ResponseEntity testJsonFormData(@ApiParam(value = "field1", required=true) @RequestParam(value="param", required=true) String param,@ApiParam(value = "field2", required=true) @RequestParam(value="param2", required=true) String param2); + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -166,6 +294,14 @@ public interface FakeApi { ResponseEntity testQueryParameterCollectionFormat(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "pipe", required = true) List pipe,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "ioutil", required = true) List ioutil,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "http", required = true) List http,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "url", required = true) List url,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "context", required = true) List context); + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java index 1778cc30e75..df558c63df8 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java @@ -41,16 +41,40 @@ public class FakeApiController implements FakeApi { this.request = request; } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + * @see FakeApi#createXmlItem + */ public ResponseEntity createXmlItem(@ApiParam(value = "XmlItem Body" ,required=true ) @Valid @RequestBody XmlItem xmlItem) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + * @see FakeApi#fakeOuterBooleanSerialize + */ public ResponseEntity fakeOuterBooleanSerialize(@ApiParam(value = "Input boolean as post body" ) @Valid @RequestBody Boolean body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + * @see FakeApi#fakeOuterCompositeSerialize + */ public ResponseEntity fakeOuterCompositeSerialize(@ApiParam(value = "Input composite as post body" ) @Valid @RequestBody OuterComposite body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("*/*"))) { @@ -63,26 +87,66 @@ public class FakeApiController implements FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + * @see FakeApi#fakeOuterNumberSerialize + */ public ResponseEntity fakeOuterNumberSerialize(@ApiParam(value = "Input number as post body" ) @Valid @RequestBody BigDecimal body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + * @see FakeApi#fakeOuterStringSerialize + */ public ResponseEntity fakeOuterStringSerialize(@ApiParam(value = "Input string as post body" ) @Valid @RequestBody String body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + * @see FakeApi#testBodyWithFileSchema + */ public ResponseEntity testBodyWithFileSchema(@ApiParam(value = "" ,required=true ) @Valid @RequestBody FileSchemaTestClass body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + * @see FakeApi#testBodyWithQueryParams + */ public ResponseEntity testBodyWithQueryParams(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "query", required = true) String query,@ApiParam(value = "" ,required=true ) @Valid @RequestBody User body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see FakeApi#testClientModel + */ public ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -95,36 +159,123 @@ public class FakeApiController implements FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see FakeApi#testEndpointParameters + */ public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + * @see FakeApi#testEnumParameters + */ public ResponseEntity testEnumParameters(@ApiParam(value = "Header parameter enum test (string array)" , allowableValues=">, $") @RequestHeader(value="enum_header_string_array", required=false) List enumHeaderStringArray,@ApiParam(value = "Header parameter enum test (string)" , allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestHeader(value="enum_header_string", required=false) String enumHeaderString,@ApiParam(value = "Query parameter enum test (string array)", allowableValues = ">, $") @Valid @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,@ApiParam(value = "Query parameter enum test (string)", allowableValues = "_abc, -efg, (xyz)", defaultValue = "-efg") @Valid @RequestParam(value = "enum_query_string", required = false, defaultValue="-efg") String enumQueryString,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1, -2") @Valid @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1.1, -1.2") @Valid @RequestParam(value = "enum_query_double", required = false) Double enumQueryDouble,@ApiParam(value = "Form parameter enum test (string array)", allowableValues=">, $") @RequestParam(value="enum_form_string_array", required=false) List enumFormStringArray,@ApiParam(value = "Form parameter enum test (string)", allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestParam(value="enum_form_string", required=false) String enumFormString) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + * @see FakeApi#testGroupParameters + */ public ResponseEntity testGroupParameters(@NotNull @ApiParam(value = "Required String in group parameters", required = true) @Valid @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,@ApiParam(value = "Required Boolean in group parameters" ,required=true) @RequestHeader(value="required_boolean_group", required=true) Boolean requiredBooleanGroup,@NotNull @ApiParam(value = "Required Integer in group parameters", required = true) @Valid @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,@ApiParam(value = "String in group parameters") @Valid @RequestParam(value = "string_group", required = false) Integer stringGroup,@ApiParam(value = "Boolean in group parameters" ) @RequestHeader(value="boolean_group", required=false) Boolean booleanGroup,@ApiParam(value = "Integer in group parameters") @Valid @RequestParam(value = "int64_group", required = false) Long int64Group) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + * @see FakeApi#testInlineAdditionalProperties + */ public ResponseEntity testInlineAdditionalProperties(@ApiParam(value = "request body" ,required=true ) @Valid @RequestBody Map param) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + * @see FakeApi#testJsonFormData + */ public ResponseEntity testJsonFormData(@ApiParam(value = "field1", required=true) @RequestParam(value="param", required=true) String param,@ApiParam(value = "field2", required=true) @RequestParam(value="param2", required=true) String param2) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + * @see FakeApi#testQueryParameterCollectionFormat + */ public ResponseEntity testQueryParameterCollectionFormat(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "pipe", required = true) List pipe,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "ioutil", required = true) List ioutil,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "http", required = true) List http,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "url", required = true) List url,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "context", required = true) List context) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + * @see FakeApi#uploadFileWithRequiredFile + */ public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 04b45664b26..64f0517f509 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 @@ -27,6 +27,13 @@ import java.util.Map; @Api(value = "fake_classname_test", description = "the fake_classname_test API") public interface FakeClassnameTestApi { + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java index d2642a4ceeb..95e67da6ac0 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java @@ -31,6 +31,14 @@ public class FakeClassnameTestApiController implements FakeClassnameTestApi { this.request = request; } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see FakeClassnameTestApi#testClassname + */ public ResponseEntity testClassname(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 651756d71e3..05712720fd1 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 @@ -29,6 +29,13 @@ import java.util.Map; @Api(value = "pet", description = "the pet API") public interface PetApi { + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -44,6 +51,14 @@ public interface PetApi { ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -58,6 +73,14 @@ public interface PetApi { ResponseEntity deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey); + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -73,6 +96,15 @@ public interface PetApi { ResponseEntity> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status); + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -88,6 +120,15 @@ public interface PetApi { ResponseEntity> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags); + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -101,6 +142,15 @@ public interface PetApi { ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId); + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -118,6 +168,14 @@ public interface PetApi { ResponseEntity updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -132,6 +190,14 @@ public interface PetApi { ResponseEntity updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) String status); + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java index b1e82a3f737..84e03b71cdb 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java @@ -33,16 +33,42 @@ public class PetApiController implements PetApi { this.request = request; } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + * @see PetApi#addPet + */ public ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + * @see PetApi#deletePet + */ public ResponseEntity deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + * @see PetApi#findPetsByStatus + */ public ResponseEntity> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -60,6 +86,16 @@ public class PetApiController implements PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + * @see PetApi#findPetsByTags + */ public ResponseEntity> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -77,6 +113,16 @@ public class PetApiController implements PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * @see PetApi#getPetById + */ public ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -94,16 +140,44 @@ public class PetApiController implements PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + * @see PetApi#updatePet + */ public ResponseEntity updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + * @see PetApi#updatePetWithForm + */ public ResponseEntity updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) String status) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + * @see PetApi#uploadFile + */ public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 49ef013f393..f46e2f4e79f 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 @@ -28,6 +28,14 @@ import java.util.Map; @Api(value = "store", description = "the store API") public interface StoreApi { + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -37,6 +45,12 @@ public interface StoreApi { ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("order_id") String orderId); + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -48,6 +62,15 @@ public interface StoreApi { ResponseEntity> getInventory(); + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -59,6 +82,13 @@ public interface StoreApi { ResponseEntity getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("order_id") Long orderId); + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApiController.java index 63aa57e3c02..01c442d087c 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApiController.java @@ -32,16 +32,42 @@ public class StoreApiController implements StoreApi { this.request = request; } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + * @see StoreApi#deleteOrder + */ public ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("order_id") String orderId) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + * @see StoreApi#getInventory + */ public ResponseEntity> getInventory() { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + * @see StoreApi#getOrderById + */ public ResponseEntity getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("order_id") Long orderId) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -59,6 +85,14 @@ public class StoreApiController implements StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + * @see StoreApi#placeOrder + */ public ResponseEntity placeOrder(@ApiParam(value = "order placed for purchasing the pet" ,required=true ) @Valid @RequestBody Order body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 b267790eedb..5b18c98e4de 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 @@ -28,6 +28,13 @@ import java.util.Map; @Api(value = "user", description = "the user API") public interface UserApi { + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -36,6 +43,12 @@ public interface UserApi { ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body); + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -44,6 +57,12 @@ public interface UserApi { ResponseEntity createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -52,6 +71,14 @@ public interface UserApi { ResponseEntity createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -61,6 +88,14 @@ public interface UserApi { ResponseEntity deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username); + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -72,6 +107,14 @@ public interface UserApi { ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username); + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -82,6 +125,11 @@ public interface UserApi { ResponseEntity loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password); + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -90,6 +138,15 @@ public interface UserApi { ResponseEntity logoutUser(); + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApiController.java index 6c7ad6eaf7e..66c96808bef 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApiController.java @@ -32,26 +32,66 @@ public class UserApiController implements UserApi { this.request = request; } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUser + */ public ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUsersWithArrayInput + */ public ResponseEntity createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUsersWithListInput + */ public ResponseEntity createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#deleteUser + */ public ResponseEntity deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#getUserByName + */ public ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -69,16 +109,41 @@ public class UserApiController implements UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + * @see UserApi#loginUser + */ public ResponseEntity loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + * @see UserApi#logoutUser + */ public ResponseEntity logoutUser() { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#updateUser + */ public ResponseEntity updateUser(@ApiParam(value = "name that need to be deleted",required=true) @PathVariable("username") String username,@ApiParam(value = "Updated user object" ,required=true ) @Valid @RequestBody User body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); 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 3164635c246..9596d158a88 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 @@ -27,6 +27,13 @@ import java.util.Map; @Api(value = "another-fake", description = "the another-fake API") public interface AnotherFakeApi { + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApiController.java index a01520a180f..4989f31bec7 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApiController.java @@ -31,6 +31,14 @@ public class AnotherFakeApiController implements AnotherFakeApi { this.request = request; } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see AnotherFakeApi#call123testSpecialTags + */ public ResponseEntity call123testSpecialTags(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 97f8197cf58..b31b167dad4 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 @@ -37,6 +37,13 @@ import java.util.Map; @Api(value = "fake", description = "the fake API") public interface FakeApi { + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -46,6 +53,13 @@ public interface FakeApi { ResponseEntity createXmlItem(@ApiParam(value = "XmlItem Body" ,required=true ) @Valid @RequestBody XmlItem xmlItem); + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -55,6 +69,13 @@ public interface FakeApi { ResponseEntity fakeOuterBooleanSerialize(@ApiParam(value = "Input boolean as post body" ) @Valid @RequestBody Boolean body); + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -64,6 +85,13 @@ public interface FakeApi { ResponseEntity fakeOuterCompositeSerialize(@ApiParam(value = "Input composite as post body" ) @Valid @RequestBody OuterComposite body); + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -73,6 +101,13 @@ public interface FakeApi { ResponseEntity fakeOuterNumberSerialize(@ApiParam(value = "Input number as post body" ) @Valid @RequestBody BigDecimal body); + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -82,6 +117,13 @@ public interface FakeApi { ResponseEntity fakeOuterStringSerialize(@ApiParam(value = "Input string as post body" ) @Valid @RequestBody String body); + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -91,6 +133,13 @@ public interface FakeApi { ResponseEntity testBodyWithFileSchema(@ApiParam(value = "" ,required=true ) @Valid @RequestBody FileSchemaTestClass body); + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -100,6 +149,13 @@ public interface FakeApi { ResponseEntity testBodyWithQueryParams(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "query", required = true) String query,@ApiParam(value = "" ,required=true ) @Valid @RequestBody User body); + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -110,6 +166,27 @@ public interface FakeApi { ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body); + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -122,6 +199,21 @@ public interface FakeApi { ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -132,6 +224,18 @@ public interface FakeApi { ResponseEntity testEnumParameters(@ApiParam(value = "Header parameter enum test (string array)" , allowableValues=">, $") @RequestHeader(value="enum_header_string_array", required=false) List enumHeaderStringArray,@ApiParam(value = "Header parameter enum test (string)" , allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestHeader(value="enum_header_string", required=false) String enumHeaderString,@ApiParam(value = "Query parameter enum test (string array)", allowableValues = ">, $") @Valid @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,@ApiParam(value = "Query parameter enum test (string)", allowableValues = "_abc, -efg, (xyz)", defaultValue = "-efg") @Valid @RequestParam(value = "enum_query_string", required = false, defaultValue="-efg") String enumQueryString,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1, -2") @Valid @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1.1, -1.2") @Valid @RequestParam(value = "enum_query_double", required = false) Double enumQueryDouble,@ApiParam(value = "Form parameter enum test (string array)", allowableValues=">, $") @RequestParam(value="enum_form_string_array", required=false) List enumFormStringArray,@ApiParam(value = "Form parameter enum test (string)", allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestParam(value="enum_form_string", required=false) String enumFormString); + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -140,6 +244,12 @@ public interface FakeApi { ResponseEntity testGroupParameters(@NotNull @ApiParam(value = "Required String in group parameters", required = true) @Valid @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,@ApiParam(value = "Required Boolean in group parameters" ,required=true) @RequestHeader(value="required_boolean_group", required=true) Boolean requiredBooleanGroup,@NotNull @ApiParam(value = "Required Integer in group parameters", required = true) @Valid @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,@ApiParam(value = "String in group parameters") @Valid @RequestParam(value = "string_group", required = false) Integer stringGroup,@ApiParam(value = "Boolean in group parameters" ) @RequestHeader(value="boolean_group", required=false) Boolean booleanGroup,@ApiParam(value = "Integer in group parameters") @Valid @RequestParam(value = "int64_group", required = false) Long int64Group); + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -149,6 +259,13 @@ public interface FakeApi { ResponseEntity testInlineAdditionalProperties(@ApiParam(value = "request body" ,required=true ) @Valid @RequestBody Map param); + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -158,6 +275,17 @@ public interface FakeApi { ResponseEntity testJsonFormData(@ApiParam(value = "field1", required=true) @RequestParam(value="param", required=true) String param,@ApiParam(value = "field2", required=true) @RequestParam(value="param2", required=true) String param2); + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -166,6 +294,14 @@ public interface FakeApi { ResponseEntity testQueryParameterCollectionFormat(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "pipe", required = true) List pipe,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "ioutil", required = true) List ioutil,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "http", required = true) List http,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "url", required = true) List url,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "context", required = true) List context); + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java index af119a493c4..2ec3bb751c1 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java @@ -41,16 +41,40 @@ public class FakeApiController implements FakeApi { this.request = request; } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + * @see FakeApi#createXmlItem + */ public ResponseEntity createXmlItem(@ApiParam(value = "XmlItem Body" ,required=true ) @Valid @RequestBody XmlItem xmlItem) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + * @see FakeApi#fakeOuterBooleanSerialize + */ public ResponseEntity fakeOuterBooleanSerialize(@ApiParam(value = "Input boolean as post body" ) @Valid @RequestBody Boolean body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + * @see FakeApi#fakeOuterCompositeSerialize + */ public ResponseEntity fakeOuterCompositeSerialize(@ApiParam(value = "Input composite as post body" ) @Valid @RequestBody OuterComposite body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("*/*"))) { @@ -63,26 +87,66 @@ public class FakeApiController implements FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + * @see FakeApi#fakeOuterNumberSerialize + */ public ResponseEntity fakeOuterNumberSerialize(@ApiParam(value = "Input number as post body" ) @Valid @RequestBody BigDecimal body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + * @see FakeApi#fakeOuterStringSerialize + */ public ResponseEntity fakeOuterStringSerialize(@ApiParam(value = "Input string as post body" ) @Valid @RequestBody String body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + * @see FakeApi#testBodyWithFileSchema + */ public ResponseEntity testBodyWithFileSchema(@ApiParam(value = "" ,required=true ) @Valid @RequestBody FileSchemaTestClass body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + * @see FakeApi#testBodyWithQueryParams + */ public ResponseEntity testBodyWithQueryParams(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "query", required = true) String query,@ApiParam(value = "" ,required=true ) @Valid @RequestBody User body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see FakeApi#testClientModel + */ public ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -95,36 +159,123 @@ public class FakeApiController implements FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see FakeApi#testEndpointParameters + */ public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + * @see FakeApi#testEnumParameters + */ public ResponseEntity testEnumParameters(@ApiParam(value = "Header parameter enum test (string array)" , allowableValues=">, $") @RequestHeader(value="enum_header_string_array", required=false) List enumHeaderStringArray,@ApiParam(value = "Header parameter enum test (string)" , allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestHeader(value="enum_header_string", required=false) String enumHeaderString,@ApiParam(value = "Query parameter enum test (string array)", allowableValues = ">, $") @Valid @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,@ApiParam(value = "Query parameter enum test (string)", allowableValues = "_abc, -efg, (xyz)", defaultValue = "-efg") @Valid @RequestParam(value = "enum_query_string", required = false, defaultValue="-efg") String enumQueryString,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1, -2") @Valid @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1.1, -1.2") @Valid @RequestParam(value = "enum_query_double", required = false) Double enumQueryDouble,@ApiParam(value = "Form parameter enum test (string array)", allowableValues=">, $") @RequestParam(value="enum_form_string_array", required=false) List enumFormStringArray,@ApiParam(value = "Form parameter enum test (string)", allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestParam(value="enum_form_string", required=false) String enumFormString) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + * @see FakeApi#testGroupParameters + */ public ResponseEntity testGroupParameters(@NotNull @ApiParam(value = "Required String in group parameters", required = true) @Valid @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,@ApiParam(value = "Required Boolean in group parameters" ,required=true) @RequestHeader(value="required_boolean_group", required=true) Boolean requiredBooleanGroup,@NotNull @ApiParam(value = "Required Integer in group parameters", required = true) @Valid @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,@ApiParam(value = "String in group parameters") @Valid @RequestParam(value = "string_group", required = false) Integer stringGroup,@ApiParam(value = "Boolean in group parameters" ) @RequestHeader(value="boolean_group", required=false) Boolean booleanGroup,@ApiParam(value = "Integer in group parameters") @Valid @RequestParam(value = "int64_group", required = false) Long int64Group) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + * @see FakeApi#testInlineAdditionalProperties + */ public ResponseEntity testInlineAdditionalProperties(@ApiParam(value = "request body" ,required=true ) @Valid @RequestBody Map param) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + * @see FakeApi#testJsonFormData + */ public ResponseEntity testJsonFormData(@ApiParam(value = "field1", required=true) @RequestParam(value="param", required=true) String param,@ApiParam(value = "field2", required=true) @RequestParam(value="param2", required=true) String param2) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + * @see FakeApi#testQueryParameterCollectionFormat + */ public ResponseEntity testQueryParameterCollectionFormat(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "pipe", required = true) List pipe,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "ioutil", required = true) List ioutil,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "http", required = true) List http,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "url", required = true) List url,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "context", required = true) List context) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + * @see FakeApi#uploadFileWithRequiredFile + */ public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 04b45664b26..64f0517f509 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 @@ -27,6 +27,13 @@ import java.util.Map; @Api(value = "fake_classname_test", description = "the fake_classname_test API") public interface FakeClassnameTestApi { + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java index 378b0d9a486..a5f610e3fb3 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java @@ -31,6 +31,14 @@ public class FakeClassnameTestApiController implements FakeClassnameTestApi { this.request = request; } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see FakeClassnameTestApi#testClassname + */ public ResponseEntity testClassname(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 651756d71e3..05712720fd1 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 @@ -29,6 +29,13 @@ import java.util.Map; @Api(value = "pet", description = "the pet API") public interface PetApi { + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -44,6 +51,14 @@ public interface PetApi { ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -58,6 +73,14 @@ public interface PetApi { ResponseEntity deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey); + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -73,6 +96,15 @@ public interface PetApi { ResponseEntity> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status); + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -88,6 +120,15 @@ public interface PetApi { ResponseEntity> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags); + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -101,6 +142,15 @@ public interface PetApi { ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId); + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -118,6 +168,14 @@ public interface PetApi { ResponseEntity updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -132,6 +190,14 @@ public interface PetApi { ResponseEntity updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) String status); + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java index b263f984ecd..96fe9a628ea 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java @@ -33,16 +33,42 @@ public class PetApiController implements PetApi { this.request = request; } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + * @see PetApi#addPet + */ public ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + * @see PetApi#deletePet + */ public ResponseEntity deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + * @see PetApi#findPetsByStatus + */ public ResponseEntity> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -60,6 +86,16 @@ public class PetApiController implements PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + * @see PetApi#findPetsByTags + */ public ResponseEntity> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -77,6 +113,16 @@ public class PetApiController implements PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * @see PetApi#getPetById + */ public ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -94,16 +140,44 @@ public class PetApiController implements PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + * @see PetApi#updatePet + */ public ResponseEntity updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + * @see PetApi#updatePetWithForm + */ public ResponseEntity updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) String status) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + * @see PetApi#uploadFile + */ public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 49ef013f393..f46e2f4e79f 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 @@ -28,6 +28,14 @@ import java.util.Map; @Api(value = "store", description = "the store API") public interface StoreApi { + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -37,6 +45,12 @@ public interface StoreApi { ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("order_id") String orderId); + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -48,6 +62,15 @@ public interface StoreApi { ResponseEntity> getInventory(); + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -59,6 +82,13 @@ public interface StoreApi { ResponseEntity getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("order_id") Long orderId); + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApiController.java index 6d52b0acce5..cf845e3d944 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApiController.java @@ -32,16 +32,42 @@ public class StoreApiController implements StoreApi { this.request = request; } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + * @see StoreApi#deleteOrder + */ public ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("order_id") String orderId) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + * @see StoreApi#getInventory + */ public ResponseEntity> getInventory() { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + * @see StoreApi#getOrderById + */ public ResponseEntity getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("order_id") Long orderId) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -59,6 +85,14 @@ public class StoreApiController implements StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + * @see StoreApi#placeOrder + */ public ResponseEntity placeOrder(@ApiParam(value = "order placed for purchasing the pet" ,required=true ) @Valid @RequestBody Order body) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 b267790eedb..5b18c98e4de 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 @@ -28,6 +28,13 @@ import java.util.Map; @Api(value = "user", description = "the user API") public interface UserApi { + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -36,6 +43,12 @@ public interface UserApi { ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body); + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -44,6 +57,12 @@ public interface UserApi { ResponseEntity createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -52,6 +71,14 @@ public interface UserApi { ResponseEntity createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -61,6 +88,14 @@ public interface UserApi { ResponseEntity deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username); + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -72,6 +107,14 @@ public interface UserApi { ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username); + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -82,6 +125,11 @@ public interface UserApi { ResponseEntity loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password); + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -90,6 +138,15 @@ public interface UserApi { ResponseEntity logoutUser(); + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApiController.java index d87450cf58e..f1b2455671e 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApiController.java @@ -32,26 +32,66 @@ public class UserApiController implements UserApi { this.request = request; } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUser + */ public ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUsersWithArrayInput + */ public ResponseEntity createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUsersWithListInput + */ public ResponseEntity createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#deleteUser + */ public ResponseEntity deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#getUserByName + */ public ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { @@ -69,16 +109,41 @@ public class UserApiController implements UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + * @see UserApi#loginUser + */ public ResponseEntity loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + * @see UserApi#logoutUser + */ public ResponseEntity logoutUser() { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#updateUser + */ public ResponseEntity updateUser(@ApiParam(value = "name that need to be deleted",required=true) @PathVariable("username") String username,@ApiParam(value = "Updated user object" ,required=true ) @Valid @RequestBody User body) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); 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 b4dde0d2f8b..0416d7dda69 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 @@ -31,6 +31,13 @@ public interface AnotherFakeApi { return new AnotherFakeApiDelegate() {}; } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java index a8c46f16e4a..1ccbe873d5a 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java @@ -24,6 +24,11 @@ public interface AnotherFakeApiDelegate { } /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) * @see AnotherFakeApi#call123testSpecialTags */ default ResponseEntity call123testSpecialTags(Client body) { 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 818c2ff17e8..243a629eede 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 @@ -41,6 +41,13 @@ public interface FakeApi { return new FakeApiDelegate() {}; } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -52,6 +59,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -63,6 +77,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -74,6 +95,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -85,6 +113,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -96,6 +131,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -107,6 +149,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -118,6 +167,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -130,6 +186,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -144,6 +221,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -156,6 +248,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -166,6 +270,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -177,6 +287,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -188,6 +305,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -198,6 +326,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApiDelegate.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApiDelegate.java index 9f4a2692e9e..c1dca5a4f28 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApiDelegate.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApiDelegate.java @@ -34,6 +34,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) * @see FakeApi#createXmlItem */ default ResponseEntity createXmlItem(XmlItem xmlItem) { @@ -42,6 +47,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) * @see FakeApi#fakeOuterBooleanSerialize */ default ResponseEntity fakeOuterBooleanSerialize(Boolean body) { @@ -50,6 +60,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) * @see FakeApi#fakeOuterCompositeSerialize */ default ResponseEntity fakeOuterCompositeSerialize(OuterComposite body) { @@ -67,6 +82,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) * @see FakeApi#fakeOuterNumberSerialize */ default ResponseEntity fakeOuterNumberSerialize(BigDecimal body) { @@ -75,6 +95,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) * @see FakeApi#fakeOuterStringSerialize */ default ResponseEntity fakeOuterStringSerialize(String body) { @@ -83,6 +108,11 @@ public interface FakeApiDelegate { } /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) * @see FakeApi#testBodyWithFileSchema */ default ResponseEntity testBodyWithFileSchema(FileSchemaTestClass body) { @@ -91,6 +121,11 @@ public interface FakeApiDelegate { } /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) * @see FakeApi#testBodyWithQueryParams */ default ResponseEntity testBodyWithQueryParams(String query, @@ -100,6 +135,11 @@ public interface FakeApiDelegate { } /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) * @see FakeApi#testClientModel */ default ResponseEntity testClientModel(Client body) { @@ -117,6 +157,25 @@ public interface FakeApiDelegate { } /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) * @see FakeApi#testEndpointParameters */ default ResponseEntity testEndpointParameters(BigDecimal number, @@ -138,6 +197,19 @@ public interface FakeApiDelegate { } /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) * @see FakeApi#testEnumParameters */ default ResponseEntity testEnumParameters(List enumHeaderStringArray, @@ -153,6 +225,16 @@ public interface FakeApiDelegate { } /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) * @see FakeApi#testGroupParameters */ default ResponseEntity testGroupParameters(Integer requiredStringGroup, @@ -166,6 +248,10 @@ public interface FakeApiDelegate { } /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) * @see FakeApi#testInlineAdditionalProperties */ default ResponseEntity testInlineAdditionalProperties(Map param) { @@ -174,6 +260,11 @@ public interface FakeApiDelegate { } /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) * @see FakeApi#testJsonFormData */ default ResponseEntity testJsonFormData(String param, @@ -183,6 +274,15 @@ public interface FakeApiDelegate { } /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) * @see FakeApi#testQueryParameterCollectionFormat */ default ResponseEntity testQueryParameterCollectionFormat(List pipe, @@ -195,6 +295,12 @@ public interface FakeApiDelegate { } /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) * @see FakeApi#uploadFileWithRequiredFile */ default ResponseEntity uploadFileWithRequiredFile(Long petId, 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 303e726891a..785745b2cd3 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 @@ -31,6 +31,13 @@ public interface FakeClassnameTestApi { return new FakeClassnameTestApiDelegate() {}; } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java index df29ad43a89..7436e049bde 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java @@ -24,6 +24,11 @@ public interface FakeClassnameTestApiDelegate { } /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) * @see FakeClassnameTestApi#testClassname */ default ResponseEntity testClassname(Client body) { 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 095b91c3cdc..94ee31460e6 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 @@ -33,6 +33,13 @@ public interface PetApi { return new PetApiDelegate() {}; } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -50,6 +57,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -66,6 +81,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -83,6 +106,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -100,6 +132,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -115,6 +156,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -134,6 +184,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -150,6 +208,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApiDelegate.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApiDelegate.java index ea1a5ebed50..44d7d779d04 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApiDelegate.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApiDelegate.java @@ -26,6 +26,11 @@ public interface PetApiDelegate { } /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) * @see PetApi#addPet */ default ResponseEntity addPet(Pet body) { @@ -34,6 +39,12 @@ public interface PetApiDelegate { } /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) * @see PetApi#deletePet */ default ResponseEntity deletePet(Long petId, @@ -43,6 +54,12 @@ public interface PetApiDelegate { } /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) * @see PetApi#findPetsByStatus */ default ResponseEntity> findPetsByStatus(List status) { @@ -65,6 +82,13 @@ public interface PetApiDelegate { } /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated * @see PetApi#findPetsByTags */ default ResponseEntity> findPetsByTags(List tags) { @@ -87,6 +111,13 @@ public interface PetApiDelegate { } /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) * @see PetApi#getPetById */ default ResponseEntity getPetById(Long petId) { @@ -109,6 +140,13 @@ public interface PetApiDelegate { } /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) * @see PetApi#updatePet */ default ResponseEntity updatePet(Pet body) { @@ -117,6 +155,12 @@ public interface PetApiDelegate { } /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) * @see PetApi#updatePetWithForm */ default ResponseEntity updatePetWithForm(Long petId, @@ -127,6 +171,12 @@ public interface PetApiDelegate { } /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) * @see PetApi#uploadFile */ default ResponseEntity uploadFile(Long petId, 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 37723449fcc..262fe03d311 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 @@ -32,6 +32,14 @@ public interface StoreApi { return new StoreApiDelegate() {}; } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -43,6 +51,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -56,6 +70,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -69,6 +92,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApiDelegate.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApiDelegate.java index 036309ceb6f..5fe814ddf2b 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApiDelegate.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApiDelegate.java @@ -25,6 +25,12 @@ public interface StoreApiDelegate { } /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) * @see StoreApi#deleteOrder */ default ResponseEntity deleteOrder(String orderId) { @@ -33,6 +39,10 @@ public interface StoreApiDelegate { } /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) * @see StoreApi#getInventory */ default ResponseEntity> getInventory() { @@ -41,6 +51,13 @@ public interface StoreApiDelegate { } /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) * @see StoreApi#getOrderById */ default ResponseEntity getOrderById(Long orderId) { @@ -63,6 +80,11 @@ public interface StoreApiDelegate { } /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) * @see StoreApi#placeOrder */ default ResponseEntity placeOrder(Order body) { 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 5d0a2200b72..70ae874cd61 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 @@ -32,6 +32,13 @@ public interface UserApi { return new UserApiDelegate() {}; } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -42,6 +49,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -52,6 +65,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -62,6 +81,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -73,6 +100,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -86,6 +121,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -98,6 +141,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -108,6 +156,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApiDelegate.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApiDelegate.java index c90d5e72219..9319e143d79 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApiDelegate.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApiDelegate.java @@ -25,6 +25,11 @@ public interface UserApiDelegate { } /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) * @see UserApi#createUser */ default ResponseEntity createUser(User body) { @@ -33,6 +38,10 @@ public interface UserApiDelegate { } /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) * @see UserApi#createUsersWithArrayInput */ default ResponseEntity createUsersWithArrayInput(List body) { @@ -41,6 +50,10 @@ public interface UserApiDelegate { } /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) * @see UserApi#createUsersWithListInput */ default ResponseEntity createUsersWithListInput(List body) { @@ -49,6 +62,12 @@ public interface UserApiDelegate { } /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) * @see UserApi#deleteUser */ default ResponseEntity deleteUser(String username) { @@ -57,6 +76,12 @@ public interface UserApiDelegate { } /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) * @see UserApi#getUserByName */ default ResponseEntity getUserByName(String username) { @@ -79,6 +104,12 @@ public interface UserApiDelegate { } /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) * @see UserApi#loginUser */ default ResponseEntity loginUser(String username, @@ -88,6 +119,9 @@ public interface UserApiDelegate { } /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) * @see UserApi#logoutUser */ default ResponseEntity logoutUser() { @@ -96,6 +130,13 @@ public interface UserApiDelegate { } /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) * @see UserApi#updateUser */ default ResponseEntity updateUser(String username, 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 3164635c246..9596d158a88 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 @@ -27,6 +27,13 @@ import java.util.Map; @Api(value = "another-fake", description = "the another-fake API") public interface AnotherFakeApi { + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiController.java index b4a93799157..a399943f89c 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiController.java @@ -29,6 +29,14 @@ public class AnotherFakeApiController implements AnotherFakeApi { this.delegate = delegate; } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see AnotherFakeApi#call123testSpecialTags + */ public ResponseEntity call123testSpecialTags(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { return delegate.call123testSpecialTags(body); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java index 1ee11ed7327..a81e1aa6f58 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java @@ -16,6 +16,11 @@ import java.util.Map; public interface AnotherFakeApiDelegate { /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) * @see AnotherFakeApi#call123testSpecialTags */ ResponseEntity call123testSpecialTags(Client body); 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 97f8197cf58..b31b167dad4 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 @@ -37,6 +37,13 @@ import java.util.Map; @Api(value = "fake", description = "the fake API") public interface FakeApi { + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -46,6 +53,13 @@ public interface FakeApi { ResponseEntity createXmlItem(@ApiParam(value = "XmlItem Body" ,required=true ) @Valid @RequestBody XmlItem xmlItem); + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -55,6 +69,13 @@ public interface FakeApi { ResponseEntity fakeOuterBooleanSerialize(@ApiParam(value = "Input boolean as post body" ) @Valid @RequestBody Boolean body); + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -64,6 +85,13 @@ public interface FakeApi { ResponseEntity fakeOuterCompositeSerialize(@ApiParam(value = "Input composite as post body" ) @Valid @RequestBody OuterComposite body); + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -73,6 +101,13 @@ public interface FakeApi { ResponseEntity fakeOuterNumberSerialize(@ApiParam(value = "Input number as post body" ) @Valid @RequestBody BigDecimal body); + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -82,6 +117,13 @@ public interface FakeApi { ResponseEntity fakeOuterStringSerialize(@ApiParam(value = "Input string as post body" ) @Valid @RequestBody String body); + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -91,6 +133,13 @@ public interface FakeApi { ResponseEntity testBodyWithFileSchema(@ApiParam(value = "" ,required=true ) @Valid @RequestBody FileSchemaTestClass body); + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -100,6 +149,13 @@ public interface FakeApi { ResponseEntity testBodyWithQueryParams(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "query", required = true) String query,@ApiParam(value = "" ,required=true ) @Valid @RequestBody User body); + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -110,6 +166,27 @@ public interface FakeApi { ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body); + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -122,6 +199,21 @@ public interface FakeApi { ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -132,6 +224,18 @@ public interface FakeApi { ResponseEntity testEnumParameters(@ApiParam(value = "Header parameter enum test (string array)" , allowableValues=">, $") @RequestHeader(value="enum_header_string_array", required=false) List enumHeaderStringArray,@ApiParam(value = "Header parameter enum test (string)" , allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestHeader(value="enum_header_string", required=false) String enumHeaderString,@ApiParam(value = "Query parameter enum test (string array)", allowableValues = ">, $") @Valid @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,@ApiParam(value = "Query parameter enum test (string)", allowableValues = "_abc, -efg, (xyz)", defaultValue = "-efg") @Valid @RequestParam(value = "enum_query_string", required = false, defaultValue="-efg") String enumQueryString,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1, -2") @Valid @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1.1, -1.2") @Valid @RequestParam(value = "enum_query_double", required = false) Double enumQueryDouble,@ApiParam(value = "Form parameter enum test (string array)", allowableValues=">, $") @RequestParam(value="enum_form_string_array", required=false) List enumFormStringArray,@ApiParam(value = "Form parameter enum test (string)", allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestParam(value="enum_form_string", required=false) String enumFormString); + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -140,6 +244,12 @@ public interface FakeApi { ResponseEntity testGroupParameters(@NotNull @ApiParam(value = "Required String in group parameters", required = true) @Valid @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,@ApiParam(value = "Required Boolean in group parameters" ,required=true) @RequestHeader(value="required_boolean_group", required=true) Boolean requiredBooleanGroup,@NotNull @ApiParam(value = "Required Integer in group parameters", required = true) @Valid @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,@ApiParam(value = "String in group parameters") @Valid @RequestParam(value = "string_group", required = false) Integer stringGroup,@ApiParam(value = "Boolean in group parameters" ) @RequestHeader(value="boolean_group", required=false) Boolean booleanGroup,@ApiParam(value = "Integer in group parameters") @Valid @RequestParam(value = "int64_group", required = false) Long int64Group); + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -149,6 +259,13 @@ public interface FakeApi { ResponseEntity testInlineAdditionalProperties(@ApiParam(value = "request body" ,required=true ) @Valid @RequestBody Map param); + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -158,6 +275,17 @@ public interface FakeApi { ResponseEntity testJsonFormData(@ApiParam(value = "field1", required=true) @RequestParam(value="param", required=true) String param,@ApiParam(value = "field2", required=true) @RequestParam(value="param2", required=true) String param2); + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -166,6 +294,14 @@ public interface FakeApi { ResponseEntity testQueryParameterCollectionFormat(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "pipe", required = true) List pipe,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "ioutil", required = true) List ioutil,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "http", required = true) List http,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "url", required = true) List url,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "context", required = true) List context); + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java index dcfb5423b51..fa3f8fd3e7e 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java @@ -39,62 +39,213 @@ public class FakeApiController implements FakeApi { this.delegate = delegate; } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + * @see FakeApi#createXmlItem + */ public ResponseEntity createXmlItem(@ApiParam(value = "XmlItem Body" ,required=true ) @Valid @RequestBody XmlItem xmlItem) { return delegate.createXmlItem(xmlItem); } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + * @see FakeApi#fakeOuterBooleanSerialize + */ public ResponseEntity fakeOuterBooleanSerialize(@ApiParam(value = "Input boolean as post body" ) @Valid @RequestBody Boolean body) { return delegate.fakeOuterBooleanSerialize(body); } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + * @see FakeApi#fakeOuterCompositeSerialize + */ public ResponseEntity fakeOuterCompositeSerialize(@ApiParam(value = "Input composite as post body" ) @Valid @RequestBody OuterComposite body) { return delegate.fakeOuterCompositeSerialize(body); } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + * @see FakeApi#fakeOuterNumberSerialize + */ public ResponseEntity fakeOuterNumberSerialize(@ApiParam(value = "Input number as post body" ) @Valid @RequestBody BigDecimal body) { return delegate.fakeOuterNumberSerialize(body); } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + * @see FakeApi#fakeOuterStringSerialize + */ public ResponseEntity fakeOuterStringSerialize(@ApiParam(value = "Input string as post body" ) @Valid @RequestBody String body) { return delegate.fakeOuterStringSerialize(body); } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + * @see FakeApi#testBodyWithFileSchema + */ public ResponseEntity testBodyWithFileSchema(@ApiParam(value = "" ,required=true ) @Valid @RequestBody FileSchemaTestClass body) { return delegate.testBodyWithFileSchema(body); } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + * @see FakeApi#testBodyWithQueryParams + */ public ResponseEntity testBodyWithQueryParams(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "query", required = true) String query,@ApiParam(value = "" ,required=true ) @Valid @RequestBody User body) { return delegate.testBodyWithQueryParams(query, body); } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see FakeApi#testClientModel + */ public ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { return delegate.testClientModel(body); } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see FakeApi#testEndpointParameters + */ public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return delegate.testEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback); } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + * @see FakeApi#testEnumParameters + */ public ResponseEntity testEnumParameters(@ApiParam(value = "Header parameter enum test (string array)" , allowableValues=">, $") @RequestHeader(value="enum_header_string_array", required=false) List enumHeaderStringArray,@ApiParam(value = "Header parameter enum test (string)" , allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestHeader(value="enum_header_string", required=false) String enumHeaderString,@ApiParam(value = "Query parameter enum test (string array)", allowableValues = ">, $") @Valid @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,@ApiParam(value = "Query parameter enum test (string)", allowableValues = "_abc, -efg, (xyz)", defaultValue = "-efg") @Valid @RequestParam(value = "enum_query_string", required = false, defaultValue="-efg") String enumQueryString,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1, -2") @Valid @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,@ApiParam(value = "Query parameter enum test (double)", allowableValues = "1.1, -1.2") @Valid @RequestParam(value = "enum_query_double", required = false) Double enumQueryDouble,@ApiParam(value = "Form parameter enum test (string array)", allowableValues=">, $") @RequestParam(value="enum_form_string_array", required=false) List enumFormStringArray,@ApiParam(value = "Form parameter enum test (string)", allowableValues="_abc, -efg, (xyz)", defaultValue="-efg") @RequestParam(value="enum_form_string", required=false) String enumFormString) { return delegate.testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + * @see FakeApi#testGroupParameters + */ public ResponseEntity testGroupParameters(@NotNull @ApiParam(value = "Required String in group parameters", required = true) @Valid @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,@ApiParam(value = "Required Boolean in group parameters" ,required=true) @RequestHeader(value="required_boolean_group", required=true) Boolean requiredBooleanGroup,@NotNull @ApiParam(value = "Required Integer in group parameters", required = true) @Valid @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,@ApiParam(value = "String in group parameters") @Valid @RequestParam(value = "string_group", required = false) Integer stringGroup,@ApiParam(value = "Boolean in group parameters" ) @RequestHeader(value="boolean_group", required=false) Boolean booleanGroup,@ApiParam(value = "Integer in group parameters") @Valid @RequestParam(value = "int64_group", required = false) Long int64Group) { return delegate.testGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + * @see FakeApi#testInlineAdditionalProperties + */ public ResponseEntity testInlineAdditionalProperties(@ApiParam(value = "request body" ,required=true ) @Valid @RequestBody Map param) { return delegate.testInlineAdditionalProperties(param); } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + * @see FakeApi#testJsonFormData + */ public ResponseEntity testJsonFormData(@ApiParam(value = "field1", required=true) @RequestParam(value="param", required=true) String param,@ApiParam(value = "field2", required=true) @RequestParam(value="param2", required=true) String param2) { return delegate.testJsonFormData(param, param2); } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + * @see FakeApi#testQueryParameterCollectionFormat + */ public ResponseEntity testQueryParameterCollectionFormat(@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "pipe", required = true) List pipe,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "ioutil", required = true) List ioutil,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "http", required = true) List http,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "url", required = true) List url,@NotNull @ApiParam(value = "", required = true) @Valid @RequestParam(value = "context", required = true) List context) { return delegate.testQueryParameterCollectionFormat(pipe, ioutil, http, url, context); } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + * @see FakeApi#uploadFileWithRequiredFile + */ public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { return delegate.uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiDelegate.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiDelegate.java index fea1038544c..f1793eb192e 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiDelegate.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiDelegate.java @@ -26,47 +26,106 @@ import java.util.Map; public interface FakeApiDelegate { /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) * @see FakeApi#createXmlItem */ ResponseEntity createXmlItem(XmlItem xmlItem); /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) * @see FakeApi#fakeOuterBooleanSerialize */ ResponseEntity fakeOuterBooleanSerialize(Boolean body); /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) * @see FakeApi#fakeOuterCompositeSerialize */ ResponseEntity fakeOuterCompositeSerialize(OuterComposite body); /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) * @see FakeApi#fakeOuterNumberSerialize */ ResponseEntity fakeOuterNumberSerialize(BigDecimal body); /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) * @see FakeApi#fakeOuterStringSerialize */ ResponseEntity fakeOuterStringSerialize(String body); /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) * @see FakeApi#testBodyWithFileSchema */ ResponseEntity testBodyWithFileSchema(FileSchemaTestClass body); /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) * @see FakeApi#testBodyWithQueryParams */ ResponseEntity testBodyWithQueryParams(String query, User body); /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) * @see FakeApi#testClientModel */ ResponseEntity testClientModel(Client body); /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) * @see FakeApi#testEndpointParameters */ ResponseEntity testEndpointParameters(BigDecimal number, @@ -85,6 +144,19 @@ public interface FakeApiDelegate { String paramCallback); /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) * @see FakeApi#testEnumParameters */ ResponseEntity testEnumParameters(List enumHeaderStringArray, @@ -97,6 +169,16 @@ public interface FakeApiDelegate { String enumFormString); /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) * @see FakeApi#testGroupParameters */ ResponseEntity testGroupParameters(Integer requiredStringGroup, @@ -107,17 +189,35 @@ public interface FakeApiDelegate { Long int64Group); /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) * @see FakeApi#testInlineAdditionalProperties */ ResponseEntity testInlineAdditionalProperties(Map param); /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) * @see FakeApi#testJsonFormData */ ResponseEntity testJsonFormData(String param, String param2); /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) * @see FakeApi#testQueryParameterCollectionFormat */ ResponseEntity testQueryParameterCollectionFormat(List pipe, @@ -127,6 +227,12 @@ public interface FakeApiDelegate { List context); /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) * @see FakeApi#uploadFileWithRequiredFile */ ResponseEntity uploadFileWithRequiredFile(Long petId, 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 04b45664b26..64f0517f509 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 @@ -27,6 +27,13 @@ import java.util.Map; @Api(value = "fake_classname_test", description = "the fake_classname_test API") public interface FakeClassnameTestApi { + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java index 330dbe26560..f3e152d2883 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiController.java @@ -29,6 +29,14 @@ public class FakeClassnameTestApiController implements FakeClassnameTestApi { this.delegate = delegate; } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + * @see FakeClassnameTestApi#testClassname + */ public ResponseEntity testClassname(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body) { return delegate.testClassname(body); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java index d9a6b31331e..fbf48bc9fcf 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java @@ -16,6 +16,11 @@ import java.util.Map; public interface FakeClassnameTestApiDelegate { /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) * @see FakeClassnameTestApi#testClassname */ ResponseEntity testClassname(Client body); 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 651756d71e3..05712720fd1 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 @@ -29,6 +29,13 @@ import java.util.Map; @Api(value = "pet", description = "the pet API") public interface PetApi { + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -44,6 +51,14 @@ public interface PetApi { ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -58,6 +73,14 @@ public interface PetApi { ResponseEntity deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey); + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -73,6 +96,15 @@ public interface PetApi { ResponseEntity> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status); + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -88,6 +120,15 @@ public interface PetApi { ResponseEntity> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags); + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -101,6 +142,15 @@ public interface PetApi { ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId); + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -118,6 +168,14 @@ public interface PetApi { ResponseEntity updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body); + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -132,6 +190,14 @@ public interface PetApi { ResponseEntity updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) String status); + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java index 044a3f70054..72e4b742130 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java @@ -31,34 +31,108 @@ public class PetApiController implements PetApi { this.delegate = delegate; } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + * @see PetApi#addPet + */ public ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) { return delegate.addPet(body); } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + * @see PetApi#deletePet + */ public ResponseEntity deletePet(@ApiParam(value = "Pet id to delete",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey) { return delegate.deletePet(petId, apiKey); } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + * @see PetApi#findPetsByStatus + */ public ResponseEntity> findPetsByStatus(@NotNull @ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @Valid @RequestParam(value = "status", required = true) List status) { return delegate.findPetsByStatus(status); } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + * @see PetApi#findPetsByTags + */ public ResponseEntity> findPetsByTags(@NotNull @ApiParam(value = "Tags to filter by", required = true) @Valid @RequestParam(value = "tags", required = true) List tags) { return delegate.findPetsByTags(tags); } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * @see PetApi#getPetById + */ public ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true) @PathVariable("petId") Long petId) { return delegate.getPetById(petId); } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + * @see PetApi#updatePet + */ public ResponseEntity updatePet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body) { return delegate.updatePet(body); } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + * @see PetApi#updatePetWithForm + */ public ResponseEntity updatePetWithForm(@ApiParam(value = "ID of pet that needs to be updated",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Updated name of the pet") @RequestParam(value="name", required=false) String name,@ApiParam(value = "Updated status of the pet") @RequestParam(value="status", required=false) String status) { return delegate.updatePetWithForm(petId, name, status); } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + * @see PetApi#uploadFile + */ public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { return delegate.uploadFile(petId, additionalMetadata, file); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiDelegate.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiDelegate.java index 74053a91cd7..da180785c56 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiDelegate.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiDelegate.java @@ -18,37 +18,81 @@ import java.util.Map; public interface PetApiDelegate { /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) * @see PetApi#addPet */ ResponseEntity addPet(Pet body); /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) * @see PetApi#deletePet */ ResponseEntity deletePet(Long petId, String apiKey); /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) * @see PetApi#findPetsByStatus */ ResponseEntity> findPetsByStatus(List status); /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated * @see PetApi#findPetsByTags */ ResponseEntity> findPetsByTags(List tags); /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) * @see PetApi#getPetById */ ResponseEntity getPetById(Long petId); /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) * @see PetApi#updatePet */ ResponseEntity updatePet(Pet body); /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) * @see PetApi#updatePetWithForm */ ResponseEntity updatePetWithForm(Long petId, @@ -56,6 +100,12 @@ public interface PetApiDelegate { String status); /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) * @see PetApi#uploadFile */ ResponseEntity uploadFile(Long petId, 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 49ef013f393..f46e2f4e79f 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 @@ -28,6 +28,14 @@ import java.util.Map; @Api(value = "store", description = "the store API") public interface StoreApi { + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -37,6 +45,12 @@ public interface StoreApi { ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("order_id") String orderId); + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -48,6 +62,15 @@ public interface StoreApi { ResponseEntity> getInventory(); + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -59,6 +82,13 @@ public interface StoreApi { ResponseEntity getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("order_id") Long orderId); + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiController.java index cf2bc8afc84..61a4fc93b52 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiController.java @@ -30,18 +30,52 @@ public class StoreApiController implements StoreApi { this.delegate = delegate; } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + * @see StoreApi#deleteOrder + */ public ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true) @PathVariable("order_id") String orderId) { return delegate.deleteOrder(orderId); } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + * @see StoreApi#getInventory + */ public ResponseEntity> getInventory() { return delegate.getInventory(); } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + * @see StoreApi#getOrderById + */ public ResponseEntity getOrderById(@Min(1L) @Max(5L) @ApiParam(value = "ID of pet that needs to be fetched",required=true) @PathVariable("order_id") Long orderId) { return delegate.getOrderById(orderId); } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + * @see StoreApi#placeOrder + */ public ResponseEntity placeOrder(@ApiParam(value = "order placed for purchasing the pet" ,required=true ) @Valid @RequestBody Order body) { return delegate.placeOrder(body); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiDelegate.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiDelegate.java index da02eed54b5..a3c84b99216 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiDelegate.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApiDelegate.java @@ -17,21 +17,43 @@ import java.util.Map; public interface StoreApiDelegate { /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) * @see StoreApi#deleteOrder */ ResponseEntity deleteOrder(String orderId); /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) * @see StoreApi#getInventory */ ResponseEntity> getInventory(); /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) * @see StoreApi#getOrderById */ ResponseEntity getOrderById(Long orderId); /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) * @see StoreApi#placeOrder */ ResponseEntity placeOrder(Order body); 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 b267790eedb..5b18c98e4de 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 @@ -28,6 +28,13 @@ import java.util.Map; @Api(value = "user", description = "the user API") public interface UserApi { + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -36,6 +43,12 @@ public interface UserApi { ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body); + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -44,6 +57,12 @@ public interface UserApi { ResponseEntity createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -52,6 +71,14 @@ public interface UserApi { ResponseEntity createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body); + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -61,6 +88,14 @@ public interface UserApi { ResponseEntity deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username); + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -72,6 +107,14 @@ public interface UserApi { ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username); + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -82,6 +125,11 @@ public interface UserApi { ResponseEntity loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password); + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -90,6 +138,15 @@ public interface UserApi { ResponseEntity logoutUser(); + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiController.java index e79e68193c9..ae2097f06e1 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiController.java @@ -30,34 +30,99 @@ public class UserApiController implements UserApi { this.delegate = delegate; } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUser + */ public ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body) { return delegate.createUser(body); } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUsersWithArrayInput + */ public ResponseEntity createUsersWithArrayInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body) { return delegate.createUsersWithArrayInput(body); } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + * @see UserApi#createUsersWithListInput + */ public ResponseEntity createUsersWithListInput(@ApiParam(value = "List of user object" ,required=true ) @Valid @RequestBody List body) { return delegate.createUsersWithListInput(body); } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#deleteUser + */ public ResponseEntity deleteUser(@ApiParam(value = "The name that needs to be deleted",required=true) @PathVariable("username") String username) { return delegate.deleteUser(username); } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#getUserByName + */ public ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing.",required=true) @PathVariable("username") String username) { return delegate.getUserByName(username); } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + * @see UserApi#loginUser + */ public ResponseEntity loginUser(@NotNull @ApiParam(value = "The user name for login", required = true) @Valid @RequestParam(value = "username", required = true) String username,@NotNull @ApiParam(value = "The password for login in clear text", required = true) @Valid @RequestParam(value = "password", required = true) String password) { return delegate.loginUser(username, password); } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + * @see UserApi#logoutUser + */ public ResponseEntity logoutUser() { return delegate.logoutUser(); } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + * @see UserApi#updateUser + */ public ResponseEntity updateUser(@ApiParam(value = "name that need to be deleted",required=true) @PathVariable("username") String username,@ApiParam(value = "Updated user object" ,required=true ) @Valid @RequestBody User body) { return delegate.updateUser(username, body); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiDelegate.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiDelegate.java index dc90b13aed3..021cbf1ad7b 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiDelegate.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApiDelegate.java @@ -17,42 +17,83 @@ import java.util.Map; public interface UserApiDelegate { /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) * @see UserApi#createUser */ ResponseEntity createUser(User body); /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) * @see UserApi#createUsersWithArrayInput */ ResponseEntity createUsersWithArrayInput(List body); /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) * @see UserApi#createUsersWithListInput */ ResponseEntity createUsersWithListInput(List body); /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) * @see UserApi#deleteUser */ ResponseEntity deleteUser(String username); /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) * @see UserApi#getUserByName */ ResponseEntity getUserByName(String username); /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) * @see UserApi#loginUser */ ResponseEntity loginUser(String username, String password); /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) * @see UserApi#logoutUser */ ResponseEntity logoutUser(); /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) * @see UserApi#updateUser */ ResponseEntity updateUser(String username, 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 ed63695f415..ca8ac57f519 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 @@ -35,6 +35,13 @@ public interface AnotherFakeApi { return Optional.empty(); } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) 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 c2a4a4b45f7..951d21cc858 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 @@ -45,6 +45,13 @@ public interface FakeApi { return Optional.empty(); } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -59,6 +66,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -73,6 +87,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -96,6 +117,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -110,6 +138,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -124,6 +159,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -138,6 +180,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -152,6 +201,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -176,6 +232,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -193,6 +270,19 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -210,6 +300,16 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -225,6 +325,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -239,6 +345,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -253,6 +366,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -266,6 +390,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 201d2448774..27b034ff915 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 @@ -35,6 +35,13 @@ public interface FakeClassnameTestApi { return Optional.empty(); } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) 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 973aaf726e4..c2993ea46c0 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 @@ -37,6 +37,13 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -57,6 +64,13 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -77,6 +91,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -111,6 +133,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -145,6 +176,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -177,6 +217,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -199,6 +248,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -218,6 +275,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 77e77a35d16..f5576b982d3 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 @@ -36,6 +36,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -50,6 +58,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -66,6 +80,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -96,6 +119,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 4b9b985ae5e..b2d65fe75bd 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 @@ -36,6 +36,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -49,6 +56,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -62,6 +75,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -75,6 +94,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -89,6 +116,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -119,6 +154,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -134,6 +177,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -147,6 +195,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 19800766311..c114239fe68 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 @@ -34,6 +34,13 @@ public interface AnotherFakeApi { return new AnotherFakeApiDelegate() {}; } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java index 549a66207fa..b3b75e8872b 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApiDelegate.java @@ -27,6 +27,11 @@ public interface AnotherFakeApiDelegate { } /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) * @see AnotherFakeApi#call123testSpecialTags */ default Mono> call123testSpecialTags(Mono body, 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 21e3fbbd86f..91d50e634f6 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 @@ -44,6 +44,13 @@ public interface FakeApi { return new FakeApiDelegate() {}; } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -55,6 +62,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -66,6 +80,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -77,6 +98,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -88,6 +116,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -99,6 +134,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -110,6 +152,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -121,6 +170,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -133,6 +189,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -147,6 +224,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -159,6 +251,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -169,6 +273,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -180,6 +290,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -191,6 +308,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -201,6 +329,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApiDelegate.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApiDelegate.java index c61a3d26c7c..8c148c15140 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApiDelegate.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApiDelegate.java @@ -37,6 +37,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) * @see FakeApi#createXmlItem */ default Mono> createXmlItem(Mono xmlItem, @@ -48,6 +53,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) * @see FakeApi#fakeOuterBooleanSerialize */ default Mono> fakeOuterBooleanSerialize(Mono body, @@ -59,6 +69,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) * @see FakeApi#fakeOuterCompositeSerialize */ default Mono> fakeOuterCompositeSerialize(Mono body, @@ -77,6 +92,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) * @see FakeApi#fakeOuterNumberSerialize */ default Mono> fakeOuterNumberSerialize(Mono body, @@ -88,6 +108,11 @@ public interface FakeApiDelegate { } /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) * @see FakeApi#fakeOuterStringSerialize */ default Mono> fakeOuterStringSerialize(Mono body, @@ -99,6 +124,11 @@ public interface FakeApiDelegate { } /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) * @see FakeApi#testBodyWithFileSchema */ default Mono> testBodyWithFileSchema(Mono body, @@ -110,6 +140,11 @@ public interface FakeApiDelegate { } /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) * @see FakeApi#testBodyWithQueryParams */ default Mono> testBodyWithQueryParams(String query, @@ -122,6 +157,11 @@ public interface FakeApiDelegate { } /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) * @see FakeApi#testClientModel */ default Mono> testClientModel(Mono body, @@ -140,6 +180,25 @@ public interface FakeApiDelegate { } /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) * @see FakeApi#testEndpointParameters */ default Mono> testEndpointParameters(BigDecimal number, @@ -164,6 +223,19 @@ public interface FakeApiDelegate { } /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) * @see FakeApi#testEnumParameters */ default Mono> testEnumParameters(List enumHeaderStringArray, @@ -182,6 +254,16 @@ public interface FakeApiDelegate { } /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) * @see FakeApi#testGroupParameters */ default Mono> testGroupParameters(Integer requiredStringGroup, @@ -198,6 +280,10 @@ public interface FakeApiDelegate { } /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) * @see FakeApi#testInlineAdditionalProperties */ default Mono> testInlineAdditionalProperties(Mono param, @@ -209,6 +295,11 @@ public interface FakeApiDelegate { } /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) * @see FakeApi#testJsonFormData */ default Mono> testJsonFormData(String param, @@ -221,6 +312,15 @@ public interface FakeApiDelegate { } /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) * @see FakeApi#testQueryParameterCollectionFormat */ default Mono> testQueryParameterCollectionFormat(List pipe, @@ -236,6 +336,12 @@ public interface FakeApiDelegate { } /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) * @see FakeApi#uploadFileWithRequiredFile */ default Mono> uploadFileWithRequiredFile(Long petId, 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 41300376b49..9b4887e40fc 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 @@ -34,6 +34,13 @@ public interface FakeClassnameTestApi { return new FakeClassnameTestApiDelegate() {}; } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java index 0373ca1aec3..f273c4040bc 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApiDelegate.java @@ -27,6 +27,11 @@ public interface FakeClassnameTestApiDelegate { } /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) * @see FakeClassnameTestApi#testClassname */ default Mono> testClassname(Mono body, 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 079525c37ef..619bdce7ee1 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 @@ -36,6 +36,13 @@ public interface PetApi { return new PetApiDelegate() {}; } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -53,6 +60,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -69,6 +84,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -86,6 +109,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -103,6 +135,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -118,6 +159,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -137,6 +187,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -153,6 +211,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApiDelegate.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApiDelegate.java index f8f3d8fd98c..69511f24674 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApiDelegate.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApiDelegate.java @@ -29,6 +29,11 @@ public interface PetApiDelegate { } /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) * @see PetApi#addPet */ default Mono> addPet(Mono body, @@ -40,6 +45,12 @@ public interface PetApiDelegate { } /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) * @see PetApi#deletePet */ default Mono> deletePet(Long petId, @@ -52,6 +63,12 @@ public interface PetApiDelegate { } /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) * @see PetApi#findPetsByStatus */ default Mono>> findPetsByStatus(List status, @@ -75,6 +92,13 @@ public interface PetApiDelegate { } /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated * @see PetApi#findPetsByTags */ default Mono>> findPetsByTags(List tags, @@ -98,6 +122,13 @@ public interface PetApiDelegate { } /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) * @see PetApi#getPetById */ default Mono> getPetById(Long petId, @@ -121,6 +152,13 @@ public interface PetApiDelegate { } /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) * @see PetApi#updatePet */ default Mono> updatePet(Mono body, @@ -132,6 +170,12 @@ public interface PetApiDelegate { } /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) * @see PetApi#updatePetWithForm */ default Mono> updatePetWithForm(Long petId, @@ -145,6 +189,12 @@ public interface PetApiDelegate { } /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) * @see PetApi#uploadFile */ default Mono> uploadFile(Long petId, 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 382a092d5aa..2d602ba919d 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 @@ -35,6 +35,14 @@ public interface StoreApi { return new StoreApiDelegate() {}; } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -46,6 +54,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -59,6 +73,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -72,6 +95,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApiDelegate.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApiDelegate.java index 672d1dbb8d3..7aad4e8fc2e 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApiDelegate.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApiDelegate.java @@ -28,6 +28,12 @@ public interface StoreApiDelegate { } /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) * @see StoreApi#deleteOrder */ default Mono> deleteOrder(String orderId, @@ -39,6 +45,10 @@ public interface StoreApiDelegate { } /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) * @see StoreApi#getInventory */ default Mono>> getInventory(ServerWebExchange exchange) { @@ -49,6 +59,13 @@ public interface StoreApiDelegate { } /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) * @see StoreApi#getOrderById */ default Mono> getOrderById(Long orderId, @@ -72,6 +89,11 @@ public interface StoreApiDelegate { } /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) * @see StoreApi#placeOrder */ default Mono> placeOrder(Mono body, 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 82d90cf0bad..eb9c2ab0f4b 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 @@ -35,6 +35,13 @@ public interface UserApi { return new UserApiDelegate() {}; } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -45,6 +52,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -55,6 +68,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -65,6 +84,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -76,6 +103,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -89,6 +124,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -101,6 +144,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -111,6 +159,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApiDelegate.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApiDelegate.java index 13994de33a8..6b8e3d5d818 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApiDelegate.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApiDelegate.java @@ -28,6 +28,11 @@ public interface UserApiDelegate { } /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) * @see UserApi#createUser */ default Mono> createUser(Mono body, @@ -39,6 +44,10 @@ public interface UserApiDelegate { } /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) * @see UserApi#createUsersWithArrayInput */ default Mono> createUsersWithArrayInput(Flux body, @@ -50,6 +59,10 @@ public interface UserApiDelegate { } /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) * @see UserApi#createUsersWithListInput */ default Mono> createUsersWithListInput(Flux body, @@ -61,6 +74,12 @@ public interface UserApiDelegate { } /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) * @see UserApi#deleteUser */ default Mono> deleteUser(String username, @@ -72,6 +91,12 @@ public interface UserApiDelegate { } /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) * @see UserApi#getUserByName */ default Mono> getUserByName(String username, @@ -95,6 +120,12 @@ public interface UserApiDelegate { } /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) * @see UserApi#loginUser */ default Mono> loginUser(String username, @@ -107,6 +138,9 @@ public interface UserApiDelegate { } /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) * @see UserApi#logoutUser */ default Mono> logoutUser(ServerWebExchange exchange) { @@ -117,6 +151,13 @@ public interface UserApiDelegate { } /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) * @see UserApi#updateUser */ default Mono> updateUser(String username, 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 985497e4312..688b8e51a9e 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 @@ -35,6 +35,13 @@ public interface AnotherFakeApi { return Optional.empty(); } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) 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 7557c5c2595..b47c8d60cc5 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 @@ -45,6 +45,13 @@ public interface FakeApi { return Optional.empty(); } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -57,6 +64,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -69,6 +83,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -90,6 +111,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -102,6 +130,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -114,6 +149,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -126,6 +168,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -138,6 +187,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -160,6 +216,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -175,6 +252,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -188,6 +280,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -199,6 +303,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -211,6 +321,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -223,6 +340,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -234,6 +362,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 dcc95822624..9a812e59198 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 @@ -35,6 +35,13 @@ public interface FakeClassnameTestApi { return Optional.empty(); } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) 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 aec66745173..096ee51fa00 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 @@ -37,6 +37,13 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -55,6 +62,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -72,6 +87,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -104,6 +127,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -136,6 +168,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -166,6 +207,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -186,6 +236,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -203,6 +261,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 1e431779b38..ed0551b3044 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 @@ -36,6 +36,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -48,6 +56,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -62,6 +76,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -90,6 +113,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 75c42b125a3..fc9ca11b96c 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 @@ -36,6 +36,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -47,6 +54,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -58,6 +71,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -69,6 +88,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -81,6 +108,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -109,6 +144,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -122,6 +165,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -133,6 +181,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), 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 61c31f9dcdf..49b7e21b3d3 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 @@ -38,6 +38,13 @@ public interface AnotherFakeApi { return Optional.empty(); } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { 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 f74f261adc2..58ef4043842 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 @@ -48,6 +48,13 @@ public interface FakeApi { return Optional.empty(); } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @@ -61,6 +68,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @@ -74,6 +88,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @@ -96,6 +117,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @@ -109,6 +137,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @@ -122,6 +157,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @@ -135,6 +177,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @@ -148,6 +197,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @@ -171,6 +227,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") @@ -187,6 +264,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @@ -201,6 +293,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiVirtual @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @@ -213,6 +317,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @@ -226,6 +336,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @@ -239,6 +356,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiVirtual @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @@ -251,6 +379,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { 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 d5796063dbd..1ae7990d8b7 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 @@ -38,6 +38,13 @@ public interface FakeClassnameTestApi { return Optional.empty(); } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") 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 68bed485d13..df9e3c8b681 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 @@ -40,6 +40,13 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiVirtual @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @@ -59,6 +66,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiVirtual @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @@ -77,6 +92,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiVirtual @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @@ -110,6 +133,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiVirtual @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @@ -143,6 +175,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") @@ -174,6 +215,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiVirtual @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @@ -195,6 +245,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiVirtual @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @@ -213,6 +271,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { 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 29b96a99907..61167e27af2 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 @@ -39,6 +39,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", notes = "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors", tags={ "store", }) @ApiResponses(value = { @@ -52,6 +60,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") @@ -67,6 +81,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @@ -96,6 +119,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiVirtual @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { 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 5de8cdfd397..65c78316fcb 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 @@ -39,6 +39,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @@ -51,6 +58,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @@ -63,6 +76,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @@ -75,6 +94,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @@ -88,6 +115,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @@ -117,6 +152,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiVirtual @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @@ -131,6 +174,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiVirtual @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @@ -143,6 +191,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiVirtual @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { 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 985497e4312..688b8e51a9e 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 @@ -35,6 +35,13 @@ public interface AnotherFakeApi { return Optional.empty(); } + /** + * PATCH /another-fake/dummy : To test special tags + * To test special tags and operation ID starting with number + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test special tags", nickname = "call123testSpecialTags", notes = "To test special tags and operation ID starting with number", response = Client.class, tags={ "$another-fake?", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) 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 a96042fead9..5a6cb9942f5 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 @@ -45,6 +45,13 @@ public interface FakeApi { return Optional.empty(); } + /** + * POST /fake/create_xml_item : creates an XmlItem + * this route creates an XmlItem + * + * @param xmlItem XmlItem Body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "creates an XmlItem", nickname = "createXmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -57,6 +64,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/boolean + * Test serialization of outer boolean types + * + * @param body Input boolean as post body (optional) + * @return Output boolean (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterBooleanSerialize", notes = "Test serialization of outer boolean types", response = Boolean.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) @@ -69,6 +83,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/composite + * Test serialization of object with outer number type + * + * @param body Input composite as post body (optional) + * @return Output composite (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterCompositeSerialize", notes = "Test serialization of object with outer number type", response = OuterComposite.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) @@ -90,6 +111,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/number + * Test serialization of outer number types + * + * @param body Input number as post body (optional) + * @return Output number (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterNumberSerialize", notes = "Test serialization of outer number types", response = BigDecimal.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) @@ -102,6 +130,13 @@ public interface FakeApi { } + /** + * POST /fake/outer/string + * Test serialization of outer string types + * + * @param body Input string as post body (optional) + * @return Output string (status code 200) + */ @ApiOperation(value = "", nickname = "fakeOuterStringSerialize", notes = "Test serialization of outer string types", response = String.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) @@ -114,6 +149,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-file-schema + * For this test, the body for this request much reference a schema named `File`. + * + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithFileSchema", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -126,6 +168,13 @@ public interface FakeApi { } + /** + * PUT /fake/body-with-query-params + * + * @param query (required) + * @param body (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testBodyWithQueryParams", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -138,6 +187,13 @@ public interface FakeApi { } + /** + * PATCH /fake : To test \"client\" model + * To test \"client\" model + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test \"client\" model", nickname = "testClientModel", notes = "To test \"client\" model", response = Client.class, tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) @@ -160,6 +216,27 @@ public interface FakeApi { } + /** + * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * + * @param number None (required) + * @param _double None (required) + * @param patternWithoutDelimiter None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param string None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @param paramCallback None (optional) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", nickname = "testEndpointParameters", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 ", authorizations = { @Authorization(value = "http_basic_test") }, tags={ "fake", }) @@ -175,6 +252,21 @@ public interface FakeApi { } + /** + * GET /fake : To test enum parameters + * To test enum parameters + * + * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg) + * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<>()) + * @param enumQueryString Query parameter enum test (string) (optional, default to -efg) + * @param enumQueryInteger Query parameter enum test (double) (optional) + * @param enumQueryDouble Query parameter enum test (double) (optional) + * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $) + * @param enumFormString Form parameter enum test (string) (optional, default to -efg) + * @return Invalid request (status code 400) + * or Not found (status code 404) + */ @ApiOperation(value = "To test enum parameters", nickname = "testEnumParameters", notes = "To test enum parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @@ -188,6 +280,18 @@ public interface FakeApi { } + /** + * DELETE /fake : Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + * + * @param requiredStringGroup Required String in group parameters (required) + * @param requiredBooleanGroup Required Boolean in group parameters (required) + * @param requiredInt64Group Required Integer in group parameters (required) + * @param stringGroup String in group parameters (optional) + * @param booleanGroup Boolean in group parameters (optional) + * @param int64Group Integer in group parameters (optional) + * @return Someting wrong (status code 400) + */ @ApiOperation(value = "Fake endpoint to test group parameters (optional)", nickname = "testGroupParameters", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) @@ -199,6 +303,12 @@ public interface FakeApi { } + /** + * POST /fake/inline-additionalProperties : test inline additionalProperties + * + * @param param request body (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test inline additionalProperties", nickname = "testInlineAdditionalProperties", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -211,6 +321,13 @@ public interface FakeApi { } + /** + * GET /fake/jsonFormData : test json serialization of form data + * + * @param param field1 (required) + * @param param2 field2 (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "test json serialization of form data", nickname = "testJsonFormData", notes = "", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -223,6 +340,17 @@ public interface FakeApi { } + /** + * PUT /fake/test-query-paramters + * To test the collection format in query parameters + * + * @param pipe (required) + * @param ioutil (required) + * @param http (required) + * @param url (required) + * @param context (required) + * @return Success (status code 200) + */ @ApiOperation(value = "", nickname = "testQueryParameterCollectionFormat", notes = "To test the collection format in query parameters", tags={ "fake", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @@ -234,6 +362,14 @@ public interface FakeApi { } + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image (required)", nickname = "uploadFileWithRequiredFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 dcc95822624..9a812e59198 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 @@ -35,6 +35,13 @@ public interface FakeClassnameTestApi { return Optional.empty(); } + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param body client model (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "To test class name in snake case", nickname = "testClassname", notes = "To test class name in snake case", response = Client.class, authorizations = { @Authorization(value = "api_key_query") }, tags={ "fake_classname_tags 123#$%^", }) 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 4844b536961..84d7ef0625e 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 @@ -37,6 +37,13 @@ public interface PetApi { return Optional.empty(); } + /** + * POST /pet : Add a new pet to the store + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid input (status code 405) + */ @ApiOperation(value = "Add a new pet to the store", nickname = "addPet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -55,6 +62,14 @@ public interface PetApi { } + /** + * DELETE /pet/{petId} : Deletes a pet + * + * @param petId Pet id to delete (required) + * @param apiKey (optional) + * @return successful operation (status code 200) + * or Invalid pet value (status code 400) + */ @ApiOperation(value = "Deletes a pet", nickname = "deletePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -72,6 +87,14 @@ public interface PetApi { } + /** + * GET /pet/findByStatus : 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) + * @return successful operation (status code 200) + * or Invalid status value (status code 400) + */ @ApiOperation(value = "Finds Pets by status", nickname = "findPetsByStatus", notes = "Multiple status values can be provided with comma separated strings", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -104,6 +127,15 @@ public interface PetApi { } + /** + * GET /pet/findByTags : 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) + * @return successful operation (status code 200) + * or Invalid tag value (status code 400) + * @deprecated + */ @ApiOperation(value = "Finds Pets by tags", nickname = "findPetsByTags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", response = Pet.class, responseContainer = "List", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -136,6 +168,15 @@ public interface PetApi { } + /** + * GET /pet/{petId} : Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + */ @ApiOperation(value = "Find pet by ID", nickname = "getPetById", notes = "Returns a single pet", response = Pet.class, authorizations = { @Authorization(value = "api_key") }, tags={ "pet", }) @@ -166,6 +207,15 @@ public interface PetApi { } + /** + * PUT /pet : Update an existing pet + * + * @param body Pet object that needs to be added to the store (required) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Pet not found (status code 404) + * or Validation exception (status code 405) + */ @ApiOperation(value = "Update an existing pet", nickname = "updatePet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -186,6 +236,14 @@ public interface PetApi { } + /** + * POST /pet/{petId} : 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 (optional) + * @param status Updated status of the pet (optional) + * @return Invalid input (status code 405) + */ @ApiOperation(value = "Updates a pet in the store with form data", nickname = "updatePetWithForm", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), @@ -203,6 +261,14 @@ public interface PetApi { } + /** + * POST /pet/{petId}/uploadImage : uploads an image + * + * @param petId ID of pet to update (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return successful operation (status code 200) + */ @ApiOperation(value = "uploads an image", nickname = "uploadFile", notes = "", response = ModelApiResponse.class, authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), 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 1e431779b38..ed0551b3044 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 @@ -36,6 +36,14 @@ public interface StoreApi { return Optional.empty(); } + /** + * DELETE /store/order/{order_id} : 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) + * @return Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Delete purchase order by ID", nickname = "deleteOrder", 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"), @@ -48,6 +56,12 @@ public interface StoreApi { } + /** + * GET /store/inventory : Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Returns pet inventories by status", nickname = "getInventory", notes = "Returns a map of status codes to quantities", response = Integer.class, responseContainer = "Map", authorizations = { @Authorization(value = "api_key") }, tags={ "store", }) @@ -62,6 +76,15 @@ public interface StoreApi { } + /** + * GET /store/order/{order_id} : 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) + * @return successful operation (status code 200) + * or Invalid ID supplied (status code 400) + * or Order not found (status code 404) + */ @ApiOperation(value = "Find purchase order by ID", nickname = "getOrderById", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @@ -90,6 +113,13 @@ public interface StoreApi { } + /** + * POST /store/order : Place an order for a pet + * + * @param body order placed for purchasing the pet (required) + * @return successful operation (status code 200) + * or Invalid Order (status code 400) + */ @ApiOperation(value = "Place an order for a pet", nickname = "placeOrder", notes = "", response = Order.class, tags={ "store", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), 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 75c42b125a3..fc9ca11b96c 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 @@ -36,6 +36,13 @@ public interface UserApi { return Optional.empty(); } + /** + * POST /user : Create user + * This can only be done by the logged in user. + * + * @param body Created user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Create user", nickname = "createUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -47,6 +54,12 @@ public interface UserApi { } + /** + * POST /user/createWithArray : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithArrayInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -58,6 +71,12 @@ public interface UserApi { } + /** + * POST /user/createWithList : Creates list of users with given input array + * + * @param body List of user object (required) + * @return successful operation (status code 200) + */ @ApiOperation(value = "Creates list of users with given input array", nickname = "createUsersWithListInput", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -69,6 +88,14 @@ public interface UserApi { } + /** + * DELETE /user/{username} : Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted (required) + * @return Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Delete user", nickname = "deleteUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -81,6 +108,14 @@ public interface UserApi { } + /** + * GET /user/{username} : Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. (required) + * @return successful operation (status code 200) + * or Invalid username supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Get user by user name", nickname = "getUserByName", notes = "", response = User.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @@ -109,6 +144,14 @@ public interface UserApi { } + /** + * GET /user/login : Logs user into the system + * + * @param username The user name for login (required) + * @param password The password for login in clear text (required) + * @return successful operation (status code 200) + * or Invalid username/password supplied (status code 400) + */ @ApiOperation(value = "Logs user into the system", nickname = "loginUser", notes = "", response = String.class, tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @@ -122,6 +165,11 @@ public interface UserApi { } + /** + * GET /user/logout : Logs out current logged in user session + * + * @return successful operation (status code 200) + */ @ApiOperation(value = "Logs out current logged in user session", nickname = "logoutUser", notes = "", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) @@ -133,6 +181,15 @@ public interface UserApi { } + /** + * PUT /user/{username} : Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted (required) + * @param body Updated user object (required) + * @return Invalid user supplied (status code 400) + * or User not found (status code 404) + */ @ApiOperation(value = "Updated user", nickname = "updateUser", notes = "This can only be done by the logged in user.", tags={ "user", }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied"), From 41bb41c87c10eaaaf74c73d26d9ecaed4bbe5950 Mon Sep 17 00:00:00 2001 From: Yuriy Belenko Date: Mon, 9 Dec 2019 08:20:21 +0500 Subject: [PATCH 78/96] [Slim4] Update templates to comply PSR-12 coding style (#4728) * [Slim4] Bump PHP_CodeSniffer version to 3.5.* * [Slim4] Update samples * [Slim4] Update template to meet PSR-12 --- .../php-slim4-server/SlimRouter.mustache | 1 + .../abstract_authenticator.mustache | 1 + .../resources/php-slim4-server/api.mustache | 1 + .../php-slim4-server/api_test.mustache | 1 + .../php-slim4-server/composer.mustache | 2 +- .../resources/php-slim4-server/index.mustache | 1 + .../json_body_parser_middleware.mustache | 1 + .../resources/php-slim4-server/model.mustache | 1 + .../php-slim4-server/model_test.mustache | 1 + .../server/petstore/php-slim4/composer.json | 2 +- .../server/petstore/php-slim4/composer.lock | 2626 +++++++++++++++++ samples/server/petstore/php-slim4/index.php | 1 + .../lib/Api/AbstractAnotherFakeApi.php | 1 + .../php-slim4/lib/Api/AbstractFakeApi.php | 1 + .../Api/AbstractFakeClassnameTags123Api.php | 1 + .../php-slim4/lib/Api/AbstractPetApi.php | 1 + .../php-slim4/lib/Api/AbstractStoreApi.php | 1 + .../php-slim4/lib/Api/AbstractUserApi.php | 1 + .../lib/Auth/AbstractAuthenticator.php | 1 + .../Middleware/JsonBodyParserMiddleware.php | 1 + .../lib/Model/AdditionalPropertiesAnyType.php | 1 + .../lib/Model/AdditionalPropertiesArray.php | 1 + .../lib/Model/AdditionalPropertiesBoolean.php | 1 + .../lib/Model/AdditionalPropertiesClass.php | 1 + .../lib/Model/AdditionalPropertiesInteger.php | 1 + .../lib/Model/AdditionalPropertiesNumber.php | 1 + .../lib/Model/AdditionalPropertiesObject.php | 1 + .../lib/Model/AdditionalPropertiesString.php | 1 + .../petstore/php-slim4/lib/Model/Animal.php | 1 + .../php-slim4/lib/Model/ApiResponse.php | 1 + .../lib/Model/ArrayOfArrayOfNumberOnly.php | 1 + .../php-slim4/lib/Model/ArrayOfNumberOnly.php | 1 + .../php-slim4/lib/Model/ArrayTest.php | 1 + .../php-slim4/lib/Model/Capitalization.php | 1 + .../petstore/php-slim4/lib/Model/Cat.php | 1 + .../petstore/php-slim4/lib/Model/CatAllOf.php | 1 + .../petstore/php-slim4/lib/Model/Category.php | 1 + .../php-slim4/lib/Model/ClassModel.php | 1 + .../petstore/php-slim4/lib/Model/Client.php | 1 + .../petstore/php-slim4/lib/Model/Dog.php | 1 + .../petstore/php-slim4/lib/Model/DogAllOf.php | 1 + .../php-slim4/lib/Model/EnumArrays.php | 1 + .../php-slim4/lib/Model/EnumClass.php | 1 + .../petstore/php-slim4/lib/Model/EnumTest.php | 1 + .../petstore/php-slim4/lib/Model/File.php | 1 + .../lib/Model/FileSchemaTestClass.php | 1 + .../php-slim4/lib/Model/FormatTest.php | 1 + .../php-slim4/lib/Model/HasOnlyReadOnly.php | 1 + .../petstore/php-slim4/lib/Model/MapTest.php | 1 + ...PropertiesAndAdditionalPropertiesClass.php | 1 + .../php-slim4/lib/Model/Model200Response.php | 1 + .../php-slim4/lib/Model/ModelList.php | 1 + .../php-slim4/lib/Model/ModelReturn.php | 1 + .../petstore/php-slim4/lib/Model/Name.php | 1 + .../php-slim4/lib/Model/NumberOnly.php | 1 + .../petstore/php-slim4/lib/Model/Order.php | 1 + .../php-slim4/lib/Model/OuterComposite.php | 1 + .../php-slim4/lib/Model/OuterEnum.php | 1 + .../petstore/php-slim4/lib/Model/Pet.php | 1 + .../php-slim4/lib/Model/ReadOnlyFirst.php | 1 + .../php-slim4/lib/Model/SpecialModelName.php | 1 + .../petstore/php-slim4/lib/Model/Tag.php | 1 + .../php-slim4/lib/Model/TypeHolderDefault.php | 1 + .../php-slim4/lib/Model/TypeHolderExample.php | 1 + .../petstore/php-slim4/lib/Model/User.php | 1 + .../petstore/php-slim4/lib/Model/XmlItem.php | 1 + .../petstore/php-slim4/lib/SlimRouter.php | 1 + .../php-slim4/test/Api/AnotherFakeApiTest.php | 1 + .../php-slim4/test/Api/FakeApiTest.php | 1 + .../test/Api/FakeClassnameTags123ApiTest.php | 1 + .../php-slim4/test/Api/PetApiTest.php | 1 + .../php-slim4/test/Api/StoreApiTest.php | 1 + .../php-slim4/test/Api/UserApiTest.php | 1 + .../Model/AdditionalPropertiesAnyTypeTest.php | 1 + .../Model/AdditionalPropertiesArrayTest.php | 1 + .../Model/AdditionalPropertiesBooleanTest.php | 1 + .../Model/AdditionalPropertiesClassTest.php | 1 + .../Model/AdditionalPropertiesIntegerTest.php | 1 + .../Model/AdditionalPropertiesNumberTest.php | 1 + .../Model/AdditionalPropertiesObjectTest.php | 1 + .../Model/AdditionalPropertiesStringTest.php | 1 + .../php-slim4/test/Model/AnimalTest.php | 1 + .../php-slim4/test/Model/ApiResponseTest.php | 1 + .../Model/ArrayOfArrayOfNumberOnlyTest.php | 1 + .../test/Model/ArrayOfNumberOnlyTest.php | 1 + .../php-slim4/test/Model/ArrayTestTest.php | 1 + .../test/Model/CapitalizationTest.php | 1 + .../php-slim4/test/Model/CatAllOfTest.php | 1 + .../petstore/php-slim4/test/Model/CatTest.php | 1 + .../php-slim4/test/Model/CategoryTest.php | 1 + .../php-slim4/test/Model/ClassModelTest.php | 1 + .../php-slim4/test/Model/ClientTest.php | 1 + .../php-slim4/test/Model/DogAllOfTest.php | 1 + .../petstore/php-slim4/test/Model/DogTest.php | 1 + .../php-slim4/test/Model/EnumArraysTest.php | 1 + .../php-slim4/test/Model/EnumClassTest.php | 1 + .../php-slim4/test/Model/EnumTestTest.php | 1 + .../test/Model/FileSchemaTestClassTest.php | 1 + .../php-slim4/test/Model/FileTest.php | 1 + .../php-slim4/test/Model/FormatTestTest.php | 1 + .../test/Model/HasOnlyReadOnlyTest.php | 1 + .../php-slim4/test/Model/MapTestTest.php | 1 + ...ertiesAndAdditionalPropertiesClassTest.php | 1 + .../test/Model/Model200ResponseTest.php | 1 + .../php-slim4/test/Model/ModelListTest.php | 1 + .../php-slim4/test/Model/ModelReturnTest.php | 1 + .../php-slim4/test/Model/NameTest.php | 1 + .../php-slim4/test/Model/NumberOnlyTest.php | 1 + .../php-slim4/test/Model/OrderTest.php | 1 + .../test/Model/OuterCompositeTest.php | 1 + .../php-slim4/test/Model/OuterEnumTest.php | 1 + .../petstore/php-slim4/test/Model/PetTest.php | 1 + .../test/Model/ReadOnlyFirstTest.php | 1 + .../test/Model/SpecialModelNameTest.php | 1 + .../petstore/php-slim4/test/Model/TagTest.php | 1 + .../test/Model/TypeHolderDefaultTest.php | 1 + .../test/Model/TypeHolderExampleTest.php | 1 + .../php-slim4/test/Model/UserTest.php | 1 + .../php-slim4/test/Model/XmlItemTest.php | 1 + 119 files changed, 2744 insertions(+), 2 deletions(-) create mode 100644 samples/server/petstore/php-slim4/composer.lock diff --git a/modules/openapi-generator/src/main/resources/php-slim4-server/SlimRouter.mustache b/modules/openapi-generator/src/main/resources/php-slim4-server/SlimRouter.mustache index d7ddf7b2384..eda33894db3 100644 --- a/modules/openapi-generator/src/main/resources/php-slim4-server/SlimRouter.mustache +++ b/modules/openapi-generator/src/main/resources/php-slim4-server/SlimRouter.mustache @@ -1,4 +1,5 @@ =7.1" + }, + "require-dev": { + "equip/dispatch": "^2.0", + "phpunit/phpunit": "^6.5", + "slim/psr7": "^0.4.0", + "slim/slim": "^4.0", + "squizlabs/php_codesniffer": "~2.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dyorg\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Dyorg\\": "tests", + "Dyorg\\TokenAuthentication\\Example\\": "example" + } + }, + "scripts": { + "test": [ + "phpunit" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dyorg Almeida", + "email": "dyorg@rabbiit.com", + "homepage": "https://rabbiit.com/", + "role": "Developer" + } + ], + "description": "Slim 4.0+ Token Authentication Middleware", + "homepage": "https://github.com/dyorg/slim-token-authentication", + "keywords": [ + "auth", + "authentication", + "authorization", + "middleware", + "slim", + "token" + ], + "support": { + "source": "https://github.com/ybelenko/slim-token-authentication/tree/slim4" + }, + "time": "2019-08-11T03:59:16+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "35b19404371b31b3a43823c755398c48c9966db4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/35b19404371b31b3a43823c755398c48c9966db4", + "reference": "35b19404371b31b3a43823c755398c48c9966db4", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2018-11-19T16:19:58+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "time": "2018-02-13T20:26:39+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/http-server-handler", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "time": "2018-10-30T16:46:14+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "time": "2018-10-30T17:12:04+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2016-02-11T07:05:27+00:00" + }, + { + "name": "slim/psr7", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Psr7.git", + "reference": "d312896b7cd4aca7d4b86b64acdfcb5cc3da758f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/d312896b7cd4aca7d4b86b64acdfcb5cc3da758f", + "reference": "d312896b7cd4aca7d4b86b64acdfcb5cc3da758f", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1", + "php": "^7.1", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^2" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-json": "*", + "http-interop/http-factory-tests": "^0.5.0", + "php-http/psr7-integration-tests": "dev-master", + "phpstan/phpstan": "^0.10", + "phpunit/phpunit": "^6.0|^7.0", + "squizlabs/php_codesniffer": "^3.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Psr7\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + } + ], + "description": "Strict PSR-7 implementation", + "homepage": "https://www.slimframework.com", + "keywords": [ + "http", + "psr-7", + "psr7" + ], + "time": "2019-08-02T17:06:08+00:00" + }, + { + "name": "slim/slim", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "26020e9a099e69b0b12918115894f7106364dcb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/26020e9a099e69b0b12918115894f7106364dcb7", + "reference": "26020e9a099e69b0b12918115894f7106364dcb7", + "shasum": "" + }, + "require": { + "ext-json": "*", + "nikic/fast-route": "^1.3", + "php": "^7.1", + "psr/container": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0" + }, + "require-dev": { + "ext-simplexml": "*", + "guzzlehttp/psr7": "^1.5", + "http-interop/http-factory-guzzle": "^1.0", + "nyholm/psr7": "^1.1", + "nyholm/psr7-server": "^0.3.0", + "phpspec/prophecy": "^1.8", + "phpstan/phpstan": "^0.11.5", + "phpunit/phpunit": "^7.5", + "slim/http": "^0.7", + "slim/psr7": "^0.3", + "squizlabs/php_codesniffer": "^3.4.2", + "zendframework/zend-diactoros": "^2.1" + }, + "suggest": { + "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", + "ext-xml": "Needed to support XML format in BodyParsingMiddleware", + "slim/psr7": "Slim PSR-7 implementation. See http://www.slimframework.com/docs/v4/start/installation.html for more information." + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\": "Slim", + "Slim\\Tests\\": "tests" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + } + ], + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "homepage": "https://www.slimframework.com", + "keywords": [ + "api", + "framework", + "micro", + "router" + ], + "time": "2019-10-05T21:24:58+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2019-10-21T16:45:58+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2019-08-09T12:45:53+00:00" + }, + { + "name": "overtrue/phplint", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/overtrue/phplint.git", + "reference": "deaee8c3459087ea5d17031206b8722a96dd330b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/deaee8c3459087ea5d17031206b8722a96dd330b", + "reference": "deaee8c3459087ea5d17031206b8722a96dd330b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.5.9", + "symfony/console": "^3.2|^4.0|^5.0", + "symfony/finder": "^3.0|^4.0|^5.0", + "symfony/process": "^3.0|^4.0|^5.0", + "symfony/yaml": "^3.0|^4.0|^5.0" + }, + "require-dev": { + "jakub-onderka/php-console-highlighter": "^0.3.2 || ^0.4" + }, + "bin": [ + "bin/phplint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Overtrue\\PHPLint\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "a php syntax check tool.", + "keywords": [ + "check", + "lint", + "phplint", + "syntax" + ], + "time": "2019-12-07T13:46:15+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2018-08-07T13:53:10+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "^1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2019-09-12T14:27:41+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "shasum": "" + }, + "require": { + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.9.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2019-10-03T11:07:50+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-06-07T04:22:29+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2019-09-17T06:23:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.18", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "fcf6c4bfafaadc07785528b06385cce88935474d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fcf6c4bfafaadc07785528b06385cce88935474d", + "reference": "fcf6c4bfafaadc07785528b06385cce88935474d", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-12-06T05:14:37+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-11-20T08:46:58+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2019-09-14T09:02:43+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.3", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2019-12-04T04:46:47+00:00" + }, + { + "name": "symfony/console", + "version": "v5.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "dae5ef273d700771168ab889d9f8a19b2d206656" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/dae5ef273d700771168ab889d9f8a19b2d206656", + "reference": "dae5ef273d700771168ab889d9f8a19b2d206656", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2019-12-01T10:51:15+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "17874dd8ab9a19422028ad56172fb294287a701b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/17874dd8ab9a19422028ad56172fb294287a701b", + "reference": "17874dd8ab9a19422028ad56172fb294287a701b", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T14:18:11+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T16:25:15+00:00" + }, + { + "name": "symfony/process", + "version": "v5.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "1568a2e8370fbc7416ef64eb5a698e4a05db5ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/1568a2e8370fbc7416ef64eb5a698e4a05db5ff4", + "reference": "1568a2e8370fbc7416ef64eb5a698e4a05db5ff4", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2019-11-28T14:20:16+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "144c5e51266b281231e947b51223ba14acf1a749" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "51b684480184fa767b97e28eaca67664e48dd3e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/51b684480184fa767b97e28eaca67664e48dd3e9", + "reference": "51b684480184fa767b97e28eaca67664e48dd3e9", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2019-11-24T13:36:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "RC", + "stability-flags": { + "dyorg/slim-token-authentication": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.1" + }, + "platform-dev": [] +} diff --git a/samples/server/petstore/php-slim4/index.php b/samples/server/petstore/php-slim4/index.php index 6a2dfac0973..70cb6dede1a 100644 --- a/samples/server/petstore/php-slim4/index.php +++ b/samples/server/petstore/php-slim4/index.php @@ -1,4 +1,5 @@ Date: Sun, 8 Dec 2019 23:02:54 -0500 Subject: [PATCH 79/96] [core] Minor schema validations bug + add pattern property to CodegenResponse (#4724) * [core] Fix potential mismatch of data due to ClientOptInput and DefaultCodegen#openApi * [core] Include escaped pattern on CodegenResponse --- .../openapitools/codegen/ClientOptInput.java | 12 ++- .../openapitools/codegen/CodegenResponse.java | 9 ++- .../openapitools/codegen/DefaultCodegen.java | 4 + .../codegen/utils/ModelUtils.java | 1 - .../codegen/DefaultGeneratorTest.java | 48 ++++++++++++ .../2_0/refAliasedPrimitiveWithValidation.yml | 78 +++++++++++++++++++ 6 files changed, 145 insertions(+), 7 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/2_0/refAliasedPrimitiveWithValidation.yml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/ClientOptInput.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/ClientOptInput.java index 71716ba25c2..2a6f32028ad 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/ClientOptInput.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/ClientOptInput.java @@ -30,12 +30,12 @@ public class ClientOptInput { private List auths; public ClientOptInput openAPI(OpenAPI openAPI) { - this.openAPI = openAPI; + this.setOpenAPI(openAPI); return this; } public ClientOptInput config(CodegenConfig codegenConfig) { - this.config = codegenConfig; + this.setConfig(codegenConfig); return this; } @@ -72,6 +72,10 @@ public class ClientOptInput { @Deprecated public void setConfig(CodegenConfig config) { this.config = config; + // TODO: ClientOptInputs needs to be retired + if (this.openAPI != null) { + this.config.setOpenAPI(this.openAPI); + } } @Deprecated @@ -86,5 +90,9 @@ public class ClientOptInput { @Deprecated public void setOpenAPI(OpenAPI openAPI) { this.openAPI = openAPI; + // TODO: ClientOptInputs needs to be retired + if (this.config != null) { + this.config.setOpenAPI(this.openAPI); + } } } 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 42120f9ea5d..511c0fc7b60 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 @@ -24,7 +24,7 @@ public class CodegenResponse { public String code, message; public boolean hasMore; public List> examples; - public String dataType, baseType, containerType; + public String dataType, baseType, containerType, pattern; public boolean hasHeaders; public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBoolean, isDate, isDateTime, isUuid, isEmail, isModel, isFreeFormObject; @@ -46,7 +46,7 @@ public class CodegenResponse { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (!(o instanceof CodegenResponse)) return false; CodegenResponse that = (CodegenResponse) o; return hasMore == that.hasMore && hasHeaders == that.hasHeaders && @@ -79,6 +79,7 @@ public class CodegenResponse { Objects.equals(dataType, that.dataType) && Objects.equals(baseType, that.baseType) && Objects.equals(containerType, that.containerType) && + Objects.equals(pattern, that.pattern) && Objects.equals(schema, that.schema) && Objects.equals(jsonSchema, that.jsonSchema) && Objects.equals(vendorExtensions, that.vendorExtensions); @@ -86,8 +87,7 @@ public class CodegenResponse { @Override public int hashCode() { - - return Objects.hash(headers, code, message, hasMore, examples, dataType, baseType, containerType, + return Objects.hash(headers, code, message, hasMore, examples, dataType, baseType, containerType, pattern, hasHeaders, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBoolean, isDate, isDateTime, isUuid, isEmail, isModel, isFreeFormObject, isDefault, simpleType, primitiveType, isMapContainer, isListContainer, isBinary, isFile, schema, jsonSchema, vendorExtensions); @@ -102,6 +102,7 @@ public class CodegenResponse { sb.append(", hasMore=").append(hasMore); sb.append(", examples=").append(examples); sb.append(", dataType='").append(dataType).append('\''); + sb.append(", pattern='").append(pattern).append('\''); sb.append(", baseType='").append(baseType).append('\''); sb.append(", containerType='").append(containerType).append('\''); sb.append(", hasHeaders=").append(hasHeaders); 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 7c2c4565b36..1099af7cd49 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 @@ -2887,6 +2887,10 @@ public class DefaultCodegen implements CodegenConfig { responseSchema = ModelUtils.getSchemaFromResponse(response); } r.schema = responseSchema; + if (responseSchema != null && responseSchema.getPattern() != null) { + r.pattern = toRegularExpression(responseSchema.getPattern()); + } + r.message = escapeText(response.getDescription()); // TODO need to revise and test examples in responses // ApiResponse does not support examples at the moment diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 8a17b0f7305..780857f606c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -55,7 +55,6 @@ public class ModelUtils { return Boolean.parseBoolean(GlobalSettings.getProperty(generateAliasAsModelKey, "false")); } - /** * Searches for the model by name in the map of models and returns it * 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 e8097915a0f..46449c74a3a 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 @@ -1,19 +1,25 @@ package org.openapitools.codegen; +import io.swagger.models.Response; 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.Paths; import io.swagger.v3.oas.models.media.IntegerSchema; +import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.StringSchema; +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.utils.ModelUtils; import org.testng.Assert; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -74,6 +80,48 @@ public class DefaultGeneratorTest { Assert.assertEquals(defaultList.get(1).allParams.size(), 1); } + @Test + public void testRefModelValidationProperties(){ + OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/2_0/refAliasedPrimitiveWithValidation.yml"); + ClientOptInput opts = new ClientOptInput(); + opts.setOpenAPI(openAPI); + DefaultCodegen config = new DefaultCodegen(); + config.setStrictSpecBehavior(false); + opts.setConfig(config); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(opts); + + String expectedPattern = "^\\d{3}-\\d{2}-\\d{4}$"; + // NOTE: double-escaped regex for when the value is intended to be dumped in template into a String location. + String escapedPattern = config.toRegularExpression(expectedPattern); + + Schema stringRegex = openAPI.getComponents().getSchemas().get("StringRegex"); + // Sanity check. + Assert.assertEquals(stringRegex.getPattern(), expectedPattern); + + // Validate when we alias/unalias + Schema unaliasedStringRegex = ModelUtils.unaliasSchema(openAPI, stringRegex); + Assert.assertEquals(unaliasedStringRegex.getPattern(), expectedPattern); + + // Validate when converting to property + CodegenProperty stringRegexProperty = config.fromProperty("stringRegex", stringRegex); + Assert.assertEquals(stringRegexProperty.pattern, escapedPattern); + + // Validate when converting to parameter + Operation operation = openAPI.getPaths().get("/fake/StringRegex").getPost(); + RequestBody body = operation.getRequestBody(); + CodegenParameter codegenParameter = config.fromRequestBody(body, new HashSet<>(), "body"); + + Assert.assertEquals(codegenParameter.pattern, escapedPattern); + + // Validate when converting to response + ApiResponse response = operation.getResponses().get("200"); + CodegenResponse codegenResponse = config.fromResponse("200", response); + + Assert.assertEquals(((Schema)codegenResponse.schema).getPattern(), expectedPattern); + Assert.assertEquals(codegenResponse.pattern, escapedPattern); + } @Test public void minimalUpdateTest() throws IOException { diff --git a/modules/openapi-generator/src/test/resources/2_0/refAliasedPrimitiveWithValidation.yml b/modules/openapi-generator/src/test/resources/2_0/refAliasedPrimitiveWithValidation.yml new file mode 100644 index 00000000000..372fd0dc677 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/2_0/refAliasedPrimitiveWithValidation.yml @@ -0,0 +1,78 @@ +swagger: '2.0' +info: + description: "Tests models which trigger aliased primitives but contain JSON Schema Validation Properties" + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +host: petstore.swagger.io:80 +basePath: /v2 +tags: + - name: fake + description: A fake api +schemes: + - http +paths: + /fake/StringEnum: + post: + tags: + - fake + description: Test serialization of StringEnum + operationId: StringEnum + parameters: + - name: body + in: body + description: Input string as post body + schema: + $ref: '#/definitions/StringEnum' + responses: + '200': + description: Returned string + schema: + $ref: '#/definitions/StringEnum' + /fake/StringRegex: + post: + tags: + - fake + description: Test serialization of StringRegex + operationId: StringRegex + parameters: + - name: body + in: body + description: Input string as post body + schema: + $ref: '#/definitions/StringRegex' + responses: + '200': + description: Returned string + schema: + $ref: '#/definitions/StringRegex' + /fake/ObjectModelWithRefs: + post: + tags: + - fake + description: Test serialization of ObjectModelWithRefs + operationId: ObjectModelWithRefs + parameters: + - name: body + in: body + description: Input object as post body + schema: + $ref: '#/definitions/ObjectModelWithRefs' + responses: + '200': + description: Returned object + schema: + $ref: '#/definitions/ObjectModelWithRefs' +definitions: + ObjectModelWithRefs: + type: object + required: + - stringRegex + properties: + stringRegex: + $ref: '#/definitions/StringRegex' + StringRegex: + type: string + pattern: '^\d{3}-\d{2}-\d{4}$' \ No newline at end of file From 68cb98e9f67cf33c2572a3381be7ffd5ea705b43 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 9 Dec 2019 12:27:05 +0800 Subject: [PATCH 80/96] Add a link to blog post about Flutter (#4731) * Add a link to blog post about Flutter * change date format --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d5dbcfd42c..f97cb8be42b 100644 --- a/README.md +++ b/README.md @@ -708,7 +708,8 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com) - 2019-11-20 - [Introduction to OpenAPI](https://noti.st/lornajane/HvDH7U/introduction-to-openapi) by [Lorna Mitchell](https://twitter.com/lornajane) at [GOTO Copenhagen 2019](https://gotocph.com/2019/) - 2019-11-20 - [How to Generate Angular code from OpenAPI specifications](https://dotnetthoughts.net/how-to-generate-angular-code-from-openapi-specifications/) by Anuraj -- 2019/11/23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) +- 2019-11-23 - [Swagger ではない OpenAPI Specification 3.0 による API サーバー開発](https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api) by [Tetsuya Morimoto](https://github.com/t2y) at [JJUG CCC 2019 Fall](https://ccc2019fall.java-users.jp/) +- 2019-11-24 - [Accelerate Flutter development with OpenAPI and Dart code generation](https://medium.com/@irinasouthwell_220/accelerate-flutter-development-with-openapi-and-dart-code-generation-1f16f8329a6a) by [Irina Southwell](https://medium.com/@irinasouthwell_220) - 2019-11-25 - [openapi-generatorで手軽にスタブサーバとクライアントの生成](https://qiita.com/pochopocho13/items/8db662e1934fb2b408b8) by [@pochopocho13](https://twitter.com/pochopocho13) - 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/) - 2020-12-04 - [Angular+NestJS+OpenAPI(Swagger)でマイクロサービスを視野に入れた環境を考える](https://qiita.com/teracy55/items/0327c7a170ec772970c6) by [てらしー](https://twitter.com/teracy55) From d8c469c19de20169cab16c346bf621e2d80a824a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Hornick=C3=BD?= Date: Mon, 9 Dec 2019 07:44:39 +0100 Subject: [PATCH 81/96] [go] Fix multi-value path params in go (#4664) * Fix multi-value path params in go * update oas v3 go petstore sample --- .../codegen/languages/AbstractGoCodegen.java | 1 - .../main/resources/go-experimental/api.mustache | 3 ++- .../src/main/resources/go/api.mustache | 3 ++- .../go-petstore/api_another_fake.go | 1 - .../go-experimental/go-petstore/api_fake.go | 14 -------------- .../go-petstore/api_fake_classname_tags123.go | 1 - .../go-experimental/go-petstore/api_pet.go | 15 +++++---------- .../go-experimental/go-petstore/api_store.go | 7 ++----- .../go-experimental/go-petstore/api_user.go | 12 +++--------- .../go/go-petstore-withXml/api_another_fake.go | 1 - .../petstore/go/go-petstore-withXml/api_fake.go | 14 -------------- .../api_fake_classname_tags123.go | 1 - .../petstore/go/go-petstore-withXml/api_pet.go | 15 +++++---------- .../petstore/go/go-petstore-withXml/api_store.go | 7 ++----- .../petstore/go/go-petstore-withXml/api_user.go | 12 +++--------- .../petstore/go/go-petstore/api_another_fake.go | 1 - .../client/petstore/go/go-petstore/api_fake.go | 14 -------------- .../go/go-petstore/api_fake_classname_tags123.go | 1 - samples/client/petstore/go/go-petstore/api_pet.go | 15 +++++---------- .../client/petstore/go/go-petstore/api_store.go | 7 ++----- .../client/petstore/go/go-petstore/api_user.go | 12 +++--------- .../petstore/go/go-petstore/api_another_fake.go | 1 - .../client/petstore/go/go-petstore/api_default.go | 1 - .../client/petstore/go/go-petstore/api_fake.go | 14 -------------- .../go/go-petstore/api_fake_classname_tags123.go | 1 - .../client/petstore/go/go-petstore/api_pet.go | 15 +++++---------- .../client/petstore/go/go-petstore/api_store.go | 7 ++----- .../client/petstore/go/go-petstore/api_user.go | 12 +++--------- 28 files changed, 44 insertions(+), 164 deletions(-) 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 55a5f229e0f..14d5f51808c 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 @@ -376,7 +376,6 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege // this will only import "fmt" and "strings" if there are items in pathParams for (CodegenOperation operation : operations) { if (operation.pathParams != null && operation.pathParams.size() > 0) { - imports.add(createMapping("import", "fmt")); imports.add(createMapping("import", "strings")); break; //just need to import once } diff --git a/modules/openapi-generator/src/main/resources/go-experimental/api.mustache b/modules/openapi-generator/src/main/resources/go-experimental/api.mustache index 71a46c4450b..067704ec555 100644 --- a/modules/openapi-generator/src/main/resources/go-experimental/api.mustache +++ b/modules/openapi-generator/src/main/resources/go-experimental/api.mustache @@ -78,7 +78,8 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams // create path and map variables localVarPath := a.client.cfg.BasePath + "{{{path}}}"{{#pathParams}} - localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", {{paramName}})), -1){{/pathParams}} + localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", _neturl.QueryEscape(parameterToString({{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) , -1) + {{/pathParams}} localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/modules/openapi-generator/src/main/resources/go/api.mustache b/modules/openapi-generator/src/main/resources/go/api.mustache index d1dcafdfd8b..503e3fcac4c 100644 --- a/modules/openapi-generator/src/main/resources/go/api.mustache +++ b/modules/openapi-generator/src/main/resources/go/api.mustache @@ -78,7 +78,8 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams // create path and map variables localVarPath := a.client.cfg.BasePath + "{{{path}}}"{{#pathParams}} - localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", {{paramName}})), -1){{/pathParams}} + localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", _neturl.QueryEscape(parameterToString({{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) , -1) + {{/pathParams}} localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/client/petstore/go-experimental/go-petstore/api_another_fake.go b/samples/client/petstore/go-experimental/go-petstore/api_another_fake.go index 8128bba97c0..44a84210ab2 100644 --- a/samples/client/petstore/go-experimental/go-petstore/api_another_fake.go +++ b/samples/client/petstore/go-experimental/go-petstore/api_another_fake.go @@ -43,7 +43,6 @@ func (a *AnotherFakeApiService) Call123TestSpecialTags(ctx _context.Context, bod // create path and map variables localVarPath := a.client.cfg.BasePath + "/another-fake/dummy" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go-experimental/go-petstore/api_fake.go b/samples/client/petstore/go-experimental/go-petstore/api_fake.go index db0a5d09f2e..8c0e6c80221 100644 --- a/samples/client/petstore/go-experimental/go-petstore/api_fake.go +++ b/samples/client/petstore/go-experimental/go-petstore/api_fake.go @@ -44,7 +44,6 @@ func (a *FakeApiService) CreateXmlItem(ctx _context.Context, xmlItem XmlItem) (* // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/create_xml_item" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -120,7 +119,6 @@ func (a *FakeApiService) FakeOuterBooleanSerialize(ctx _context.Context, localVa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/boolean" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -217,7 +215,6 @@ func (a *FakeApiService) FakeOuterCompositeSerialize(ctx _context.Context, local // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/composite" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -318,7 +315,6 @@ func (a *FakeApiService) FakeOuterNumberSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/number" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -415,7 +411,6 @@ func (a *FakeApiService) FakeOuterStringSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/string" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -504,7 +499,6 @@ func (a *FakeApiService) TestBodyWithFileSchema(ctx _context.Context, body FileS // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-file-schema" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -572,7 +566,6 @@ func (a *FakeApiService) TestBodyWithQueryParams(ctx _context.Context, query str // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-query-params" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -643,7 +636,6 @@ func (a *FakeApiService) TestClientModel(ctx _context.Context, body Client) (Cli // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -757,7 +749,6 @@ func (a *FakeApiService) TestEndpointParameters(ctx _context.Context, number flo // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -901,7 +892,6 @@ func (a *FakeApiService) TestEnumParameters(ctx _context.Context, localVarOption // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1004,7 +994,6 @@ func (a *FakeApiService) TestGroupParameters(ctx _context.Context, requiredStrin // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1081,7 +1070,6 @@ func (a *FakeApiService) TestInlineAdditionalProperties(ctx _context.Context, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/inline-additionalProperties" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1149,7 +1137,6 @@ func (a *FakeApiService) TestJsonFormData(ctx _context.Context, param string, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/jsonFormData" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1221,7 +1208,6 @@ func (a *FakeApiService) TestQueryParameterCollectionFormat(ctx _context.Context // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/test-query-paramters" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go-experimental/go-petstore/api_fake_classname_tags123.go b/samples/client/petstore/go-experimental/go-petstore/api_fake_classname_tags123.go index b729b05ba40..797ba66be5d 100644 --- a/samples/client/petstore/go-experimental/go-petstore/api_fake_classname_tags123.go +++ b/samples/client/petstore/go-experimental/go-petstore/api_fake_classname_tags123.go @@ -43,7 +43,6 @@ func (a *FakeClassnameTags123ApiService) TestClassname(ctx _context.Context, bod // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake_classname_test" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go-experimental/go-petstore/api_pet.go b/samples/client/petstore/go-experimental/go-petstore/api_pet.go index ba752fcff27..97fcce49e6f 100644 --- a/samples/client/petstore/go-experimental/go-petstore/api_pet.go +++ b/samples/client/petstore/go-experimental/go-petstore/api_pet.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" "github.com/antihax/optional" "os" @@ -44,7 +43,6 @@ func (a *PetApiService) AddPet(ctx _context.Context, body Pet) (*_nethttp.Respon // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -118,7 +116,7 @@ func (a *PetApiService) DeletePet(ctx _context.Context, petId int64, localVarOpt // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -190,7 +188,6 @@ func (a *PetApiService) FindPetsByStatus(ctx _context.Context, status []string) // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByStatus" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -279,7 +276,6 @@ func (a *PetApiService) FindPetsByTags(ctx _context.Context, tags []string) ([]P // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByTags" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -368,7 +364,7 @@ func (a *PetApiService) GetPetById(ctx _context.Context, petId int64) (Pet, *_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -468,7 +464,6 @@ func (a *PetApiService) UpdatePet(ctx _context.Context, body Pet) (*_nethttp.Res // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -544,7 +539,7 @@ func (a *PetApiService) UpdatePetWithForm(ctx _context.Context, petId int64, loc // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -627,7 +622,7 @@ func (a *PetApiService) UploadFile(ctx _context.Context, petId int64, localVarOp // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}/uploadImage" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -739,7 +734,7 @@ func (a *PetApiService) UploadFileWithRequiredFile(ctx _context.Context, petId i // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/{petId}/uploadImageWithRequiredFile" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/client/petstore/go-experimental/go-petstore/api_store.go b/samples/client/petstore/go-experimental/go-petstore/api_store.go index af866af40c7..124da027994 100644 --- a/samples/client/petstore/go-experimental/go-petstore/api_store.go +++ b/samples/client/petstore/go-experimental/go-petstore/api_store.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -43,7 +42,7 @@ func (a *StoreApiService) DeleteOrder(ctx _context.Context, orderId string) (*_n // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -111,7 +110,6 @@ func (a *StoreApiService) GetInventory(ctx _context.Context) (map[string]int32, // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/inventory" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -211,7 +209,7 @@ func (a *StoreApiService) GetOrderById(ctx _context.Context, orderId int64) (Ord // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -305,7 +303,6 @@ func (a *StoreApiService) PlaceOrder(ctx _context.Context, body Order) (Order, * // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go-experimental/go-petstore/api_user.go b/samples/client/petstore/go-experimental/go-petstore/api_user.go index f4946e47528..a1cdb4586d3 100644 --- a/samples/client/petstore/go-experimental/go-petstore/api_user.go +++ b/samples/client/petstore/go-experimental/go-petstore/api_user.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -43,7 +42,6 @@ func (a *UserApiService) CreateUser(ctx _context.Context, body User) (*_nethttp. // create path and map variables localVarPath := a.client.cfg.BasePath + "/user" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -110,7 +108,6 @@ func (a *UserApiService) CreateUsersWithArrayInput(ctx _context.Context, body [] // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithArray" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -177,7 +174,6 @@ func (a *UserApiService) CreateUsersWithListInput(ctx _context.Context, body []U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithList" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -245,7 +241,7 @@ func (a *UserApiService) DeleteUser(ctx _context.Context, username string) (*_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -313,7 +309,7 @@ func (a *UserApiService) GetUserByName(ctx _context.Context, username string) (U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -402,7 +398,6 @@ func (a *UserApiService) LoginUser(ctx _context.Context, username string, passwo // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/login" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -488,7 +483,6 @@ func (a *UserApiService) LogoutUser(ctx _context.Context) (*_nethttp.Response, e // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/logout" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -555,7 +549,7 @@ func (a *UserApiService) UpdateUser(ctx _context.Context, username string, body // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore-withXml/api_another_fake.go b/samples/client/petstore/go/go-petstore-withXml/api_another_fake.go index a18998d7213..dbb36217de0 100644 --- a/samples/client/petstore/go/go-petstore-withXml/api_another_fake.go +++ b/samples/client/petstore/go/go-petstore-withXml/api_another_fake.go @@ -44,7 +44,6 @@ func (a *AnotherFakeApiService) Call123TestSpecialTags(ctx _context.Context, bod // create path and map variables localVarPath := a.client.cfg.BasePath + "/another-fake/dummy" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore-withXml/api_fake.go b/samples/client/petstore/go/go-petstore-withXml/api_fake.go index 5a634ae8061..42920dcf040 100644 --- a/samples/client/petstore/go/go-petstore-withXml/api_fake.go +++ b/samples/client/petstore/go/go-petstore-withXml/api_fake.go @@ -45,7 +45,6 @@ func (a *FakeApiService) CreateXmlItem(ctx _context.Context, xmlItem XmlItem) (* // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/create_xml_item" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -121,7 +120,6 @@ func (a *FakeApiService) FakeOuterBooleanSerialize(ctx _context.Context, localVa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/boolean" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -218,7 +216,6 @@ func (a *FakeApiService) FakeOuterCompositeSerialize(ctx _context.Context, local // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/composite" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -319,7 +316,6 @@ func (a *FakeApiService) FakeOuterNumberSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/number" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -416,7 +412,6 @@ func (a *FakeApiService) FakeOuterStringSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/string" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -505,7 +500,6 @@ func (a *FakeApiService) TestBodyWithFileSchema(ctx _context.Context, body FileS // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-file-schema" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -573,7 +567,6 @@ func (a *FakeApiService) TestBodyWithQueryParams(ctx _context.Context, query str // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-query-params" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -644,7 +637,6 @@ func (a *FakeApiService) TestClientModel(ctx _context.Context, body Client) (Cli // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -758,7 +750,6 @@ func (a *FakeApiService) TestEndpointParameters(ctx _context.Context, number flo // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -902,7 +893,6 @@ func (a *FakeApiService) TestEnumParameters(ctx _context.Context, localVarOption // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1005,7 +995,6 @@ func (a *FakeApiService) TestGroupParameters(ctx _context.Context, requiredStrin // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1082,7 +1071,6 @@ func (a *FakeApiService) TestInlineAdditionalProperties(ctx _context.Context, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/inline-additionalProperties" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1150,7 +1138,6 @@ func (a *FakeApiService) TestJsonFormData(ctx _context.Context, param string, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/jsonFormData" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1222,7 +1209,6 @@ func (a *FakeApiService) TestQueryParameterCollectionFormat(ctx _context.Context // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/test-query-paramters" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore-withXml/api_fake_classname_tags123.go b/samples/client/petstore/go/go-petstore-withXml/api_fake_classname_tags123.go index 590326d2239..b02c47d4c9d 100644 --- a/samples/client/petstore/go/go-petstore-withXml/api_fake_classname_tags123.go +++ b/samples/client/petstore/go/go-petstore-withXml/api_fake_classname_tags123.go @@ -44,7 +44,6 @@ func (a *FakeClassnameTags123ApiService) TestClassname(ctx _context.Context, bod // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake_classname_test" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore-withXml/api_pet.go b/samples/client/petstore/go/go-petstore-withXml/api_pet.go index 07d9ab7765c..20a6c92965b 100644 --- a/samples/client/petstore/go/go-petstore-withXml/api_pet.go +++ b/samples/client/petstore/go/go-petstore-withXml/api_pet.go @@ -15,7 +15,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" "github.com/antihax/optional" "os" @@ -45,7 +44,6 @@ func (a *PetApiService) AddPet(ctx _context.Context, body Pet) (*_nethttp.Respon // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -119,7 +117,7 @@ func (a *PetApiService) DeletePet(ctx _context.Context, petId int64, localVarOpt // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -191,7 +189,6 @@ func (a *PetApiService) FindPetsByStatus(ctx _context.Context, status []string) // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByStatus" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -279,7 +276,6 @@ func (a *PetApiService) FindPetsByTags(ctx _context.Context, tags []string) ([]P // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByTags" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -367,7 +363,7 @@ func (a *PetApiService) GetPetById(ctx _context.Context, petId int64) (Pet, *_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -464,7 +460,6 @@ func (a *PetApiService) UpdatePet(ctx _context.Context, body Pet) (*_nethttp.Res // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -540,7 +535,7 @@ func (a *PetApiService) UpdatePetWithForm(ctx _context.Context, petId int64, loc // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -623,7 +618,7 @@ func (a *PetApiService) UploadFile(ctx _context.Context, petId int64, localVarOp // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}/uploadImage" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -735,7 +730,7 @@ func (a *PetApiService) UploadFileWithRequiredFile(ctx _context.Context, petId i // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/{petId}/uploadImageWithRequiredFile" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore-withXml/api_store.go b/samples/client/petstore/go/go-petstore-withXml/api_store.go index 00ec8cb99c6..47faea8586b 100644 --- a/samples/client/petstore/go/go-petstore-withXml/api_store.go +++ b/samples/client/petstore/go/go-petstore-withXml/api_store.go @@ -15,7 +15,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -44,7 +43,7 @@ func (a *StoreApiService) DeleteOrder(ctx _context.Context, orderId string) (*_n // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -112,7 +111,6 @@ func (a *StoreApiService) GetInventory(ctx _context.Context) (map[string]int32, // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/inventory" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -210,7 +208,7 @@ func (a *StoreApiService) GetOrderById(ctx _context.Context, orderId int64) (Ord // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -303,7 +301,6 @@ func (a *StoreApiService) PlaceOrder(ctx _context.Context, body Order) (Order, * // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore-withXml/api_user.go b/samples/client/petstore/go/go-petstore-withXml/api_user.go index f864cc33256..56bd4d3fc19 100644 --- a/samples/client/petstore/go/go-petstore-withXml/api_user.go +++ b/samples/client/petstore/go/go-petstore-withXml/api_user.go @@ -15,7 +15,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -44,7 +43,6 @@ func (a *UserApiService) CreateUser(ctx _context.Context, body User) (*_nethttp. // create path and map variables localVarPath := a.client.cfg.BasePath + "/user" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -111,7 +109,6 @@ func (a *UserApiService) CreateUsersWithArrayInput(ctx _context.Context, body [] // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithArray" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -178,7 +175,6 @@ func (a *UserApiService) CreateUsersWithListInput(ctx _context.Context, body []U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithList" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -246,7 +242,7 @@ func (a *UserApiService) DeleteUser(ctx _context.Context, username string) (*_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -314,7 +310,7 @@ func (a *UserApiService) GetUserByName(ctx _context.Context, username string) (U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -402,7 +398,6 @@ func (a *UserApiService) LoginUser(ctx _context.Context, username string, passwo // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/login" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -487,7 +482,6 @@ func (a *UserApiService) LogoutUser(ctx _context.Context) (*_nethttp.Response, e // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/logout" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -554,7 +548,7 @@ func (a *UserApiService) UpdateUser(ctx _context.Context, username string, body // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore/api_another_fake.go b/samples/client/petstore/go/go-petstore/api_another_fake.go index 8128bba97c0..44a84210ab2 100644 --- a/samples/client/petstore/go/go-petstore/api_another_fake.go +++ b/samples/client/petstore/go/go-petstore/api_another_fake.go @@ -43,7 +43,6 @@ func (a *AnotherFakeApiService) Call123TestSpecialTags(ctx _context.Context, bod // create path and map variables localVarPath := a.client.cfg.BasePath + "/another-fake/dummy" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore/api_fake.go b/samples/client/petstore/go/go-petstore/api_fake.go index db0a5d09f2e..8c0e6c80221 100644 --- a/samples/client/petstore/go/go-petstore/api_fake.go +++ b/samples/client/petstore/go/go-petstore/api_fake.go @@ -44,7 +44,6 @@ func (a *FakeApiService) CreateXmlItem(ctx _context.Context, xmlItem XmlItem) (* // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/create_xml_item" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -120,7 +119,6 @@ func (a *FakeApiService) FakeOuterBooleanSerialize(ctx _context.Context, localVa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/boolean" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -217,7 +215,6 @@ func (a *FakeApiService) FakeOuterCompositeSerialize(ctx _context.Context, local // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/composite" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -318,7 +315,6 @@ func (a *FakeApiService) FakeOuterNumberSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/number" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -415,7 +411,6 @@ func (a *FakeApiService) FakeOuterStringSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/string" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -504,7 +499,6 @@ func (a *FakeApiService) TestBodyWithFileSchema(ctx _context.Context, body FileS // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-file-schema" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -572,7 +566,6 @@ func (a *FakeApiService) TestBodyWithQueryParams(ctx _context.Context, query str // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-query-params" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -643,7 +636,6 @@ func (a *FakeApiService) TestClientModel(ctx _context.Context, body Client) (Cli // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -757,7 +749,6 @@ func (a *FakeApiService) TestEndpointParameters(ctx _context.Context, number flo // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -901,7 +892,6 @@ func (a *FakeApiService) TestEnumParameters(ctx _context.Context, localVarOption // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1004,7 +994,6 @@ func (a *FakeApiService) TestGroupParameters(ctx _context.Context, requiredStrin // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1081,7 +1070,6 @@ func (a *FakeApiService) TestInlineAdditionalProperties(ctx _context.Context, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/inline-additionalProperties" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1149,7 +1137,6 @@ func (a *FakeApiService) TestJsonFormData(ctx _context.Context, param string, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/jsonFormData" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1221,7 +1208,6 @@ func (a *FakeApiService) TestQueryParameterCollectionFormat(ctx _context.Context // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/test-query-paramters" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore/api_fake_classname_tags123.go b/samples/client/petstore/go/go-petstore/api_fake_classname_tags123.go index 1ff9eccc0fb..7bd5e4b54e3 100644 --- a/samples/client/petstore/go/go-petstore/api_fake_classname_tags123.go +++ b/samples/client/petstore/go/go-petstore/api_fake_classname_tags123.go @@ -43,7 +43,6 @@ func (a *FakeClassnameTags123ApiService) TestClassname(ctx _context.Context, bod // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake_classname_test" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore/api_pet.go b/samples/client/petstore/go/go-petstore/api_pet.go index 2eac738d41a..6aea8875210 100644 --- a/samples/client/petstore/go/go-petstore/api_pet.go +++ b/samples/client/petstore/go/go-petstore/api_pet.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" "github.com/antihax/optional" "os" @@ -44,7 +43,6 @@ func (a *PetApiService) AddPet(ctx _context.Context, body Pet) (*_nethttp.Respon // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -118,7 +116,7 @@ func (a *PetApiService) DeletePet(ctx _context.Context, petId int64, localVarOpt // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -190,7 +188,6 @@ func (a *PetApiService) FindPetsByStatus(ctx _context.Context, status []string) // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByStatus" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -278,7 +275,6 @@ func (a *PetApiService) FindPetsByTags(ctx _context.Context, tags []string) ([]P // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByTags" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -366,7 +362,7 @@ func (a *PetApiService) GetPetById(ctx _context.Context, petId int64) (Pet, *_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -463,7 +459,6 @@ func (a *PetApiService) UpdatePet(ctx _context.Context, body Pet) (*_nethttp.Res // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -539,7 +534,7 @@ func (a *PetApiService) UpdatePetWithForm(ctx _context.Context, petId int64, loc // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -622,7 +617,7 @@ func (a *PetApiService) UploadFile(ctx _context.Context, petId int64, localVarOp // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}/uploadImage" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -734,7 +729,7 @@ func (a *PetApiService) UploadFileWithRequiredFile(ctx _context.Context, petId i // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/{petId}/uploadImageWithRequiredFile" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore/api_store.go b/samples/client/petstore/go/go-petstore/api_store.go index 50486285664..a480157234a 100644 --- a/samples/client/petstore/go/go-petstore/api_store.go +++ b/samples/client/petstore/go/go-petstore/api_store.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -43,7 +42,7 @@ func (a *StoreApiService) DeleteOrder(ctx _context.Context, orderId string) (*_n // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -111,7 +110,6 @@ func (a *StoreApiService) GetInventory(ctx _context.Context) (map[string]int32, // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/inventory" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -209,7 +207,7 @@ func (a *StoreApiService) GetOrderById(ctx _context.Context, orderId int64) (Ord // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -302,7 +300,6 @@ func (a *StoreApiService) PlaceOrder(ctx _context.Context, body Order) (Order, * // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/client/petstore/go/go-petstore/api_user.go b/samples/client/petstore/go/go-petstore/api_user.go index 5eb1a3ced9a..154fc0962da 100644 --- a/samples/client/petstore/go/go-petstore/api_user.go +++ b/samples/client/petstore/go/go-petstore/api_user.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -43,7 +42,6 @@ func (a *UserApiService) CreateUser(ctx _context.Context, body User) (*_nethttp. // create path and map variables localVarPath := a.client.cfg.BasePath + "/user" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -110,7 +108,6 @@ func (a *UserApiService) CreateUsersWithArrayInput(ctx _context.Context, body [] // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithArray" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -177,7 +174,6 @@ func (a *UserApiService) CreateUsersWithListInput(ctx _context.Context, body []U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithList" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -245,7 +241,7 @@ func (a *UserApiService) DeleteUser(ctx _context.Context, username string) (*_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -313,7 +309,7 @@ func (a *UserApiService) GetUserByName(ctx _context.Context, username string) (U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -401,7 +397,6 @@ func (a *UserApiService) LoginUser(ctx _context.Context, username string, passwo // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/login" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -486,7 +481,6 @@ func (a *UserApiService) LogoutUser(ctx _context.Context) (*_nethttp.Response, e // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/logout" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -553,7 +547,7 @@ func (a *UserApiService) UpdateUser(ctx _context.Context, username string, body // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_another_fake.go b/samples/openapi3/client/petstore/go/go-petstore/api_another_fake.go index 4325ac24ee2..9340243f47d 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_another_fake.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_another_fake.go @@ -43,7 +43,6 @@ func (a *AnotherFakeApiService) Call123TestSpecialTags(ctx _context.Context, cli // create path and map variables localVarPath := a.client.cfg.BasePath + "/another-fake/dummy" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_default.go b/samples/openapi3/client/petstore/go/go-petstore/api_default.go index 8bdd8baefc6..0561d5d9fc3 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_default.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_default.go @@ -41,7 +41,6 @@ func (a *DefaultApiService) FooGet(ctx _context.Context) (InlineResponseDefault, // create path and map variables localVarPath := a.client.cfg.BasePath + "/foo" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_fake.go b/samples/openapi3/client/petstore/go/go-petstore/api_fake.go index 90b0090b2bb..b22a4bf9248 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_fake.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_fake.go @@ -44,7 +44,6 @@ func (a *FakeApiService) FakeHealthGet(ctx _context.Context) (HealthCheckResult, // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/health" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -136,7 +135,6 @@ func (a *FakeApiService) FakeOuterBooleanSerialize(ctx _context.Context, localVa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/boolean" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -233,7 +231,6 @@ func (a *FakeApiService) FakeOuterCompositeSerialize(ctx _context.Context, local // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/composite" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -334,7 +331,6 @@ func (a *FakeApiService) FakeOuterNumberSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/number" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -431,7 +427,6 @@ func (a *FakeApiService) FakeOuterStringSerialize(ctx _context.Context, localVar // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/outer/string" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -520,7 +515,6 @@ func (a *FakeApiService) TestBodyWithFileSchema(ctx _context.Context, fileSchema // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-file-schema" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -588,7 +582,6 @@ func (a *FakeApiService) TestBodyWithQueryParams(ctx _context.Context, query str // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/body-with-query-params" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -659,7 +652,6 @@ func (a *FakeApiService) TestClientModel(ctx _context.Context, client Client) (C // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -773,7 +765,6 @@ func (a *FakeApiService) TestEndpointParameters(ctx _context.Context, number flo // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -917,7 +908,6 @@ func (a *FakeApiService) TestEnumParameters(ctx _context.Context, localVarOption // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1028,7 +1018,6 @@ func (a *FakeApiService) TestGroupParameters(ctx _context.Context, requiredStrin // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1105,7 +1094,6 @@ func (a *FakeApiService) TestInlineAdditionalProperties(ctx _context.Context, re // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/inline-additionalProperties" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1173,7 +1161,6 @@ func (a *FakeApiService) TestJsonFormData(ctx _context.Context, param string, pa // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/jsonFormData" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -1245,7 +1232,6 @@ func (a *FakeApiService) TestQueryParameterCollectionFormat(ctx _context.Context // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/test-query-paramters" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_fake_classname_tags123.go b/samples/openapi3/client/petstore/go/go-petstore/api_fake_classname_tags123.go index e8fa7e3fd9a..c27046f4ab4 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_fake_classname_tags123.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_fake_classname_tags123.go @@ -43,7 +43,6 @@ func (a *FakeClassnameTags123ApiService) TestClassname(ctx _context.Context, cli // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake_classname_test" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_pet.go b/samples/openapi3/client/petstore/go/go-petstore/api_pet.go index 9ee468bc78c..948315ce439 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_pet.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_pet.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" "github.com/antihax/optional" "os" @@ -44,7 +43,6 @@ func (a *PetApiService) AddPet(ctx _context.Context, pet Pet) (*_nethttp.Respons // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -118,7 +116,7 @@ func (a *PetApiService) DeletePet(ctx _context.Context, petId int64, localVarOpt // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -190,7 +188,6 @@ func (a *PetApiService) FindPetsByStatus(ctx _context.Context, status []string) // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByStatus" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -278,7 +275,6 @@ func (a *PetApiService) FindPetsByTags(ctx _context.Context, tags []string) ([]P // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/findByTags" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -366,7 +362,7 @@ func (a *PetApiService) GetPetById(ctx _context.Context, petId int64) (Pet, *_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -463,7 +459,6 @@ func (a *PetApiService) UpdatePet(ctx _context.Context, pet Pet) (*_nethttp.Resp // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -539,7 +534,7 @@ func (a *PetApiService) UpdatePetWithForm(ctx _context.Context, petId int64, loc // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -622,7 +617,7 @@ func (a *PetApiService) UploadFile(ctx _context.Context, petId int64, localVarOp // create path and map variables localVarPath := a.client.cfg.BasePath + "/pet/{petId}/uploadImage" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -734,7 +729,7 @@ func (a *PetApiService) UploadFileWithRequiredFile(ctx _context.Context, petId i // create path and map variables localVarPath := a.client.cfg.BasePath + "/fake/{petId}/uploadImageWithRequiredFile" - localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", petId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"petId"+"}", _neturl.QueryEscape(parameterToString(petId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_store.go b/samples/openapi3/client/petstore/go/go-petstore/api_store.go index b1080ac6d3f..2ff59f98fed 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_store.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_store.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -43,7 +42,7 @@ func (a *StoreApiService) DeleteOrder(ctx _context.Context, orderId string) (*_n // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -111,7 +110,6 @@ func (a *StoreApiService) GetInventory(ctx _context.Context) (map[string]int32, // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/inventory" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -209,7 +207,7 @@ func (a *StoreApiService) GetOrderById(ctx _context.Context, orderId int64) (Ord // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order/{order_id}" - localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", orderId)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", _neturl.QueryEscape(parameterToString(orderId, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -302,7 +300,6 @@ func (a *StoreApiService) PlaceOrder(ctx _context.Context, order Order) (Order, // create path and map variables localVarPath := a.client.cfg.BasePath + "/store/order" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_user.go b/samples/openapi3/client/petstore/go/go-petstore/api_user.go index 270cc584446..83f8f02f52b 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_user.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_user.go @@ -14,7 +14,6 @@ import ( _ioutil "io/ioutil" _nethttp "net/http" _neturl "net/url" - "fmt" "strings" ) @@ -43,7 +42,6 @@ func (a *UserApiService) CreateUser(ctx _context.Context, user User) (*_nethttp. // create path and map variables localVarPath := a.client.cfg.BasePath + "/user" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -110,7 +108,6 @@ func (a *UserApiService) CreateUsersWithArrayInput(ctx _context.Context, user [] // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithArray" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -177,7 +174,6 @@ func (a *UserApiService) CreateUsersWithListInput(ctx _context.Context, user []U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/createWithList" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -245,7 +241,7 @@ func (a *UserApiService) DeleteUser(ctx _context.Context, username string) (*_ne // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -313,7 +309,7 @@ func (a *UserApiService) GetUserByName(ctx _context.Context, username string) (U // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} @@ -401,7 +397,6 @@ func (a *UserApiService) LoginUser(ctx _context.Context, username string, passwo // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/login" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -486,7 +481,6 @@ func (a *UserApiService) LogoutUser(ctx _context.Context) (*_nethttp.Response, e // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/logout" - localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} localVarFormParams := _neturl.Values{} @@ -553,7 +547,7 @@ func (a *UserApiService) UpdateUser(ctx _context.Context, username string, user // create path and map variables localVarPath := a.client.cfg.BasePath + "/user/{username}" - localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(fmt.Sprintf("%v", username)), -1) + localVarPath = strings.Replace(localVarPath, "{"+"username"+"}", _neturl.QueryEscape(parameterToString(username, "")) , -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := _neturl.Values{} From 5116163bfb37bf44b3ccbfdfa0ab82b74ccd9dd0 Mon Sep 17 00:00:00 2001 From: Daniel Ruf <827205+DanielRuf@users.noreply.github.com> Date: Mon, 9 Dec 2019 08:15:42 +0100 Subject: [PATCH 82/96] Use correct relative paths (#4677) --- .../client/petstore/javascript-flowtyped/lib/api.js | 10 +++++----- .../petstore/javascript-flowtyped/lib/configuration.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/samples/client/petstore/javascript-flowtyped/lib/api.js b/samples/client/petstore/javascript-flowtyped/lib/api.js index e0ed087f022..355d4f70e0e 100644 --- a/samples/client/petstore/javascript-flowtyped/lib/api.js +++ b/samples/client/petstore/javascript-flowtyped/lib/api.js @@ -1,8 +1,8 @@ -import _classCallCheck from "/Users/akihito1/src/github.com/ackintosh/openapi-generator-1/samples/client/petstore/javascript-flowtyped/node_modules/@babel/runtime/helpers/esm/classCallCheck"; -import _possibleConstructorReturn from "/Users/akihito1/src/github.com/ackintosh/openapi-generator-1/samples/client/petstore/javascript-flowtyped/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn"; -import _getPrototypeOf from "/Users/akihito1/src/github.com/ackintosh/openapi-generator-1/samples/client/petstore/javascript-flowtyped/node_modules/@babel/runtime/helpers/esm/getPrototypeOf"; -import _inherits from "/Users/akihito1/src/github.com/ackintosh/openapi-generator-1/samples/client/petstore/javascript-flowtyped/node_modules/@babel/runtime/helpers/esm/inherits"; -import _wrapNativeSuper from "/Users/akihito1/src/github.com/ackintosh/openapi-generator-1/samples/client/petstore/javascript-flowtyped/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper"; +import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; +import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; +import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; +import _inherits from "@babel/runtime/helpers/esm/inherits"; +import _wrapNativeSuper from "@babel/runtime/helpers/esm/wrapNativeSuper"; /* eslint-disable no-use-before-define */ diff --git a/samples/client/petstore/javascript-flowtyped/lib/configuration.js b/samples/client/petstore/javascript-flowtyped/lib/configuration.js index f1670e52540..7fc6d50bce9 100644 --- a/samples/client/petstore/javascript-flowtyped/lib/configuration.js +++ b/samples/client/petstore/javascript-flowtyped/lib/configuration.js @@ -1,4 +1,4 @@ -import _classCallCheck from "/Users/akihito1/src/github.com/ackintosh/openapi-generator-1/samples/client/petstore/javascript-flowtyped/node_modules/@babel/runtime/helpers/esm/classCallCheck"; +import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; /** * OpenAPI Petstore From 42f685f59c2f3803865c0c0c1680a5f57a774327 Mon Sep 17 00:00:00 2001 From: rbrincke Date: Mon, 9 Dec 2019 13:59:05 +0100 Subject: [PATCH 83/96] Fix multi-part binary array form parameters for Spring Boot and Spring Cloud templates (#4616) * Fix multi-part binary array strings Multi-part binary array strings as outlined in #3139 resulted in `MultipartFile` rather than `List`. This PR attempts to resolve this by adjusting the templates. Two tests have been added: one for `spring-boot` and one for `spring-cloud`. Resolve #3139 * Fix multipart file name and description * Handle array of MultipartFile for delegate * Update samples due to file description being picked up * Upload result of bin/spring-stubs --- .../resources/JavaSpring/apiDelegate.mustache | 2 +- .../resources/JavaSpring/formParams.mustache | 2 +- .../spring-cloud/formParams.mustache | 2 +- .../java/spring/SpringCodegenTest.java | 73 ++++++++++++++++++- .../3_0/form-multipart-binary-array.yaml | 45 ++++++++++++ .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../openapitools/api/FakeApiController.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../openapitools/api/PetApiController.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../openapitools/api/FakeApiController.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../openapitools/api/PetApiController.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../openapitools/api/FakeApiController.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../openapitools/api/PetApiController.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../openapitools/virtualan/api/FakeApi.java | 4 +- .../openapitools/virtualan/api/PetApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 2 +- 36 files changed, 163 insertions(+), 51 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/form-multipart-binary-array.yaml diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache index 478d0ea3cf3..e93ba0a69d3 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache @@ -67,7 +67,7 @@ public interface {{classname}}Delegate { {{/externalDocs}} * @see {{classname}}#{{operationId}} */ - {{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isListContainer}}Mono{{/isListContainer}}{{#isListContainer}}Flux{{/isListContainer}}<{{{baseType}}}>{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}MultipartFile{{/isFile}} {{paramName}}{{#hasMore}}, + {{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isListContainer}}Mono{{/isListContainer}}{{#isListContainer}}Flux{{/isListContainer}}<{{{baseType}}}>{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#isListContainer}}List<{{/isListContainer}}MultipartFile{{#isListContainer}}>{{/isListContainer}}{{/isFile}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}ServerWebExchange exchange{{/reactive}}){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} { {{>methodBody}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/formParams.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/formParams.mustache index f007d68c3b4..14d94bfb312 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/formParams.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/formParams.mustache @@ -1 +1 @@ -{{#isFormParam}}{{^isFile}}@ApiParam(value = "{{{description}}}"{{#required}}, required=true{{/required}}{{#allowableValues}}, allowableValues="{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{#-last}}{{/-last}}{{/values}}"{{/allowableValues}}{{^isContainer}}{{#defaultValue}}, defaultValue={{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}) @RequestParam(value="{{baseName}}"{{#required}}, required=true{{/required}}{{^required}}, required=false{{/required}}) {{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}@ApiParam(value = "file detail") {{#useBeanValidation}}@Valid{{/useBeanValidation}} @RequestPart("file") MultipartFile {{baseName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}{{^isFile}}@ApiParam(value = "{{{description}}}"{{#required}}, required=true{{/required}}{{#allowableValues}}, allowableValues="{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{#-last}}{{/-last}}{{/values}}"{{/allowableValues}}{{^isContainer}}{{#defaultValue}}, defaultValue={{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}) @RequestParam(value="{{baseName}}"{{#required}}, required=true{{/required}}{{^required}}, required=false{{/required}}) {{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}@ApiParam(value = "{{{description}}}") {{#useBeanValidation}}@Valid{{/useBeanValidation}} @RequestPart("{{baseName}}") {{#isListContainer}}List<{{/isListContainer}}MultipartFile{{#isListContainer}}>{{/isListContainer}} {{baseName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/formParams.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/formParams.mustache index 26a65bd2de5..13a6e56e14b 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/formParams.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/formParams.mustache @@ -1 +1 @@ -{{#isFormParam}}{{^isFile}}@ApiParam(value = "{{{description}}}"{{#required}}, required=true{{/required}} {{#allowableValues}}, allowableValues="{{{allowableValues}}}"{{/allowableValues}}{{^isContainer}}{{#defaultValue}}, defaultValue={{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}) @RequestParam(value="{{baseName}}"{{#required}}, required=true{{/required}}{{^required}}, required=false{{/required}}) {{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}@ApiParam(value = "file detail") @RequestParam("{{baseName}}") MultipartFile {{paramName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}{{^isFile}}@ApiParam(value = "{{{description}}}"{{#required}}, required=true{{/required}} {{#allowableValues}}, allowableValues="{{{allowableValues}}}"{{/allowableValues}}{{^isContainer}}{{#defaultValue}}, defaultValue={{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}) @RequestParam(value="{{baseName}}"{{#required}}, required=true{{/required}}{{^required}}, required=false{{/required}}) {{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}@ApiParam(value = "{{{description}}}") @RequestParam("{{baseName}}") {{#isListContainer}}List<{{/isListContainer}}MultipartFile{{#isListContainer}}>{{/isListContainer}} {{paramName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 378f7e5d8e0..1febdfe86ee 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -34,6 +34,8 @@ import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.util.Map; +import java.util.stream.Collectors; import static java.util.stream.Collectors.groupingBy; import static org.openapitools.codegen.languages.SpringCodegen.RESPONSE_WRAPPER; @@ -41,9 +43,6 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; -import static org.openapitools.codegen.languages.SpringCodegen.RESPONSE_WRAPPER; -import static org.testng.Assert.assertTrue; - public class SpringCodegenTest { @Test @@ -248,6 +247,74 @@ public class SpringCodegenTest { "@RequestParam(value = \"start\""); } + // Helper function, intended to reduce boilerplate + private Map generateFiles(SpringCodegen codegen, String filePath) throws IOException { + final File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + final String outputPath = output.getAbsolutePath().replace('\\', '/'); + + codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true"); + + final ClientOptInput input = new ClientOptInput(); + final OpenAPI openAPI = new OpenAPIParser().readLocation(filePath, null, new ParseOptions()).getOpenAPI(); + input.openAPI(openAPI); + input.config(codegen); + + final MockDefaultGenerator generator = new MockDefaultGenerator(); + generator.opts(input).generate(); + + return generator.getFiles().entrySet().stream().collect(Collectors.toMap(e -> e.getKey().replace(outputPath, ""), Map.Entry::getValue)); + } + + @Test + public void testMultipartBoot() throws IOException { + final SpringCodegen codegen = new SpringCodegen(); + codegen.setLibrary("spring-boot"); + codegen.setDelegatePattern(true); + + final Map files = generateFiles(codegen, "src/test/resources/3_0/form-multipart-binary-array.yaml"); + + // Check that the delegate handles the array + final String multipartArrayApiDelegate = files.get("/src/main/java/org/openapitools/api/MultipartArrayApiDelegate.java"); + Assert.assertTrue(multipartArrayApiDelegate.contains("List files")); + + // Check that the api handles the array + final String multipartArrayApi = files.get("/src/main/java/org/openapitools/api/MultipartArrayApi.java"); + Assert.assertTrue(multipartArrayApi.contains("List files")); + Assert.assertTrue(multipartArrayApi.contains("@ApiParam(value = \"Many files\")")); + Assert.assertTrue(multipartArrayApi.contains("@RequestPart(\"files\")")); + + // Check that the delegate handles the single file + final String multipartSingleApiDelegate = files.get("/src/main/java/org/openapitools/api/MultipartSingleApiDelegate.java"); + Assert.assertTrue(multipartSingleApiDelegate.contains("MultipartFile file")); + + // Check that the api handles the single file + final String multipartSingleApi = files.get("/src/main/java/org/openapitools/api/MultipartSingleApi.java"); + Assert.assertTrue(multipartSingleApi.contains("MultipartFile file")); + Assert.assertTrue(multipartSingleApi.contains("@ApiParam(value = \"One file\")")); + Assert.assertTrue(multipartSingleApi.contains("@RequestPart(\"file\")")); + } + + @Test + public void testMultipartCloud() throws IOException { + final SpringCodegen codegen = new SpringCodegen(); + codegen.setLibrary("spring-cloud"); + codegen.setDelegatePattern(true); + + final Map files = generateFiles(codegen, "src/test/resources/3_0/form-multipart-binary-array.yaml"); + + // Check that the delegate handles the array and the file + final String multipartApiDelegate = files.get("/src/main/java/org/openapitools/api/MultipartApiDelegate.java"); + Assert.assertTrue(multipartApiDelegate.contains("List files")); + Assert.assertTrue(multipartApiDelegate.contains("MultipartFile file")); + + // Check that the api handles the array and the file + final String multipartApi = files.get("/src/main/java/org/openapitools/api/MultipartApi.java"); + Assert.assertTrue(multipartApi.contains("List files")); + Assert.assertTrue(multipartApi.contains("MultipartFile file")); + } + @Test public void doGenerateRequestParamForSimpleParam() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); diff --git a/modules/openapi-generator/src/test/resources/3_0/form-multipart-binary-array.yaml b/modules/openapi-generator/src/test/resources/3_0/form-multipart-binary-array.yaml new file mode 100644 index 00000000000..42ea59d75b1 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/form-multipart-binary-array.yaml @@ -0,0 +1,45 @@ +openapi: '3.0.1' +info: + version: 1.0.0 + title: MultipartFile test +paths: + /multipart-array: + post: + tags: + - multipart + description: MultipartFile array test + operationId: multipartArray + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + files: + type: array + description: "Many files" + items: + type: string + format: binary + responses: + '204': + description: Successful operation + /multipart-single: + post: + tags: + - multipart + description: Single MultipartFile test + operationId: multipartSingle + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + description: "One file" + type: string + format: binary + responses: + '204': + description: Successful operation \ 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 91a6c5f585d..86c5c7d6727 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 @@ -209,6 +209,6 @@ public interface PetApi { produces = "application/json", consumes = "multipart/form-data", method = RequestMethod.POST) - CompletableFuture> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server" ) @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @RequestParam("file") MultipartFile file); + CompletableFuture> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server" ) @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @RequestParam("file") MultipartFile 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 3ff235fc412..07dd517d7a3 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 @@ -208,6 +208,6 @@ public interface PetApi { produces = "application/json", consumes = "multipart/form-data", method = RequestMethod.POST) - com.netflix.hystrix.HystrixCommand> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server" ) @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @RequestParam("file") MultipartFile file); + com.netflix.hystrix.HystrixCommand> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server" ) @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @RequestParam("file") MultipartFile 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 d79052c73d0..391ae47d202 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 @@ -275,7 +275,7 @@ public interface PetApi { produces = "application/json", consumes = "multipart/form-data", method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 afd60347b77..d3af74a0a22 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 @@ -251,7 +251,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default CompletableFuture> testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default CompletableFuture> testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return CompletableFuture.completedFuture(new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED)); } @@ -387,7 +387,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default CompletableFuture> uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default CompletableFuture> uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { return CompletableFuture.supplyAsync(()-> { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { 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 8714900c1e0..f6d846ce28f 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 @@ -288,7 +288,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default CompletableFuture> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default CompletableFuture> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { return CompletableFuture.supplyAsync(()-> { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { 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 1d8b2f18050..8f25bcb0ede 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 @@ -246,7 +246,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) LocalDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) LocalDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -382,7 +382,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 84d7ef0625e..eef3a5ada1c 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 @@ -281,7 +281,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 b31b167dad4..b8788d88f31 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 @@ -196,7 +196,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); + ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); /** @@ -314,6 +314,6 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata); + ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata); } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java index df558c63df8..aac6a3e3b1d 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApiController.java @@ -181,7 +181,7 @@ public class FakeApiController implements FakeApi { * or User not found (status code 404) * @see FakeApi#testEndpointParameters */ - public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -276,7 +276,7 @@ public class FakeApiController implements FakeApi { * @return successful operation (status code 200) * @see FakeApi#uploadFileWithRequiredFile */ - public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { String exampleString = "{ \"code\" : 0, \"type\" : \"type\", \"message\" : \"message\" }"; 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 05712720fd1..99dd63b2b7e 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 @@ -210,6 +210,6 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file); + ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file); } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java index 84e03b71cdb..ee5e3d0e13b 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApiController.java @@ -178,7 +178,7 @@ public class PetApiController implements PetApi { * @return successful operation (status code 200) * @see PetApi#uploadFile */ - public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { String exampleString = "{ \"code\" : 0, \"type\" : \"type\", \"message\" : \"message\" }"; 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 b31b167dad4..b8788d88f31 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 @@ -196,7 +196,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); + ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); /** @@ -314,6 +314,6 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata); + ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata); } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java index 2ec3bb751c1..828761ab32e 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApiController.java @@ -181,7 +181,7 @@ public class FakeApiController implements FakeApi { * or User not found (status code 404) * @see FakeApi#testEndpointParameters */ - public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -276,7 +276,7 @@ public class FakeApiController implements FakeApi { * @return successful operation (status code 200) * @see FakeApi#uploadFileWithRequiredFile */ - public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { String exampleString = "{ \"code\" : 0, \"type\" : \"type\", \"message\" : \"message\" }"; 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 05712720fd1..99dd63b2b7e 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 @@ -210,6 +210,6 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file); + ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file); } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java index 96fe9a628ea..efb678fc125 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApiController.java @@ -178,7 +178,7 @@ public class PetApiController implements PetApi { * @return successful operation (status code 200) * @see PetApi#uploadFile */ - public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { String exampleString = "{ \"code\" : 0, \"type\" : \"type\", \"message\" : \"message\" }"; 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 243a629eede..8042e0c8cbc 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 @@ -216,7 +216,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return getDelegate().testEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback); } @@ -346,7 +346,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { return getDelegate().uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); } 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 94ee31460e6..7a300d9f296 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 @@ -228,7 +228,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { return getDelegate().uploadFile(petId, additionalMetadata, file); } 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 b31b167dad4..b8788d88f31 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 @@ -196,7 +196,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); + ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback); /** @@ -314,6 +314,6 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata); + ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java index fa3f8fd3e7e..705a9150f76 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApiController.java @@ -157,7 +157,7 @@ public class FakeApiController implements FakeApi { * or User not found (status code 404) * @see FakeApi#testEndpointParameters */ - public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + public ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return delegate.testEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback); } @@ -246,7 +246,7 @@ public class FakeApiController implements FakeApi { * @return successful operation (status code 200) * @see FakeApi#uploadFileWithRequiredFile */ - public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + public ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { return delegate.uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); } 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 05712720fd1..99dd63b2b7e 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 @@ -210,6 +210,6 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file); + ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file); } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java index 72e4b742130..02670b32e6a 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApiController.java @@ -133,7 +133,7 @@ public class PetApiController implements PetApi { * @return successful operation (status code 200) * @see PetApi#uploadFile */ - public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + public ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { return delegate.uploadFile(petId, additionalMetadata, file); } 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 951d21cc858..4d5a2b3f452 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 @@ -264,7 +264,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -412,7 +412,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 c2993ea46c0..b7368081b26 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 @@ -297,7 +297,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 91d50e634f6..849ea14cf07 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 @@ -219,7 +219,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default Mono> testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback, ServerWebExchange exchange) { + default Mono> testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback, ServerWebExchange exchange) { return getDelegate().testEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback, exchange); } @@ -349,7 +349,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default Mono> uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata, ServerWebExchange exchange) { + default Mono> uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata, ServerWebExchange exchange) { return getDelegate().uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata, exchange); } 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 619bdce7ee1..32f44c1d17c 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 @@ -231,7 +231,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default Mono> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file, ServerWebExchange exchange) { + default Mono> uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file, ServerWebExchange exchange) { return getDelegate().uploadFile(petId, additionalMetadata, file, exchange); } 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 b47c8d60cc5..c461ca3c95e 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 @@ -246,7 +246,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -382,7 +382,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 096ee51fa00..287f769c7d4 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 @@ -281,7 +281,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 58ef4043842..72de95191f9 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 @@ -258,7 +258,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -400,7 +400,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 df9e3c8b681..064b8f4ea64 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 @@ -292,7 +292,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 5a6cb9942f5..f1eb1304433 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 @@ -246,7 +246,7 @@ public interface FakeApi { @RequestMapping(value = "/fake", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST) - default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { + default ResponseEntity testEndpointParameters(@ApiParam(value = "None", required=true) @RequestParam(value="number", required=true) BigDecimal number,@ApiParam(value = "None", required=true) @RequestParam(value="double", required=true) Double _double,@ApiParam(value = "None", required=true) @RequestParam(value="pattern_without_delimiter", required=true) String patternWithoutDelimiter,@ApiParam(value = "None", required=true) @RequestParam(value="byte", required=true) byte[] _byte,@ApiParam(value = "None") @RequestParam(value="integer", required=false) Integer integer,@ApiParam(value = "None") @RequestParam(value="int32", required=false) Integer int32,@ApiParam(value = "None") @RequestParam(value="int64", required=false) Long int64,@ApiParam(value = "None") @RequestParam(value="float", required=false) Float _float,@ApiParam(value = "None") @RequestParam(value="string", required=false) String string,@ApiParam(value = "None") @Valid @RequestPart("binary") MultipartFile binary,@ApiParam(value = "None") @RequestParam(value="date", required=false) LocalDate date,@ApiParam(value = "None") @RequestParam(value="dateTime", required=false) OffsetDateTime dateTime,@ApiParam(value = "None") @RequestParam(value="password", required=false) String password,@ApiParam(value = "None") @RequestParam(value="callback", required=false) String paramCallback) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -382,7 +382,7 @@ public interface FakeApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { + default ResponseEntity uploadFileWithRequiredFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "file to upload") @Valid @RequestPart("requiredFile") MultipartFile requiredFile,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { 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 84d7ef0625e..eef3a5ada1c 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 @@ -281,7 +281,7 @@ public interface PetApi { produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) - default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file) { + default ResponseEntity uploadFile(@ApiParam(value = "ID of pet to update",required=true) @PathVariable("petId") Long petId,@ApiParam(value = "Additional data to pass to server") @RequestParam(value="additionalMetadata", required=false) String additionalMetadata,@ApiParam(value = "file to upload") @Valid @RequestPart("file") MultipartFile file) { getRequest().ifPresent(request -> { for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { From 307f37c7f9b241b5ca47ec79a96b305ec601faeb Mon Sep 17 00:00:00 2001 From: Justin Black Date: Mon, 9 Dec 2019 19:29:14 -0800 Subject: [PATCH 84/96] Updates python and python-flask travis CI testing to use python 3.6, 3.7, and 3.8 (#4743) --- .../src/main/resources/python-flask/travis.mustache | 5 +++-- .../src/main/resources/python/travis.mustache | 5 +++-- samples/client/petstore/python-asyncio/.travis.yml | 5 +++-- samples/client/petstore/python-experimental/.travis.yml | 5 +++-- samples/client/petstore/python-tornado/.travis.yml | 5 +++-- samples/client/petstore/python/.travis.yml | 5 +++-- samples/openapi3/client/petstore/python/.travis.yml | 5 +++-- .../petstore/python-flask-python2/.openapi-generator/VERSION | 2 +- .../server/petstore/python-flask-python2/.travis.yml | 5 +++-- .../server/petstore/python-flask/.openapi-generator/VERSION | 2 +- samples/openapi3/server/petstore/python-flask/.travis.yml | 5 +++-- .../petstore/python-aiohttp/.openapi-generator/VERSION | 2 +- .../petstore/python-aiohttp/tests/test_user_controller.py | 4 ++-- .../petstore/python-flask-python2/.openapi-generator/VERSION | 2 +- samples/server/petstore/python-flask-python2/.travis.yml | 5 +++-- .../server/petstore/python-flask/.openapi-generator/VERSION | 2 +- samples/server/petstore/python-flask/.travis.yml | 5 +++-- 17 files changed, 40 insertions(+), 29 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python-flask/travis.mustache b/modules/openapi-generator/src/main/resources/python-flask/travis.mustache index 167826e42b4..e03b816ecc0 100644 --- a/modules/openapi-generator/src/main/resources/python-flask/travis.mustache +++ b/modules/openapi-generator/src/main/resources/python-flask/travis.mustache @@ -8,8 +8,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/modules/openapi-generator/src/main/resources/python/travis.mustache b/modules/openapi-generator/src/main/resources/python/travis.mustache index 86211e2d4a2..388de83128f 100644 --- a/modules/openapi-generator/src/main/resources/python/travis.mustache +++ b/modules/openapi-generator/src/main/resources/python/travis.mustache @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/client/petstore/python-asyncio/.travis.yml b/samples/client/petstore/python-asyncio/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/client/petstore/python-asyncio/.travis.yml +++ b/samples/client/petstore/python-asyncio/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/client/petstore/python-experimental/.travis.yml b/samples/client/petstore/python-experimental/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/client/petstore/python-experimental/.travis.yml +++ b/samples/client/petstore/python-experimental/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/client/petstore/python-tornado/.travis.yml b/samples/client/petstore/python-tornado/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/client/petstore/python-tornado/.travis.yml +++ b/samples/client/petstore/python-tornado/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/client/petstore/python/.travis.yml b/samples/client/petstore/python/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/client/petstore/python/.travis.yml +++ b/samples/client/petstore/python/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/openapi3/client/petstore/python/.travis.yml b/samples/openapi3/client/petstore/python/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/openapi3/client/petstore/python/.travis.yml +++ b/samples/openapi3/client/petstore/python/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION b/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION index c3a2c7076fa..58592f031f6 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION +++ b/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.0-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/server/petstore/python-flask-python2/.travis.yml b/samples/openapi3/server/petstore/python-flask-python2/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/.travis.yml +++ b/samples/openapi3/server/petstore/python-flask-python2/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION b/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION index c3a2c7076fa..58592f031f6 100644 --- a/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION +++ b/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.0-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/server/petstore/python-flask/.travis.yml b/samples/openapi3/server/petstore/python-flask/.travis.yml index dd6c4450aa9..ad71ee5ca08 100644 --- a/samples/openapi3/server/petstore/python-flask/.travis.yml +++ b/samples/openapi3/server/petstore/python-flask/.travis.yml @@ -5,8 +5,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION index 0c89fc927e3..58592f031f6 100644 --- a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION @@ -1 +1 @@ -4.0.0 \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp/tests/test_user_controller.py b/samples/server/petstore/python-aiohttp/tests/test_user_controller.py index 307cab0fc7a..6564329315e 100644 --- a/samples/server/petstore/python-aiohttp/tests/test_user_controller.py +++ b/samples/server/petstore/python-aiohttp/tests/test_user_controller.py @@ -32,7 +32,7 @@ async def test_create_users_with_array_input(client): Creates list of users with given input array """ - body = [] + body = [{}] headers = { 'Content-Type': 'application/json', } @@ -51,7 +51,7 @@ async def test_create_users_with_list_input(client): Creates list of users with given input array """ - body = [] + body = [{}] headers = { 'Content-Type': 'application/json', } diff --git a/samples/server/petstore/python-flask-python2/.openapi-generator/VERSION b/samples/server/petstore/python-flask-python2/.openapi-generator/VERSION index c3a2c7076fa..58592f031f6 100644 --- a/samples/server/petstore/python-flask-python2/.openapi-generator/VERSION +++ b/samples/server/petstore/python-flask-python2/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.0-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-flask-python2/.travis.yml b/samples/server/petstore/python-flask-python2/.travis.yml index 86211e2d4a2..388de83128f 100644 --- a/samples/server/petstore/python-flask-python2/.travis.yml +++ b/samples/server/petstore/python-flask-python2/.travis.yml @@ -6,8 +6,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests diff --git a/samples/server/petstore/python-flask/.openapi-generator/VERSION b/samples/server/petstore/python-flask/.openapi-generator/VERSION index c3a2c7076fa..58592f031f6 100644 --- a/samples/server/petstore/python-flask/.openapi-generator/VERSION +++ b/samples/server/petstore/python-flask/.openapi-generator/VERSION @@ -1 +1 @@ -4.2.0-SNAPSHOT \ No newline at end of file +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-flask/.travis.yml b/samples/server/petstore/python-flask/.travis.yml index dd6c4450aa9..ad71ee5ca08 100644 --- a/samples/server/petstore/python-flask/.travis.yml +++ b/samples/server/petstore/python-flask/.travis.yml @@ -5,8 +5,9 @@ python: - "3.3" - "3.4" - "3.5" - #- "3.5-dev" # 3.5 development branch - #- "nightly" # points to the latest development branch e.g. 3.6-dev + - "3.6" + - "3.7" + - "3.8" # command to install dependencies install: "pip install -r requirements.txt" # command to run tests From a9494ac1a3cf1405046ba4fa87bc5f17938904da Mon Sep 17 00:00:00 2001 From: Paul Gooderham Date: Mon, 9 Dec 2019 22:41:50 -0500 Subject: [PATCH 85/96] [REQ] Java Microprofile REST Client Template (#4713) * Add a Java Library called microprofile. * Fix formatting --- README.md | 2 +- bin/java-petstore-all.sh | 1 + bin/java-petstore-microprofile.sh | 36 ++++ bin/windows/java-petstore-microprofile.bat | 10 + .../codegen/languages/JavaClientCodegen.java | 59 +++++- .../libraries/microprofile/README.mustache | 10 + .../Java/libraries/microprofile/api.mustache | 61 ++++++ .../microprofile/api_exception.mustache | 23 +++ .../api_exception_mapper.mustache | 22 +++ .../libraries/microprofile/api_test.mustache | 75 ++++++++ .../microprofile/beanValidation.mustache | 4 + .../microprofile/beanValidationCore.mustache | 20 ++ .../beanValidationHeaderParams.mustache | 1 + .../beanValidationPathParams.mustache | 1 + .../beanValidationQueryParams.mustache | 1 + .../microprofile/bodyParams.mustache | 1 + .../microprofile/bodyParamsImpl.mustache | 1 + .../libraries/microprofile/enumClass.mustache | 33 ++++ .../microprofile/enumOuterClass.mustache | 48 +++++ .../microprofile/formParams.mustache | 1 + .../microprofile/formParamsImpl.mustache | 1 + .../microprofile/generatedAnnotation.mustache | 1 + .../microprofile/headerParams.mustache | 1 + .../microprofile/headerParamsImpl.mustache | 1 + .../microprofile/licenseInfo.mustache | 23 +++ .../libraries/microprofile/model.mustache | 23 +++ .../microprofile/pathParams.mustache | 1 + .../microprofile/pathParamsImpl.mustache | 1 + .../Java/libraries/microprofile/pojo.mustache | 129 +++++++++++++ .../Java/libraries/microprofile/pom.mustache | 173 ++++++++++++++++++ .../microprofile/queryParams.mustache | 1 + .../microprofile/queryParamsImpl.mustache | 1 + .../microprofile/returnTypes.mustache | 4 + 33 files changed, 762 insertions(+), 8 deletions(-) create mode 100755 bin/java-petstore-microprofile.sh create mode 100755 bin/windows/java-petstore-microprofile.bat create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/README.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception_mapper.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_test.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidation.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationCore.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationHeaderParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationPathParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationQueryParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParamsImpl.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumClass.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumOuterClass.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParamsImpl.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/generatedAnnotation.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParamsImpl.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/licenseInfo.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/model.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParamsImpl.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParamsImpl.mustache create mode 100644 modules/openapi-generator/src/main/resources/Java/libraries/microprofile/returnTypes.mustache diff --git a/README.md b/README.md index f97cb8be42b..6c42b513be1 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,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), **C++** (cpp-restsdk, Qt5, Tizen), **Clojure**, **Dart (1.x, 2.x)**, **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), **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (rust, rust-server), **Scala** (akka, http4s, scalaz, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x), **Typescript** (AngularJS, Angular (2.x - 8.x), Aurelia, Axios, Fetch, Inversify, jQuery, Node, 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), **C++** (cpp-restsdk, Qt5, Tizen), **Clojure**, **Dart (1.x, 2.x)**, **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), **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (rust, rust-server), **Scala** (akka, http4s, scalaz, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x), **Typescript** (AngularJS, Angular (2.x - 8.x), Aurelia, Axios, Fetch, Inversify, jQuery, Node, Rxjs) **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin), **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** ([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** **Configuration files** | [**Apache2**](https://httpd.apache.org/) diff --git a/bin/java-petstore-all.sh b/bin/java-petstore-all.sh index a593b707c25..6eed10ebe38 100755 --- a/bin/java-petstore-all.sh +++ b/bin/java-petstore-all.sh @@ -7,6 +7,7 @@ ./bin/java-petstore-jersey1.sh ./bin/java-petstore-jersey2-java6.sh ./bin/java-petstore-jersey2.sh +./bin/java-petstore-microprofile.sh ./bin/java-petstore-native.sh ./bin/java-petstore-okhttp-gson-parcelable.sh ./bin/java-petstore-okhttp-gson.sh diff --git a/bin/java-petstore-microprofile.sh b/bin/java-petstore-microprofile.sh new file mode 100755 index 00000000000..b7a93f6a985 --- /dev/null +++ b/bin/java-petstore-microprofile.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate --artifact-id "microprofile-rest-client" -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g java --library microprofile -o samples/client/petstore/java/microprofile-rest-client $@" + +echo "Removing files and folders under samples/client/petstore/java/microprofile-rest-client/src/main" +rm -rf samples/client/petstore/java/microprofile-rest-client/src/main +find samples/client/petstore/java/microprofile-rest-client -maxdepth 1 -type f ! -name "README.md" -exec rm {} + + +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/windows/java-petstore-microprofile.bat b/bin/windows/java-petstore-microprofile.bat new file mode 100755 index 00000000000..4367768ea1b --- /dev/null +++ b/bin/windows/java-petstore-microprofile.bat @@ -0,0 +1,10 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties +set ags=generate --artifact-id "microprofile-rest-client" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g java --library microprofile -o samples\client\petstore\java\microprofile-rest-client + +java %JAVA_OPTS% -jar %executable% %ags% 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 56aa3705943..3138fae2a21 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 @@ -29,6 +29,9 @@ import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.media.Schema; + import java.io.File; import java.util.*; import java.util.regex.Pattern; @@ -39,8 +42,7 @@ import static java.util.Collections.sort; import static org.openapitools.codegen.utils.StringUtils.camelize; public class JavaClientCodegen extends AbstractJavaCodegen - implements BeanValidationFeatures, PerformBeanValidationFeatures, - GzipFeatures { + implements BeanValidationFeatures, PerformBeanValidationFeatures, GzipFeatures { static final String MEDIA_TYPE = "mediaType"; @@ -77,6 +79,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen public static final String RETROFIT_1 = "retrofit"; public static final String RETROFIT_2 = "retrofit2"; public static final String VERTX = "vertx"; + public static final String MICROPROFILE = "microprofile"; public static final String SERIALIZATION_LIBRARY_GSON = "gson"; public static final String SERIALIZATION_LIBRARY_JACKSON = "jackson"; @@ -145,6 +148,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportedLibraries.put(GOOGLE_API_CLIENT, "HTTP client: Google API client 1.x. JSON processing: Jackson 2.9.x"); supportedLibraries.put(REST_ASSURED, "HTTP client: rest-assured : 4.x. JSON processing: Gson 2.x or Jackson 2.9.x. Only for Java8"); supportedLibraries.put(NATIVE, "HTTP client: Java native HttpClient. JSON processing: Jackson 2.9.x. Only for Java11+"); + supportedLibraries.put(MICROPROFILE, "HTTP client: Microprofile client X.x. JSON processing: Jackson 2.9.x"); CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use"); libraryOption.setEnum(supportedLibraries); @@ -176,11 +180,22 @@ public class JavaClientCodegen extends AbstractJavaCodegen return "Generates a Java client library (HTTP lib: Jersey (1.x, 2.x), Retrofit (1.x, 2.x), OpenFeign (9.x, 10.x) and more."; } + @Override + public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) { + super.addOperationToGroup(tag, resourcePath, operation, co, operations); + if (MICROPROFILE.equals(getLibrary())) { + co.subresourceOperation = !co.path.isEmpty(); + } + } + @Override public void processOpts() { if ((WEBCLIENT.equals(getLibrary()) && "threetenbp".equals(dateLibrary)) || NATIVE.equals(getLibrary())) { dateLibrary = "java8"; } + else if (MICROPROFILE.equals(getLibrary())) { + dateLibrary = "legacy"; + } super.processOpts(); @@ -266,12 +281,12 @@ public class JavaClientCodegen extends AbstractJavaCodegen writeOptional(outputFolder, new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); supportingFiles.add(new SupportingFile("travis.mustache", "", ".travis.yml")); supportingFiles.add(new SupportingFile("ApiClient.mustache", invokerFolder, "ApiClient.java")); - if (!(RESTTEMPLATE.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || NATIVE.equals(getLibrary()))) { + if (!(RESTTEMPLATE.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || NATIVE.equals(getLibrary()) || MICROPROFILE.equals(getLibrary()))) { supportingFiles.add(new SupportingFile("StringUtil.mustache", invokerFolder, "StringUtil.java")); } // google-api-client doesn't use the OpenAPI auth, because it uses Google Credential directly (HttpRequestInitializer) - if (!(GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || NATIVE.equals(getLibrary()))) { + if (!(GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || NATIVE.equals(getLibrary()) || MICROPROFILE.equals(getLibrary()))) { supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.mustache", authFolder, "HttpBasicAuth.java")); supportingFiles.add(new SupportingFile("auth/HttpBearerAuth.mustache", authFolder, "HttpBearerAuth.java")); supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.mustache", authFolder, "ApiKeyAuth.java")); @@ -303,13 +318,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen apiDocTemplateFiles.remove("api_doc.mustache"); } - if (!(FEIGN.equals(getLibrary()) || RESTTEMPLATE.equals(getLibrary()) || usesAnyRetrofitLibrary() || GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || WEBCLIENT.equals(getLibrary()))) { + if (!(FEIGN.equals(getLibrary()) || RESTTEMPLATE.equals(getLibrary()) || usesAnyRetrofitLibrary() || GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || WEBCLIENT.equals(getLibrary()) || MICROPROFILE.equals(getLibrary()))) { supportingFiles.add(new SupportingFile("apiException.mustache", invokerFolder, "ApiException.java")); supportingFiles.add(new SupportingFile("Configuration.mustache", invokerFolder, "Configuration.java")); supportingFiles.add(new SupportingFile("Pair.mustache", invokerFolder, "Pair.java")); } - if (!(FEIGN.equals(getLibrary()) || RESTTEMPLATE.equals(getLibrary()) || usesAnyRetrofitLibrary() || GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || NATIVE.equals(getLibrary()))) { + if (!(FEIGN.equals(getLibrary()) || RESTTEMPLATE.equals(getLibrary()) || usesAnyRetrofitLibrary() || GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || NATIVE.equals(getLibrary()) || MICROPROFILE.equals(getLibrary()))) { supportingFiles.add(new SupportingFile("auth/Authentication.mustache", authFolder, "Authentication.java")); } @@ -384,6 +399,15 @@ public class JavaClientCodegen extends AbstractJavaCodegen additionalProperties.put("convert", new CaseFormatLambda(LOWER_CAMEL, UPPER_UNDERSCORE)); apiTemplateFiles.put("api.mustache", ".java"); supportingFiles.add(new SupportingFile("ResponseSpecBuilders.mustache", invokerFolder, "ResponseSpecBuilders.java")); + } else if (MICROPROFILE.equals(getLibrary())) { + supportingFiles.clear(); // Don't need extra files provided by Java Codegen + String apiExceptionFolder = (sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); + supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("api_exception.mustache", apiExceptionFolder, "ApiException.java")); + supportingFiles.add(new SupportingFile("api_exception_mapper.mustache", apiExceptionFolder, "ApiExceptionMapper.java")); + importMapping.put("LocalDate", "org.joda.time.LocalDate"); + serializationLibrary = "none"; } else { LOGGER.error("Unknown library option (-l/--library): " + getLibrary()); } @@ -542,11 +566,15 @@ public class JavaClientCodegen extends AbstractJavaCodegen } // google-api-client doesn't use the OpenAPI auth, because it uses Google Credential directly (HttpRequestInitializer) - if ((!(GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || usePlayWS || NATIVE.equals(getLibrary()))) && ProcessUtils.hasOAuthMethods(objs)) { + if ((!(GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || usePlayWS || NATIVE.equals(getLibrary()) || MICROPROFILE.equals(getLibrary()))) && ProcessUtils.hasOAuthMethods(objs)) { supportingFiles.add(new SupportingFile("auth/OAuth.mustache", authFolder, "OAuth.java")); supportingFiles.add(new SupportingFile("auth/OAuthFlow.mustache", authFolder, "OAuthFlow.java")); } + if (MICROPROFILE.equals(getLibrary())) { + objs = AbstractJavaJAXRSServerCodegen.jaxrsPostProcessOperations(objs); + } + return objs; } @@ -636,6 +664,23 @@ public class JavaClientCodegen extends AbstractJavaCodegen model.imports.add("JsonCreator"); } } + if (MICROPROFILE.equals(getLibrary())) { + model.imports.remove("ApiModelProperty"); + model.imports.remove("ApiModel"); + model.imports.remove("JsonSerialize"); + model.imports.remove("ToStringSerializer"); + } + } + @Override + public CodegenModel fromModel(String name, Schema model) { + CodegenModel codegenModel = super.fromModel(name, model); + if (MICROPROFILE.equals(getLibrary())) { + if (codegenModel.imports.contains("ApiModel")) { + // Remove io.swagger.annotations.ApiModel import + codegenModel.imports.remove("ApiModel"); + } + } + return codegenModel; } @Override diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/README.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/README.mustache new file mode 100644 index 00000000000..576e70fe8ba --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/README.mustache @@ -0,0 +1,10 @@ +# {{appName}} - MicroProfile Rest Client + +{{#appDescription}} +{{{appDescription}}} + +{{/appDescription}} +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. +[MicroProfile Rest Client](https://github.com/eclipse/microprofile-rest-client) is a type-safe way of calling +REST services. The generated client contains an interface which acts as the client, you can inject it into dependent classes. diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache new file mode 100644 index 00000000000..1830838da8e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache @@ -0,0 +1,61 @@ +{{>licenseInfo}} +package {{package}}; + +{{#imports}}import {{import}}; +{{/imports}} + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.List; +import java.util.Map; +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.MediaType; +{{^disableMultipart}} +import org.apache.cxf.jaxrs.ext.multipart.*; +{{/disableMultipart}} + +import org.eclipse.microprofile.rest.client.annotation.RegisterProvider; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; + +{{#appName}} +/** + * {{{appName}}} + * + {{#appDescription}} + *

{{{appDescription}}} + * + {{/appDescription}} + */ +{{/appName}} + +@RegisterRestClient +@RegisterProvider(ApiExceptionMapper.class) +@Path("{{^useAnnotatedBasePath}}/{{/useAnnotatedBasePath}}{{#useAnnotatedBasePath}}{{contextPath}}{{/useAnnotatedBasePath}}") +public interface {{classname}} { +{{#operations}} +{{#operation}} + + {{#summary}} + /** + * {{summary}} + * + {{#notes}} + * {{notes}} + * + {{/notes}} + */ + {{/summary}} + @{{httpMethod}} + {{#subresourceOperation}}@Path("{{{path}}}"){{/subresourceOperation}} +{{#hasConsumes}} + @Consumes({ {{#consumes}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} }) +{{/hasConsumes}} +{{#hasProduces}} + @Produces({ {{#produces}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }) +{{/hasProduces}} + public {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) throws ApiException, ProcessingException; +{{/operation}} +} +{{/operations}} + diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception.mustache new file mode 100644 index 00000000000..fc5c5e5000a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception.mustache @@ -0,0 +1,23 @@ +{{>licenseInfo}} +package {{apiPackage}}; + +import javax.ws.rs.core.Response; + +public class ApiException extends Exception { + + private static final long serialVersionUID = 1L; + private Response response; + + public ApiException() { + super(); + } + + public ApiException(Response response) { + super("Api response has status code " + response.getStatus()); + this.response = response; + } + + public Response getResponse() { + return this.response; + } +} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception_mapper.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception_mapper.mustache new file mode 100644 index 00000000000..9c5988414cd --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_exception_mapper.mustache @@ -0,0 +1,22 @@ +{{>licenseInfo}} +package {{apiPackage}}; + +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.Provider; +import org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper; + +@Provider +public class ApiExceptionMapper + implements ResponseExceptionMapper { + + @Override + public boolean handles(int status, MultivaluedMap headers) { + return status >= 400; + } + + @Override + public ApiException toThrowable(Response response) { + return new ApiException(response); + } +} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_test.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_test.mustache new file mode 100644 index 00000000000..8177ac16dad --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api_test.mustache @@ -0,0 +1,75 @@ +{{>licenseInfo}} + +package {{package}}; + +{{#imports}}import {{import}}; +{{/imports}} +import org.junit.Test; +import org.junit.Before; +import static org.junit.Assert.*; + +import org.eclipse.microprofile.rest.client.RestClientBuilder; + +import java.net.URL; +import java.net.MalformedURLException; +{{^fullJavaUtil}} +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +{{/fullJavaUtil}} + + + +/** + {{#appName}} + * {{{appName}}} Test + * + {{/appName}} + * API tests for {{classname}} + */ +{{#generateSpringBootApplication}} +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = SpringBootApplication.class) +@WebAppConfiguration +@IntegrationTest("server.port=0") +{{/generateSpringBootApplication}} +public class {{classname}}Test { + + private {{classname}} client; + private String baseUrl = "http://localhost:9080"; + + @Before + public void setup() throws MalformedURLException { + client = RestClientBuilder.newBuilder() + .baseUrl(new URL(baseUrl)) + .register(ApiException.class) + .build({{classname}}.class); + } + + {{#operations}}{{#operation}} + /** + {{#summary}} + * {{summary}} + * + {{#notes}} + * {{notes}} + * + {{/notes}} + {{/summary}} + * @throws ApiException + * if the Api call fails + */ + @Test + public void {{operationId}}Test() { + // TODO: test validations + {{#allParams}} + {{^isFile}}{{{dataType}}} {{paramName}} = null;{{/isFile}}{{#isFile}}org.apache.cxf.jaxrs.ext.multipart.Attachment {{paramName}} = null;{{/isFile}} + {{/allParams}} + //{{#returnType}}{{{returnType}}} response = {{/returnType}}api.{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); + //{{#returnType}}assertNotNull(response);{{/returnType}} + + + } + {{/operation}}{{/operations}} +} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidation.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidation.mustache new file mode 100644 index 00000000000..c8c6946fef6 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidation.mustache @@ -0,0 +1,4 @@ +{{#required}} + @NotNull +{{/required}} +{{>beanValidationCore}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationCore.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationCore.mustache new file mode 100644 index 00000000000..8bcdce3df16 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationCore.mustache @@ -0,0 +1,20 @@ +{{#pattern}} @Pattern(regexp="{{{pattern}}}"){{/pattern}}{{! +minLength && maxLength set +}}{{#minLength}}{{#maxLength}} @Size(min={{minLength}},max={{maxLength}}){{/maxLength}}{{/minLength}}{{! +minLength set, maxLength not +}}{{#minLength}}{{^maxLength}} @Size(min={{minLength}}){{/maxLength}}{{/minLength}}{{! +minLength not set, maxLength set +}}{{^minLength}}{{#maxLength}} @Size(max={{maxLength}}){{/maxLength}}{{/minLength}}{{! +@Size: minItems && maxItems set +}}{{#minItems}}{{#maxItems}} @Size(min={{minItems}},max={{maxItems}}){{/maxItems}}{{/minItems}}{{! +@Size: minItems set, maxItems not +}}{{#minItems}}{{^maxItems}} @Size(min={{minItems}}){{/maxItems}}{{/minItems}}{{! +@Size: minItems not set && maxItems set +}}{{^minItems}}{{#maxItems}} @Size(max={{maxItems}}){{/maxItems}}{{/minItems}}{{! +check for integer or long / all others=decimal type with @Decimal* +isInteger set +}}{{#isInteger}}{{#minimum}} @Min({{minimum}}){{/minimum}}{{#maximum}} @Max({{maximum}}){{/maximum}}{{/isInteger}}{{! +isLong set +}}{{#isLong}}{{#minimum}} @Min({{minimum}}L){{/minimum}}{{#maximum}} @Max({{maximum}}L){{/maximum}}{{/isLong}}{{! +Not Integer, not Long => we have a decimal value! +}}{{^isInteger}}{{^isLong}}{{#minimum}} @DecimalMin("{{minimum}}"){{/minimum}}{{#maximum}} @DecimalMax("{{maximum}}"){{/maximum}}{{/isLong}}{{/isInteger}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationHeaderParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationHeaderParams.mustache new file mode 100644 index 00000000000..f8eef8f94c7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationHeaderParams.mustache @@ -0,0 +1 @@ +{{#required}} @NotNull{{/required}}{{>beanValidationCore}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationPathParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationPathParams.mustache new file mode 100644 index 00000000000..051bd53c0a5 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationPathParams.mustache @@ -0,0 +1 @@ +{{! PathParam is always required, no @NotNull necessary }}{{>beanValidationCore}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationQueryParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationQueryParams.mustache new file mode 100644 index 00000000000..f8eef8f94c7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/beanValidationQueryParams.mustache @@ -0,0 +1 @@ +{{#required}} @NotNull{{/required}}{{>beanValidationCore}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParams.mustache new file mode 100644 index 00000000000..be56da7535b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParams.mustache @@ -0,0 +1 @@ +{{#isBodyParam}}{{#useBeanValidation}}@Valid {{/useBeanValidation}}{{{dataType}}} {{paramName}}{{/isBodyParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParamsImpl.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParamsImpl.mustache new file mode 100644 index 00000000000..c7d1abfe527 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/bodyParamsImpl.mustache @@ -0,0 +1 @@ +{{#isBodyParam}}{{{dataType}}} {{paramName}}{{/isBodyParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumClass.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumClass.mustache new file mode 100644 index 00000000000..5bdcf238a2c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumClass.mustache @@ -0,0 +1,33 @@ +@XmlType(name="{{datatypeWithEnum}}") +@XmlEnum({{dataType}}.class) +public enum {{datatypeWithEnum}} { + + {{#allowableValues}} +{{#enumVars}}@XmlEnumValue({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}) {{name}}({{dataType}}.valueOf({{{value}}})){{^-last}}, {{/-last}}{{#-last}};{{/-last}}{{/enumVars}} + {{/allowableValues}} + + + private {{dataType}} value; + + {{datatypeWithEnum}} ({{dataType}} v) { + value = v; + } + + public {{dataType}} value() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static {{datatypeWithEnum}} fromValue(String v) { + for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) { + if (String.valueOf(b.value).equals(v)) { + return b; + } + } + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + v + "'");{{/useNullForUnknownEnumValue}} + } +} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumOuterClass.mustache new file mode 100644 index 00000000000..df2c7287396 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumOuterClass.mustache @@ -0,0 +1,48 @@ +{{#jackson}} +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +{{/jackson}} + +/** + * {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{description}}{{/description}} + */ +public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} { + {{#gson}} + {{#allowableValues}}{{#enumVars}} + @SerializedName({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}) + {{{name}}}({{{value}}}){{^-last}}, + {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} + {{/gson}} + {{^gson}} + {{#allowableValues}}{{#enumVars}} + {{{name}}}({{{value}}}){{^-last}}, + {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} + {{/gson}} + + private {{{dataType}}} value; + + {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}({{{dataType}}} value) { + this.value = value; + } + + @Override +{{#jackson}} + @JsonValue +{{/jackson}} + public String toString() { + return String.valueOf(value); + } + +{{#jackson}} + @JsonCreator +{{/jackson}} + public static {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} fromValue(String text) { + for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} + } + +} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParams.mustache new file mode 100644 index 00000000000..97216dc1806 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParams.mustache @@ -0,0 +1 @@ +{{#isFormParam}}{{^isFile}}@Multipart(value = "{{baseName}}"{{^required}}, required = false{{/required}}) {{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}} @Multipart(value = "{{baseName}}" {{^required}}, required = false{{/required}}) Attachment {{paramName}}Detail{{/isFile}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParamsImpl.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParamsImpl.mustache new file mode 100644 index 00000000000..2be40e1ddd3 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/formParamsImpl.mustache @@ -0,0 +1 @@ +{{#isFormParam}}{{^isFile}}{{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}} Attachment {{paramName}}Detail{{/isFile}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/generatedAnnotation.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/generatedAnnotation.mustache new file mode 100644 index 00000000000..49110fc1ad9 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/generatedAnnotation.mustache @@ -0,0 +1 @@ +@javax.annotation.Generated(value = "{{generatorClass}}", date = "{{generatedDate}}") \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParams.mustache new file mode 100644 index 00000000000..4a9009e76a2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParams.mustache @@ -0,0 +1 @@ +{{#isHeaderParam}}@HeaderParam("{{baseName}}") {{#useBeanValidation}}{{>beanValidationHeaderParams}}{{/useBeanValidation}} {{{dataType}}} {{paramName}}{{/isHeaderParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParamsImpl.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParamsImpl.mustache new file mode 100644 index 00000000000..bd03573d196 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/headerParamsImpl.mustache @@ -0,0 +1 @@ +{{#isHeaderParam}}{{{dataType}}} {{paramName}}{{/isHeaderParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/licenseInfo.mustache new file mode 100644 index 00000000000..02acad802ec --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/licenseInfo.mustache @@ -0,0 +1,23 @@ +/** + * {{{appName}}} + * {{{appDescription}}} + * + * {{#version}}The version of the OpenAPI document: {{{version}}}{{/version}} + * {{#infoEmail}}Contact: {{{infoEmail}}}{{/infoEmail}} + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + * 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 + * + * http://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. + */ diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/model.mustache new file mode 100644 index 00000000000..5272ff09487 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/model.mustache @@ -0,0 +1,23 @@ +{{>licenseInfo}} +package {{package}}; + +{{#imports}}import {{import}}; +{{/imports}} +{{#serializableModel}} +import java.io.Serializable; +{{/serializableModel}} +{{#useBeanValidation}} +import javax.validation.constraints.*; +import javax.validation.Valid; +{{/useBeanValidation}} + +{{#models}} +{{#model}} +{{#isEnum}} +{{>enumOuterClass}} +{{/isEnum}} +{{^isEnum}} +{{>pojo}} +{{/isEnum}} +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParams.mustache new file mode 100644 index 00000000000..9e8455d5ac7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParams.mustache @@ -0,0 +1 @@ +{{#isPathParam}}@PathParam("{{baseName}}"){{#useBeanValidation}}{{>beanValidationPathParams}}{{/useBeanValidation}} {{{dataType}}} {{paramName}}{{/isPathParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParamsImpl.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParamsImpl.mustache new file mode 100644 index 00000000000..6829cf8c7a6 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pathParamsImpl.mustache @@ -0,0 +1 @@ +{{#isPathParam}}{{{dataType}}} {{paramName}}{{/isPathParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache new file mode 100644 index 00000000000..a7d3ddb77c1 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache @@ -0,0 +1,129 @@ +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +{{#withXml}} +@XmlAccessorType(XmlAccessType.FIELD) +{{#hasVars}} @XmlType(name = "{{classname}}", propOrder = + { {{#vars}}"{{name}}"{{^-last}}, {{/-last}}{{/vars}} +}){{/hasVars}} +{{^hasVars}}@XmlType(name = "{{classname}}"){{/hasVars}} +{{^parent}}@XmlRootElement(name="{{classname}}"){{/parent}} +{{/withXml}} +{{#description}} +/** + * {{{description}}} + **/ +{{/description}} +public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}{{#serializableModel}} implements Serializable{{/serializableModel}} { + {{#vars}}{{#isEnum}}{{^isContainer}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} +{{#withXml}} + @XmlElement(name="{{baseName}}"{{#required}}, required = {{required}}{{/required}}) +{{/withXml}} +{{#description}} + /** + * {{{description}}} + **/ +{{/description}} +{{#isContainer}} + private {{{datatypeWithEnum}}} {{name}}{{#required}} = {{{defaultValue}}}{{/required}}{{^required}} = null{{/required}}; +{{/isContainer}} +{{^isContainer}} + private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; +{{/isContainer}} + {{/vars}} + + {{#vars}} + /** + {{#description}} + * {{description}} + {{/description}} + {{^description}} + * Get {{name}} + {{/description}} + {{#minimum}} + * minimum: {{minimum}} + {{/minimum}} + {{#maximum}} + * maximum: {{maximum}} + {{/maximum}} + * @return {{name}} + **/ + @JsonbProperty("{{baseName}}") +{{#vendorExtensions.extraAnnotation}} + {{{vendorExtensions.extraAnnotation}}} +{{/vendorExtensions.extraAnnotation}} +{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} {{#isEnum}}{{^isListContainer}}{{^isMapContainer}}public {{dataType}} {{getter}}() { + if ({{name}} == null) { + return null; + } + return {{name}}.value(); + }{{/isMapContainer}}{{/isListContainer}}{{/isEnum}}{{#isEnum}}{{#isListContainer}}public {{{datatypeWithEnum}}} {{getter}}() { + return {{name}}; + }{{/isListContainer}}{{/isEnum}}{{#isEnum}}{{#isMapContainer}}public {{{datatypeWithEnum}}} {{getter}}() { + return {{name}}; + }{{/isMapContainer}}{{/isEnum}}{{^isEnum}}public {{{datatypeWithEnum}}} {{getter}}() { + return {{name}}; + }{{/isEnum}} + + {{^isReadOnly}} + /** + * Set {{name}} + **/ + public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { + this.{{name}} = {{name}}; + } + + public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) { + this.{{name}} = {{name}}; + return this; + } + {{#isListContainer}} + + public {{classname}} add{{nameInCamelCase}}Item({{{items.datatypeWithEnum}}} {{name}}Item) { + this.{{name}}.add({{name}}Item); + return this; + } + {{/isListContainer}} + {{#isMapContainer}} + + public {{classname}} put{{nameInCamelCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) { + this.{{name}}.put(key, {{name}}Item); + return this; + } + {{/isMapContainer}} + {{/isReadOnly}} + + {{/vars}} + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class {{classname}} {\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); + {{/vars}}sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} 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 new file mode 100644 index 00000000000..95ffef03353 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache @@ -0,0 +1,173 @@ + + 4.0.0 + {{groupId}} + {{artifactId}} + jar + {{artifactId}} + {{#appDescription}} + {{appDescription}} + {{/appDescription}} + {{artifactVersion}} + + src/main/java + + + maven-failsafe-plugin + 2.6 + + + + integration-test + verify + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.9.1 + + + add-source + generate-sources + + add-source + + + + src/gen/java + + + + + + + + + + junit + junit + ${junit-version} + test + +{{#useBeanValidation}} + + + javax.validation + validation-api + ${beanvalidation-version} + provided + +{{/useBeanValidation}} + + + org.eclipse.microprofile.rest.client + microprofile-rest-client-api + 1.2.1 + + + + + javax.ws.rs + javax.ws.rs-api + 2.1.1 + provided + + + + io.smallrye + smallrye-rest-client + 1.2.1 + test + + + + io.smallrye + smallrye-config + 1.3.5 + test + + + {{^disableMultipart}} + + org.apache.cxf + cxf-rt-rs-extension-providers + 3.2.6 + + {{/disableMultipart}} + + + javax.json.bind + javax.json.bind-api + 1.0 + + + javax.xml.bind + jaxb-api + 2.2.11 + + + com.sun.xml.bind + jaxb-core + 2.2.11 + + + com.sun.xml.bind + jaxb-impl + 2.2.11 + + + javax.activation + activation + 1.1.1 + + +{{#java8}} + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-jaxrs-version} + +{{/java8}} +{{^java8}} + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson-jaxrs-version} + +{{/java8}} +{{#useBeanValidationFeature}} + + org.hibernate + hibernate-validator + 5.2.2.Final + +{{/useBeanValidationFeature}} + + + + sonatype-snapshots + https://oss.sonatype.org/content/repositories/snapshots + + true + + + + + 1.8 + ${java.version} + ${java.version} + 1.5.18 + 9.2.9.v20150224 + 4.12 + 1.1.7 + 2.5 +{{#useBeanValidation}} + 1.1.0.Final +{{/useBeanValidation}} + 3.2.7 + 2.9.7 + UTF-8 + + diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParams.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParams.mustache new file mode 100644 index 00000000000..ca2c6e106f7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParams.mustache @@ -0,0 +1 @@ +{{#isQueryParam}}@QueryParam("{{baseName}}"){{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}} {{^isContainer}}{{#defaultValue}}@DefaultValue({{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}) {{/defaultValue}}{{/isContainer}}{{{dataType}}} {{paramName}}{{/isQueryParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParamsImpl.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParamsImpl.mustache new file mode 100644 index 00000000000..ff79730471d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/queryParamsImpl.mustache @@ -0,0 +1 @@ +{{#isQueryParam}}{{{dataType}}} {{paramName}}{{/isQueryParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/returnTypes.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/returnTypes.mustache new file mode 100644 index 00000000000..6af86ffe4e4 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/returnTypes.mustache @@ -0,0 +1,4 @@ +{{#useGenericResponse}}Response{{/useGenericResponse}}{{! non-generic response: +}}{{^useGenericResponse}}{{! +}}{{{returnType}}}{{! +}}{{/useGenericResponse}} \ No newline at end of file From ca9313881a9a7cf0c93b3303759d0569e8c83a3f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 10 Dec 2019 11:52:11 +0800 Subject: [PATCH 86/96] update doc --- docs/generators/java.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generators/java.md b/docs/generators/java.md index 108381ededa..4cd473853b2 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -54,5 +54,5 @@ sidebar_label: java |feignVersion|Version of OpenFeign: '10.x', '9.x' (default)| |false| |useReflectionEqualsHashCode|Use org.apache.commons.lang3.builder for equals and hashCode in the models. WARNING: This will fail under a security manager, unless the appropriate permissions are set up correctly and also there's potential performance impact.| |false| |caseInsensitiveResponseHeaders|Make API response's headers case-insensitive. Available on okhttp-gson, jersey2 libraries| |false| -|library|library template (sub-template) to use|

**jersey1**
HTTP client: Jersey client 1.19.x. JSON processing: Jackson 2.9.x. Enable Java6 support using '-DsupportJava6=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. IMPORTANT NOTE: jersey 1.x is no longer actively maintained so please upgrade to 'jersey2' or other HTTP libaries instead.
**jersey2**
HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.9.x
**feign**
HTTP client: OpenFeign 9.x or 10.x. JSON processing: Jackson 2.9.x. To enable OpenFeign 10.x, set the 'feignVersion' option to '10.x'
**okhttp-gson**
[DEFAULT] HTTP client: OkHttp 3.x. JSON processing: Gson 2.8.x. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
**retrofit**
HTTP client: OkHttp 2.x. JSON processing: Gson 2.x (Retrofit 1.9.0). IMPORTANT NOTE: retrofit1.x is no longer actively maintained so please upgrade to 'retrofit2' instead.
**retrofit2**
HTTP client: OkHttp 3.x. JSON processing: Gson 2.x (Retrofit 2.3.0). Enable the RxJava adapter using '-DuseRxJava[2]=true'. (RxJava 1.x or 2.x)
**resttemplate**
HTTP client: Spring RestTemplate 4.x. JSON processing: Jackson 2.9.x
**webclient**
HTTP client: Spring WebClient 5.x. JSON processing: Jackson 2.9.x
**resteasy**
HTTP client: Resteasy client 3.x. JSON processing: Jackson 2.9.x
**vertx**
HTTP client: VertX client 3.x. JSON processing: Jackson 2.9.x
**google-api-client**
HTTP client: Google API client 1.x. JSON processing: Jackson 2.9.x
**rest-assured**
HTTP client: rest-assured : 4.x. JSON processing: Gson 2.x or Jackson 2.9.x. Only for Java8
**native**
HTTP client: Java native HttpClient. JSON processing: Jackson 2.9.x. Only for Java11+
|okhttp-gson| +|library|library template (sub-template) to use|
**jersey1**
HTTP client: Jersey client 1.19.x. JSON processing: Jackson 2.9.x. Enable Java6 support using '-DsupportJava6=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. IMPORTANT NOTE: jersey 1.x is no longer actively maintained so please upgrade to 'jersey2' or other HTTP libaries instead.
**jersey2**
HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.9.x
**feign**
HTTP client: OpenFeign 9.x or 10.x. JSON processing: Jackson 2.9.x. To enable OpenFeign 10.x, set the 'feignVersion' option to '10.x'
**okhttp-gson**
[DEFAULT] HTTP client: OkHttp 3.x. JSON processing: Gson 2.8.x. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
**retrofit**
HTTP client: OkHttp 2.x. JSON processing: Gson 2.x (Retrofit 1.9.0). IMPORTANT NOTE: retrofit1.x is no longer actively maintained so please upgrade to 'retrofit2' instead.
**retrofit2**
HTTP client: OkHttp 3.x. JSON processing: Gson 2.x (Retrofit 2.3.0). Enable the RxJava adapter using '-DuseRxJava[2]=true'. (RxJava 1.x or 2.x)
**resttemplate**
HTTP client: Spring RestTemplate 4.x. JSON processing: Jackson 2.9.x
**webclient**
HTTP client: Spring WebClient 5.x. JSON processing: Jackson 2.9.x
**resteasy**
HTTP client: Resteasy client 3.x. JSON processing: Jackson 2.9.x
**vertx**
HTTP client: VertX client 3.x. JSON processing: Jackson 2.9.x
**google-api-client**
HTTP client: Google API client 1.x. JSON processing: Jackson 2.9.x
**rest-assured**
HTTP client: rest-assured : 4.x. JSON processing: Gson 2.x or Jackson 2.9.x. Only for Java8
**native**
HTTP client: Java native HttpClient. JSON processing: Jackson 2.9.x. Only for Java11+
**microprofile**
HTTP client: Microprofile client X.x. JSON processing: Jackson 2.9.x
|okhttp-gson| |serializationLibrary|Serialization library, default depends from the library|
**jackson**
Use Jackson as serialization library
**gson**
Use Gson as serialization library
|null| From f22f6a40a1d20e72070466bf8b9d02da7520eac7 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 10 Dec 2019 11:53:23 +0800 Subject: [PATCH 87/96] Add java microprofile samples --- .../.openapi-generator/VERSION | 1 + .../java/microprofile-rest-client/README.md | 8 + .../microprofile-rest-client/docs/Category.md | 14 + .../docs/ModelApiResponse.md | 15 + .../microprofile-rest-client/docs/Order.md | 28 + .../java/microprofile-rest-client/docs/Pet.md | 28 + .../microprofile-rest-client/docs/PetApi.md | 584 ++++++++++++++++++ .../microprofile-rest-client/docs/StoreApi.md | 277 +++++++++ .../java/microprofile-rest-client/docs/Tag.md | 14 + .../microprofile-rest-client/docs/User.md | 20 + .../microprofile-rest-client/docs/UserApi.md | 531 ++++++++++++++++ .../openapitools/client/api/PetApiTest.java | 204 ++++++ .../openapitools/client/api/StoreApiTest.java | 132 ++++ .../openapitools/client/api/UserApiTest.java | 198 ++++++ .../client/model/CategoryTest.java | 63 ++ .../client/model/ModelApiResponseTest.java | 71 +++ .../openapitools/client/model/OrderTest.java | 96 +++ .../openapitools/client/model/PetTest.java | 99 +++ .../openapitools/client/model/TagTest.java | 63 ++ .../openapitools/client/model/UserTest.java | 111 ++++ 20 files changed, 2557 insertions(+) create mode 100644 samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION create mode 100644 samples/client/petstore/java/microprofile-rest-client/README.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/Category.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/ModelApiResponse.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/Order.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/Pet.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/PetApi.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/StoreApi.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/Tag.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/User.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/docs/UserApi.md create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/PetApiTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/StoreApiTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/UserApiTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/CategoryTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/ModelApiResponseTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/OrderTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/PetTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/TagTest.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/UserTest.java diff --git a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION new file mode 100644 index 00000000000..58592f031f6 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.2.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/microprofile-rest-client/README.md b/samples/client/petstore/java/microprofile-rest-client/README.md new file mode 100644 index 00000000000..e95301f74cd --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/README.md @@ -0,0 +1,8 @@ +# OpenAPI Petstore - MicroProfile Rest Client + +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 API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. +[MicroProfile Rest Client](https://github.com/eclipse/microprofile-rest-client) is a type-safe way of calling +REST services. The generated client contains an interface which acts as the client, you can inject it into dependent classes. diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/Category.md b/samples/client/petstore/java/microprofile-rest-client/docs/Category.md new file mode 100644 index 00000000000..eac8fab40f3 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/Category.md @@ -0,0 +1,14 @@ + + +# Category + +A category for a pet +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Long** | | [optional] +**name** | **String** | | [optional] + + + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/ModelApiResponse.md b/samples/client/petstore/java/microprofile-rest-client/docs/ModelApiResponse.md new file mode 100644 index 00000000000..aaf138e7ff7 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/ModelApiResponse.md @@ -0,0 +1,15 @@ + + +# ModelApiResponse + +Describes the result of uploading an image resource +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **Integer** | | [optional] +**type** | **String** | | [optional] +**message** | **String** | | [optional] + + + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/Order.md b/samples/client/petstore/java/microprofile-rest-client/docs/Order.md new file mode 100644 index 00000000000..cfb4ab3d4dd --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/Order.md @@ -0,0 +1,28 @@ + + +# Order + +An order for a pets from the pet store +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Long** | | [optional] +**petId** | **Long** | | [optional] +**quantity** | **Integer** | | [optional] +**shipDate** | [**Date**](Date.md) | | [optional] +**status** | [**StatusEnum**](#StatusEnum) | Order Status | [optional] +**complete** | **Boolean** | | [optional] + + + +## Enum: StatusEnum + +Name | Value +---- | ----- +PLACED | "placed" +APPROVED | "approved" +DELIVERED | "delivered" + + + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/Pet.md b/samples/client/petstore/java/microprofile-rest-client/docs/Pet.md new file mode 100644 index 00000000000..a2664e601e8 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/Pet.md @@ -0,0 +1,28 @@ + + +# Pet + +A pet for sale in the pet store +## 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** | [**StatusEnum**](#StatusEnum) | pet status in the store | [optional] + + + +## Enum: StatusEnum + +Name | Value +---- | ----- +AVAILABLE | "available" +PENDING | "pending" +SOLD | "sold" + + + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/PetApi.md b/samples/client/petstore/java/microprofile-rest-client/docs/PetApi.md new file mode 100644 index 00000000000..3e784666f13 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/PetApi.md @@ -0,0 +1,584 @@ +# 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 + +> void addPet(body) + +Add a new pet to the store + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + Pet body = new Pet(); // Pet | Pet object that needs to be added to the store + try { + void result = apiInstance.addPet(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#addPet"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +[**void**](Void.md) + +### Authorization + +[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 | - | + + +## deletePet + +> void deletePet(petId, apiKey) + +Deletes a pet + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + Long petId = 56L; // Long | Pet id to delete + String apiKey = "apiKey_example"; // String | + try { + void result = apiInstance.deletePet(petId, apiKey); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#deletePet"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Long**| Pet id to delete | + **apiKey** | **String**| | [optional] + +### Return type + +[**void**](Void.md) + +### 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 | - | + + +## findPetsByStatus + +> List<Pet> findPetsByStatus(status) + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + List status = Arrays.asList("available"); // List | Status values that need to be considered for filter + try { + List result = apiInstance.findPetsByStatus(status); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#findPetsByStatus"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | [**List<String>**](String.md)| Status values that need to be considered for filter | [enum: available, pending, sold] + +### Return type + +[**List<Pet>**](Pet.md) + +### 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 | - | + + +## findPetsByTags + +> List<Pet> findPetsByTags(tags) + +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.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + List tags = Arrays.asList(); // List | Tags to filter by + try { + List result = apiInstance.findPetsByTags(tags); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#findPetsByTags"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**List<String>**](String.md)| Tags to filter by | + +### Return type + +[**List<Pet>**](Pet.md) + +### 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 | - | + + +## getPetById + +> Pet getPetById(petId) + +Find pet by ID + +Returns a single pet + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure API key authorization: api_key + ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key"); + api_key.setApiKey("YOUR API KEY"); + // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) + //api_key.setApiKeyPrefix("Token"); + + PetApi apiInstance = new PetApi(defaultClient); + Long petId = 56L; // Long | ID of pet to return + try { + Pet result = apiInstance.getPetById(petId); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#getPetById"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### 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 | - | + + +## updatePet + +> void updatePet(body) + +Update an existing pet + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + Pet body = new Pet(); // Pet | Pet object that needs to be added to the store + try { + void result = apiInstance.updatePet(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#updatePet"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +[**void**](Void.md) + +### Authorization + +[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 | - | + + +## updatePetWithForm + +> void updatePetWithForm(petId, name, status) + +Updates a pet in the store with form data + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + Long petId = 56L; // Long | ID of pet that needs to be updated + String name = "name_example"; // String | Updated name of the pet + String status = "status_example"; // String | Updated status of the pet + try { + void result = apiInstance.updatePetWithForm(petId, name, status); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#updatePetWithForm"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### 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**](Void.md) + +### 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 | - | + + +## uploadFile + +> ModelApiResponse uploadFile(petId, additionalMetadata, file) + +uploads an image + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + Long petId = 56L; // Long | ID of pet to update + String additionalMetadata = "additionalMetadata_example"; // String | Additional data to pass to server + File file = new File("/path/to/file"); // File | file to upload + try { + ModelApiResponse result = apiInstance.uploadFile(petId, additionalMetadata, file); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#uploadFile"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Long**| ID of pet to update | + **additionalMetadata** | **String**| Additional data to pass to server | [optional] + **file** | **File**| file to upload | [optional] + +### Return type + +[**ModelApiResponse**](ModelApiResponse.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 | - | + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/StoreApi.md b/samples/client/petstore/java/microprofile-rest-client/docs/StoreApi.md new file mode 100644 index 00000000000..f43fc7d76fe --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/StoreApi.md @@ -0,0 +1,277 @@ +# 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 + +> void deleteOrder(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 + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.StoreApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + StoreApi apiInstance = new StoreApi(defaultClient); + String orderId = "orderId_example"; // String | ID of the order that needs to be deleted + try { + void result = apiInstance.deleteOrder(orderId); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling StoreApi#deleteOrder"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **String**| ID of the order that needs to be deleted | + +### Return type + +[**void**](Void.md) + +### 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 | - | + + +## getInventory + +> Map<String, Integer> getInventory() + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.StoreApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure API key authorization: api_key + ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key"); + api_key.setApiKey("YOUR API KEY"); + // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) + //api_key.setApiKeyPrefix("Token"); + + StoreApi apiInstance = new StoreApi(defaultClient); + try { + Map result = apiInstance.getInventory(); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling StoreApi#getInventory"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +**Map<String, Integer>** + +### 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 | - | + + +## getOrderById + +> Order getOrderById(orderId) + +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.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.StoreApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + StoreApi apiInstance = new StoreApi(defaultClient); + Long orderId = 56L; // Long | ID of pet that needs to be fetched + try { + Order result = apiInstance.getOrderById(orderId); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling StoreApi#getOrderById"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### 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 | - | + + +## placeOrder + +> Order placeOrder(body) + +Place an order for a pet + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.StoreApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + StoreApi apiInstance = new StoreApi(defaultClient); + Order body = new Order(); // Order | order placed for purchasing the pet + try { + Order result = apiInstance.placeOrder(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling StoreApi#placeOrder"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### 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 + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid Order | - | + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/Tag.md b/samples/client/petstore/java/microprofile-rest-client/docs/Tag.md new file mode 100644 index 00000000000..58beb5e14ec --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/Tag.md @@ -0,0 +1,14 @@ + + +# Tag + +A tag for a pet +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Long** | | [optional] +**name** | **String** | | [optional] + + + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/User.md b/samples/client/petstore/java/microprofile-rest-client/docs/User.md new file mode 100644 index 00000000000..d34ff1a4d89 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/User.md @@ -0,0 +1,20 @@ + + +# User + +A User who is purchasing from the pet store +## 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** | **Integer** | User Status | [optional] + + + diff --git a/samples/client/petstore/java/microprofile-rest-client/docs/UserApi.md b/samples/client/petstore/java/microprofile-rest-client/docs/UserApi.md new file mode 100644 index 00000000000..891af257889 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/docs/UserApi.md @@ -0,0 +1,531 @@ +# 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 + +> void createUser(body) + +Create user + +This can only be done by the logged in user. + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + User body = new User(); // User | Created user object + try { + void result = apiInstance.createUser(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#createUser"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**User**](User.md)| Created user object | + +### Return type + +[**void**](Void.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + + +## createUsersWithArrayInput + +> void createUsersWithArrayInput(body) + +Creates list of users with given input array + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + List body = Arrays.asList(); // List | List of user object + try { + void result = apiInstance.createUsersWithArrayInput(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#createUsersWithArrayInput"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**List<User>**](User.md)| List of user object | + +### Return type + +[**void**](Void.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + + +## createUsersWithListInput + +> void createUsersWithListInput(body) + +Creates list of users with given input array + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + List body = Arrays.asList(); // List | List of user object + try { + void result = apiInstance.createUsersWithListInput(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#createUsersWithListInput"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**List<User>**](User.md)| List of user object | + +### Return type + +[**void**](Void.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + + +## deleteUser + +> void deleteUser(username) + +Delete user + +This can only be done by the logged in user. + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + String username = "username_example"; // String | The name that needs to be deleted + try { + void result = apiInstance.deleteUser(username); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#deleteUser"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String**| The name that needs to be deleted | + +### Return type + +[**void**](Void.md) + +### 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 | - | + + +## getUserByName + +> User getUserByName(username) + +Get user by user name + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + String username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing. + try { + User result = apiInstance.getUserByName(username); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#getUserByName"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### 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 | - | + + +## loginUser + +> String loginUser(username, password) + +Logs user into the system + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + String username = "username_example"; // String | The user name for login + String password = "password_example"; // String | The password for login in clear text + try { + String result = apiInstance.loginUser(username, password); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#loginUser"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### 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 toekn expires
| +| **400** | Invalid username/password supplied | - | + + +## logoutUser + +> void logoutUser() + +Logs out current logged in user session + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + try { + void result = apiInstance.logoutUser(); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#logoutUser"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**void**](Void.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + + +## updateUser + +> void updateUser(username, body) + +Updated user + +This can only be done by the logged in user. + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.UserApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + UserApi apiInstance = new UserApi(defaultClient); + String username = "username_example"; // String | name that need to be deleted + User body = new User(); // User | Updated user object + try { + void result = apiInstance.updateUser(username, body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UserApi#updateUser"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String**| name that need to be deleted | + **body** | [**User**](User.md)| Updated user object | + +### Return type + +[**void**](Void.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid user supplied | - | +| **404** | User not found | - | + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/PetApiTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/PetApiTest.java new file mode 100644 index 00000000000..66bd3d64deb --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/PetApiTest.java @@ -0,0 +1,204 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import java.io.File; +import org.openapitools.client.model.ModelApiResponse; +import org.openapitools.client.model.Pet; +import org.junit.Test; +import org.junit.Before; +import static org.junit.Assert.*; + +import org.eclipse.microprofile.rest.client.RestClientBuilder; + +import java.net.URL; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + + +/** + * OpenAPI Petstore Test + * + * API tests for PetApi + */ +public class PetApiTest { + + private PetApi client; + private String baseUrl = "http://localhost:9080"; + + @Before + public void setup() throws MalformedURLException { + client = RestClientBuilder.newBuilder() + .baseUrl(new URL(baseUrl)) + .register(ApiException.class) + .build(PetApi.class); + } + + + /** + * Add a new pet to the store + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void addPetTest() { + // TODO: test validations + Pet body = null; + //void response = api.addPet(body); + //assertNotNull(response); + + + } + + /** + * Deletes a pet + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void deletePetTest() { + // TODO: test validations + Long petId = null; + String apiKey = null; + //void response = api.deletePet(petId, apiKey); + //assertNotNull(response); + + + } + + /** + * Finds Pets by status + * + * Multiple status values can be provided with comma separated strings + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void findPetsByStatusTest() { + // TODO: test validations + List status = null; + //List response = api.findPetsByStatus(status); + //assertNotNull(response); + + + } + + /** + * Finds Pets by tags + * + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void findPetsByTagsTest() { + // TODO: test validations + List tags = null; + //List response = api.findPetsByTags(tags); + //assertNotNull(response); + + + } + + /** + * Find pet by ID + * + * Returns a single pet + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void getPetByIdTest() { + // TODO: test validations + Long petId = null; + //Pet response = api.getPetById(petId); + //assertNotNull(response); + + + } + + /** + * Update an existing pet + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void updatePetTest() { + // TODO: test validations + Pet body = null; + //void response = api.updatePet(body); + //assertNotNull(response); + + + } + + /** + * Updates a pet in the store with form data + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void updatePetWithFormTest() { + // TODO: test validations + Long petId = null; + String name = null; + String status = null; + //void response = api.updatePetWithForm(petId, name, status); + //assertNotNull(response); + + + } + + /** + * uploads an image + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void uploadFileTest() { + // TODO: test validations + Long petId = null; + String additionalMetadata = null; + org.apache.cxf.jaxrs.ext.multipart.Attachment file = null; + //ModelApiResponse response = api.uploadFile(petId, additionalMetadata, file); + //assertNotNull(response); + + + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/StoreApiTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/StoreApiTest.java new file mode 100644 index 00000000000..386ef568b4c --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/StoreApiTest.java @@ -0,0 +1,132 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import org.openapitools.client.model.Order; +import org.junit.Test; +import org.junit.Before; +import static org.junit.Assert.*; + +import org.eclipse.microprofile.rest.client.RestClientBuilder; + +import java.net.URL; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + + +/** + * OpenAPI Petstore Test + * + * API tests for StoreApi + */ +public class StoreApiTest { + + private StoreApi client; + private String baseUrl = "http://localhost:9080"; + + @Before + public void setup() throws MalformedURLException { + client = RestClientBuilder.newBuilder() + .baseUrl(new URL(baseUrl)) + .register(ApiException.class) + .build(StoreApi.class); + } + + + /** + * Delete purchase order by ID + * + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void deleteOrderTest() { + // TODO: test validations + String orderId = null; + //void response = api.deleteOrder(orderId); + //assertNotNull(response); + + + } + + /** + * Returns pet inventories by status + * + * Returns a map of status codes to quantities + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void getInventoryTest() { + // TODO: test validations + //Map response = api.getInventory(); + //assertNotNull(response); + + + } + + /** + * Find purchase order by ID + * + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void getOrderByIdTest() { + // TODO: test validations + Long orderId = null; + //Order response = api.getOrderById(orderId); + //assertNotNull(response); + + + } + + /** + * Place an order for a pet + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void placeOrderTest() { + // TODO: test validations + Order body = null; + //Order response = api.placeOrder(body); + //assertNotNull(response); + + + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/UserApiTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/UserApiTest.java new file mode 100644 index 00000000000..cb97ab79276 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/api/UserApiTest.java @@ -0,0 +1,198 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import org.openapitools.client.model.User; +import org.junit.Test; +import org.junit.Before; +import static org.junit.Assert.*; + +import org.eclipse.microprofile.rest.client.RestClientBuilder; + +import java.net.URL; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + + +/** + * OpenAPI Petstore Test + * + * API tests for UserApi + */ +public class UserApiTest { + + private UserApi client; + private String baseUrl = "http://localhost:9080"; + + @Before + public void setup() throws MalformedURLException { + client = RestClientBuilder.newBuilder() + .baseUrl(new URL(baseUrl)) + .register(ApiException.class) + .build(UserApi.class); + } + + + /** + * Create user + * + * This can only be done by the logged in user. + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void createUserTest() { + // TODO: test validations + User body = null; + //void response = api.createUser(body); + //assertNotNull(response); + + + } + + /** + * Creates list of users with given input array + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void createUsersWithArrayInputTest() { + // TODO: test validations + List body = null; + //void response = api.createUsersWithArrayInput(body); + //assertNotNull(response); + + + } + + /** + * Creates list of users with given input array + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void createUsersWithListInputTest() { + // TODO: test validations + List body = null; + //void response = api.createUsersWithListInput(body); + //assertNotNull(response); + + + } + + /** + * Delete user + * + * This can only be done by the logged in user. + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void deleteUserTest() { + // TODO: test validations + String username = null; + //void response = api.deleteUser(username); + //assertNotNull(response); + + + } + + /** + * Get user by user name + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void getUserByNameTest() { + // TODO: test validations + String username = null; + //User response = api.getUserByName(username); + //assertNotNull(response); + + + } + + /** + * Logs user into the system + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void loginUserTest() { + // TODO: test validations + String username = null; + String password = null; + //String response = api.loginUser(username, password); + //assertNotNull(response); + + + } + + /** + * Logs out current logged in user session + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void logoutUserTest() { + // TODO: test validations + //void response = api.logoutUser(); + //assertNotNull(response); + + + } + + /** + * Updated user + * + * This can only be done by the logged in user. + * + * @throws ApiException + * if the Api call fails + */ + @Test + public void updateUserTest() { + // TODO: test validations + String username = null; + User body = null; + //void response = api.updateUser(username, body); + //assertNotNull(response); + + + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/CategoryTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/CategoryTest.java new file mode 100644 index 00000000000..33fc7ef96f7 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/CategoryTest.java @@ -0,0 +1,63 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * Model tests for Category + */ +public class CategoryTest { + private final Category model = new Category(); + + /** + * Model tests for Category + */ + @Test + public void testCategory() { + // TODO: test Category + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'name' + */ + @Test + public void nameTest() { + // TODO: test name + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/ModelApiResponseTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/ModelApiResponseTest.java new file mode 100644 index 00000000000..2811b988a45 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/ModelApiResponseTest.java @@ -0,0 +1,71 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * Model tests for ModelApiResponse + */ +public class ModelApiResponseTest { + private final ModelApiResponse model = new ModelApiResponse(); + + /** + * Model tests for ModelApiResponse + */ + @Test + public void testModelApiResponse() { + // TODO: test ModelApiResponse + } + + /** + * Test the property 'code' + */ + @Test + public void codeTest() { + // TODO: test code + } + + /** + * Test the property 'type' + */ + @Test + public void typeTest() { + // TODO: test type + } + + /** + * Test the property 'message' + */ + @Test + public void messageTest() { + // TODO: test message + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/OrderTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/OrderTest.java new file mode 100644 index 00000000000..e8989d64a87 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/OrderTest.java @@ -0,0 +1,96 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import java.util.Date; +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * Model tests for Order + */ +public class OrderTest { + private final Order model = new Order(); + + /** + * Model tests for Order + */ + @Test + public void testOrder() { + // TODO: test Order + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'petId' + */ + @Test + public void petIdTest() { + // TODO: test petId + } + + /** + * Test the property 'quantity' + */ + @Test + public void quantityTest() { + // TODO: test quantity + } + + /** + * Test the property 'shipDate' + */ + @Test + public void shipDateTest() { + // TODO: test shipDate + } + + /** + * Test the property 'status' + */ + @Test + public void statusTest() { + // TODO: test status + } + + /** + * Test the property 'complete' + */ + @Test + public void completeTest() { + // TODO: test complete + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/PetTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/PetTest.java new file mode 100644 index 00000000000..f0db425f497 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/PetTest.java @@ -0,0 +1,99 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import java.util.ArrayList; +import java.util.List; +import org.openapitools.client.model.Category; +import org.openapitools.client.model.Tag; +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * Model tests for Pet + */ +public class PetTest { + private final Pet model = new Pet(); + + /** + * Model tests for Pet + */ + @Test + public void testPet() { + // TODO: test Pet + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'category' + */ + @Test + public void categoryTest() { + // TODO: test category + } + + /** + * Test the property 'name' + */ + @Test + public void nameTest() { + // TODO: test name + } + + /** + * Test the property 'photoUrls' + */ + @Test + public void photoUrlsTest() { + // TODO: test photoUrls + } + + /** + * Test the property 'tags' + */ + @Test + public void tagsTest() { + // TODO: test tags + } + + /** + * Test the property 'status' + */ + @Test + public void statusTest() { + // TODO: test status + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/TagTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/TagTest.java new file mode 100644 index 00000000000..4b86da39763 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/TagTest.java @@ -0,0 +1,63 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * Model tests for Tag + */ +public class TagTest { + private final Tag model = new Tag(); + + /** + * Model tests for Tag + */ + @Test + public void testTag() { + // TODO: test Tag + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'name' + */ + @Test + public void nameTest() { + // TODO: test name + } + +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/UserTest.java b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/UserTest.java new file mode 100644 index 00000000000..c4b7e13a9fd --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/test/java/org/openapitools/client/model/UserTest.java @@ -0,0 +1,111 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * Model tests for User + */ +public class UserTest { + private final User model = new User(); + + /** + * Model tests for User + */ + @Test + public void testUser() { + // TODO: test User + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'username' + */ + @Test + public void usernameTest() { + // TODO: test username + } + + /** + * Test the property 'firstName' + */ + @Test + public void firstNameTest() { + // TODO: test firstName + } + + /** + * Test the property 'lastName' + */ + @Test + public void lastNameTest() { + // TODO: test lastName + } + + /** + * Test the property 'email' + */ + @Test + public void emailTest() { + // TODO: test email + } + + /** + * Test the property 'password' + */ + @Test + public void passwordTest() { + // TODO: test password + } + + /** + * Test the property 'phone' + */ + @Test + public void phoneTest() { + // TODO: test phone + } + + /** + * Test the property 'userStatus' + */ + @Test + public void userStatusTest() { + // TODO: test userStatus + } + +} From 525174f4d69403ac62b8aec546a226b32f9efd80 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 10 Dec 2019 13:44:33 +0800 Subject: [PATCH 88/96] Add new files in java microprofile petstore client --- .../.openapi-generator-ignore | 23 ++ .../java/microprofile-rest-client/pom.xml | 141 ++++++++++ .../openapitools/client/api/ApiException.java | 46 +++ .../client/api/ApiExceptionMapper.java | 45 +++ .../org/openapitools/client/api/PetApi.java | 133 +++++++++ .../org/openapitools/client/api/StoreApi.java | 94 +++++++ .../org/openapitools/client/api/UserApi.java | 125 +++++++++ .../openapitools/client/model/Category.java | 114 ++++++++ .../client/model/ModelApiResponse.java | 138 +++++++++ .../org/openapitools/client/model/Order.java | 249 +++++++++++++++++ .../org/openapitools/client/model/Pet.java | 262 ++++++++++++++++++ .../org/openapitools/client/model/Tag.java | 114 ++++++++ .../org/openapitools/client/model/User.java | 261 +++++++++++++++++ 13 files changed, 1745 insertions(+) create mode 100644 samples/client/petstore/java/microprofile-rest-client/.openapi-generator-ignore create mode 100644 samples/client/petstore/java/microprofile-rest-client/pom.xml create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiException.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiExceptionMapper.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Category.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/ModelApiResponse.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Order.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Pet.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Tag.java create mode 100644 samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/User.java diff --git a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator-ignore b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/.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/java/microprofile-rest-client/pom.xml b/samples/client/petstore/java/microprofile-rest-client/pom.xml new file mode 100644 index 00000000000..f8c57252b94 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/pom.xml @@ -0,0 +1,141 @@ + + 4.0.0 + org.openapitools + microprofile-rest-client + jar + microprofile-rest-client + This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + 1.0.0 + + src/main/java + + + maven-failsafe-plugin + 2.6 + + + + integration-test + verify + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.9.1 + + + add-source + generate-sources + + add-source + + + + src/gen/java + + + + + + + + + + junit + junit + ${junit-version} + test + + + + org.eclipse.microprofile.rest.client + microprofile-rest-client-api + 1.2.1 + + + + + javax.ws.rs + javax.ws.rs-api + 2.1.1 + provided + + + + io.smallrye + smallrye-rest-client + 1.2.1 + test + + + + io.smallrye + smallrye-config + 1.3.5 + test + + + + org.apache.cxf + cxf-rt-rs-extension-providers + 3.2.6 + + + + javax.json.bind + javax.json.bind-api + 1.0 + + + javax.xml.bind + jaxb-api + 2.2.11 + + + com.sun.xml.bind + jaxb-core + 2.2.11 + + + com.sun.xml.bind + jaxb-impl + 2.2.11 + + + javax.activation + activation + 1.1.1 + + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson-jaxrs-version} + + + + + sonatype-snapshots + https://oss.sonatype.org/content/repositories/snapshots + + true + + + + + 1.8 + ${java.version} + ${java.version} + 1.5.18 + 9.2.9.v20150224 + 4.12 + 1.1.7 + 2.5 + 3.2.7 + 2.9.7 + UTF-8 + + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiException.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiException.java new file mode 100644 index 00000000000..500854ee230 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiException.java @@ -0,0 +1,46 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import javax.ws.rs.core.Response; + +public class ApiException extends Exception { + + private static final long serialVersionUID = 1L; + private Response response; + + public ApiException() { + super(); + } + + public ApiException(Response response) { + super("Api response has status code " + response.getStatus()); + this.response = response; + } + + public Response getResponse() { + return this.response; + } +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiExceptionMapper.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiExceptionMapper.java new file mode 100644 index 00000000000..ea43b858bd8 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/ApiExceptionMapper.java @@ -0,0 +1,45 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.Provider; +import org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper; + +@Provider +public class ApiExceptionMapper + implements ResponseExceptionMapper { + + @Override + public boolean handles(int status, MultivaluedMap headers) { + return status >= 400; + } + + @Override + public ApiException toThrowable(Response response) { + return new ApiException(response); + } +} diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java new file mode 100644 index 00000000000..5bd3c51c8c4 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java @@ -0,0 +1,133 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import java.io.File; +import org.openapitools.client.model.ModelApiResponse; +import org.openapitools.client.model.Pet; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.List; +import java.util.Map; +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.MediaType; +import org.apache.cxf.jaxrs.ext.multipart.*; + +import org.eclipse.microprofile.rest.client.annotation.RegisterProvider; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; + +/** + * 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. + * + */ + +@RegisterRestClient +@RegisterProvider(ApiExceptionMapper.class) +@Path("/") +public interface PetApi { + + /** + * Add a new pet to the store + * + */ + @POST + @Path("/pet") + @Consumes({ "application/json", "application/xml" }) + public void addPet(Pet body) throws ApiException, ProcessingException; + + /** + * Deletes a pet + * + */ + @DELETE + @Path("/pet/{petId}") + public void deletePet(@PathParam("petId") Long petId, @HeaderParam("api_key") String apiKey) throws ApiException, ProcessingException; + + /** + * Finds Pets by status + * + * Multiple status values can be provided with comma separated strings + * + */ + @GET + @Path("/pet/findByStatus") + @Produces({ "application/xml", "application/json" }) + public List findPetsByStatus(@QueryParam("status") List status) throws ApiException, ProcessingException; + + /** + * Finds Pets by tags + * + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + */ + @GET + @Path("/pet/findByTags") + @Produces({ "application/xml", "application/json" }) + public List findPetsByTags(@QueryParam("tags") List tags) throws ApiException, ProcessingException; + + /** + * Find pet by ID + * + * Returns a single pet + * + */ + @GET + @Path("/pet/{petId}") + @Produces({ "application/xml", "application/json" }) + public Pet getPetById(@PathParam("petId") Long petId) throws ApiException, ProcessingException; + + /** + * Update an existing pet + * + */ + @PUT + @Path("/pet") + @Consumes({ "application/json", "application/xml" }) + public void updatePet(Pet body) throws ApiException, ProcessingException; + + /** + * Updates a pet in the store with form data + * + */ + @POST + @Path("/pet/{petId}") + @Consumes({ "application/x-www-form-urlencoded" }) + public void updatePetWithForm(@PathParam("petId") Long petId, @Multipart(value = "name", required = false) String name, @Multipart(value = "status", required = false) String status) throws ApiException, ProcessingException; + + /** + * uploads an image + * + */ + @POST + @Path("/pet/{petId}/uploadImage") + @Consumes({ "multipart/form-data" }) + @Produces({ "application/json" }) + public ModelApiResponse uploadFile(@PathParam("petId") Long petId, @Multipart(value = "additionalMetadata", required = false) String additionalMetadata, @Multipart(value = "file" , required = false) Attachment fileDetail) throws ApiException, ProcessingException; +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java new file mode 100644 index 00000000000..e017375ba14 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java @@ -0,0 +1,94 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import org.openapitools.client.model.Order; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.List; +import java.util.Map; +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.MediaType; +import org.apache.cxf.jaxrs.ext.multipart.*; + +import org.eclipse.microprofile.rest.client.annotation.RegisterProvider; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; + +/** + * 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. + * + */ + +@RegisterRestClient +@RegisterProvider(ApiExceptionMapper.class) +@Path("/") +public interface StoreApi { + + /** + * Delete purchase order by ID + * + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * + */ + @DELETE + @Path("/store/order/{orderId}") + public void deleteOrder(@PathParam("orderId") String orderId) throws ApiException, ProcessingException; + + /** + * Returns pet inventories by status + * + * Returns a map of status codes to quantities + * + */ + @GET + @Path("/store/inventory") + @Produces({ "application/json" }) + public Map getInventory() throws ApiException, ProcessingException; + + /** + * Find purchase order by ID + * + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * + */ + @GET + @Path("/store/order/{orderId}") + @Produces({ "application/xml", "application/json" }) + public Order getOrderById(@PathParam("orderId") Long orderId) throws ApiException, ProcessingException; + + /** + * Place an order for a pet + * + */ + @POST + @Path("/store/order") + @Produces({ "application/xml", "application/json" }) + public Order placeOrder(Order body) throws ApiException, ProcessingException; +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java new file mode 100644 index 00000000000..c40f105e971 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java @@ -0,0 +1,125 @@ +/** + * 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. + * + * 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 + * + * http://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.client.api; + +import org.openapitools.client.model.User; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.List; +import java.util.Map; +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.MediaType; +import org.apache.cxf.jaxrs.ext.multipart.*; + +import org.eclipse.microprofile.rest.client.annotation.RegisterProvider; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; + +/** + * 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. + * + */ + +@RegisterRestClient +@RegisterProvider(ApiExceptionMapper.class) +@Path("/") +public interface UserApi { + + /** + * Create user + * + * This can only be done by the logged in user. + * + */ + @POST + @Path("/user") + public void createUser(User body) throws ApiException, ProcessingException; + + /** + * Creates list of users with given input array + * + */ + @POST + @Path("/user/createWithArray") + public void createUsersWithArrayInput(List body) throws ApiException, ProcessingException; + + /** + * Creates list of users with given input array + * + */ + @POST + @Path("/user/createWithList") + public void createUsersWithListInput(List body) throws ApiException, ProcessingException; + + /** + * Delete user + * + * This can only be done by the logged in user. + * + */ + @DELETE + @Path("/user/{username}") + public void deleteUser(@PathParam("username") String username) throws ApiException, ProcessingException; + + /** + * Get user by user name + * + */ + @GET + @Path("/user/{username}") + @Produces({ "application/xml", "application/json" }) + public User getUserByName(@PathParam("username") String username) throws ApiException, ProcessingException; + + /** + * Logs user into the system + * + */ + @GET + @Path("/user/login") + @Produces({ "application/xml", "application/json" }) + public String loginUser(@QueryParam("username") String username, @QueryParam("password") String password) throws ApiException, ProcessingException; + + /** + * Logs out current logged in user session + * + */ + @GET + @Path("/user/logout") + public void logoutUser() throws ApiException, ProcessingException; + + /** + * Updated user + * + * This can only be done by the logged in user. + * + */ + @PUT + @Path("/user/{username}") + public void updateUser(@PathParam("username") String username, User body) throws ApiException, ProcessingException; +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Category.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Category.java new file mode 100644 index 00000000000..78b8362f881 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Category.java @@ -0,0 +1,114 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +/** + * A category for a pet + **/ +public class Category { + + private Long id; + + private String name; + + /** + * Get id + * @return id + **/ + @JsonbProperty("id") + public Long getId() { + return id; + } + + /** + * Set id + **/ + public void setId(Long id) { + this.id = id; + } + + public Category id(Long id) { + this.id = id; + return this; + } + + /** + * Get name + * @return name + **/ + @JsonbProperty("name") + public String getName() { + return name; + } + + /** + * Set name + **/ + public void setName(String name) { + this.name = name; + } + + public Category name(String name) { + this.name = name; + return this; + } + + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Category {\n"); + + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/ModelApiResponse.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/ModelApiResponse.java new file mode 100644 index 00000000000..64fbd3a80f0 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/ModelApiResponse.java @@ -0,0 +1,138 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +/** + * Describes the result of uploading an image resource + **/ +public class ModelApiResponse { + + private Integer code; + + private String type; + + private String message; + + /** + * Get code + * @return code + **/ + @JsonbProperty("code") + public Integer getCode() { + return code; + } + + /** + * Set code + **/ + public void setCode(Integer code) { + this.code = code; + } + + public ModelApiResponse code(Integer code) { + this.code = code; + return this; + } + + /** + * Get type + * @return type + **/ + @JsonbProperty("type") + public String getType() { + return type; + } + + /** + * Set type + **/ + public void setType(String type) { + this.type = type; + } + + public ModelApiResponse type(String type) { + this.type = type; + return this; + } + + /** + * Get message + * @return message + **/ + @JsonbProperty("message") + public String getMessage() { + return message; + } + + /** + * Set message + **/ + public void setMessage(String message) { + this.message = message; + } + + public ModelApiResponse message(String message) { + this.message = message; + return this; + } + + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ModelApiResponse {\n"); + + sb.append(" code: ").append(toIndentedString(code)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" message: ").append(toIndentedString(message)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Order.java new file mode 100644 index 00000000000..4a91c65d22d --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Order.java @@ -0,0 +1,249 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import java.util.Date; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +/** + * An order for a pets from the pet store + **/ +public class Order { + + private Long id; + + private Long petId; + + private Integer quantity; + + private Date shipDate; + +@XmlType(name="StatusEnum") +@XmlEnum(String.class) +public enum StatusEnum { + +@XmlEnumValue("placed") PLACED(String.valueOf("placed")), @XmlEnumValue("approved") APPROVED(String.valueOf("approved")), @XmlEnumValue("delivered") DELIVERED(String.valueOf("delivered")); + + + private String value; + + StatusEnum (String v) { + value = v; + } + + public String value() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static StatusEnum fromValue(String v) { + for (StatusEnum b : StatusEnum.values()) { + if (String.valueOf(b.value).equals(v)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + v + "'"); + } +} + + /** + * Order Status + **/ + private StatusEnum status; + + private Boolean complete = false; + + /** + * Get id + * @return id + **/ + @JsonbProperty("id") + public Long getId() { + return id; + } + + /** + * Set id + **/ + public void setId(Long id) { + this.id = id; + } + + public Order id(Long id) { + this.id = id; + return this; + } + + /** + * Get petId + * @return petId + **/ + @JsonbProperty("petId") + public Long getPetId() { + return petId; + } + + /** + * Set petId + **/ + public void setPetId(Long petId) { + this.petId = petId; + } + + public Order petId(Long petId) { + this.petId = petId; + return this; + } + + /** + * Get quantity + * @return quantity + **/ + @JsonbProperty("quantity") + public Integer getQuantity() { + return quantity; + } + + /** + * Set quantity + **/ + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + + public Order quantity(Integer quantity) { + this.quantity = quantity; + return this; + } + + /** + * Get shipDate + * @return shipDate + **/ + @JsonbProperty("shipDate") + public Date getShipDate() { + return shipDate; + } + + /** + * Set shipDate + **/ + public void setShipDate(Date shipDate) { + this.shipDate = shipDate; + } + + public Order shipDate(Date shipDate) { + this.shipDate = shipDate; + return this; + } + + /** + * Order Status + * @return status + **/ + @JsonbProperty("status") + public String getStatus() { + if (status == null) { + return null; + } + return status.value(); + } + + /** + * Set status + **/ + public void setStatus(StatusEnum status) { + this.status = status; + } + + public Order status(StatusEnum status) { + this.status = status; + return this; + } + + /** + * Get complete + * @return complete + **/ + @JsonbProperty("complete") + public Boolean getComplete() { + return complete; + } + + /** + * Set complete + **/ + public void setComplete(Boolean complete) { + this.complete = complete; + } + + public Order complete(Boolean complete) { + this.complete = complete; + return this; + } + + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Order {\n"); + + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Pet.java new file mode 100644 index 00000000000..1cdddd7789d --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Pet.java @@ -0,0 +1,262 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + +import java.util.ArrayList; +import java.util.List; +import org.openapitools.client.model.Category; +import org.openapitools.client.model.Tag; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +/** + * A pet for sale in the pet store + **/ +public class Pet { + + private Long id; + + private Category category; + + private String name; + + private List photoUrls = new ArrayList(); + + private List tags = null; + +@XmlType(name="StatusEnum") +@XmlEnum(String.class) +public enum StatusEnum { + +@XmlEnumValue("available") AVAILABLE(String.valueOf("available")), @XmlEnumValue("pending") PENDING(String.valueOf("pending")), @XmlEnumValue("sold") SOLD(String.valueOf("sold")); + + + private String value; + + StatusEnum (String v) { + value = v; + } + + public String value() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static StatusEnum fromValue(String v) { + for (StatusEnum b : StatusEnum.values()) { + if (String.valueOf(b.value).equals(v)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + v + "'"); + } +} + + /** + * pet status in the store + **/ + private StatusEnum status; + + /** + * Get id + * @return id + **/ + @JsonbProperty("id") + public Long getId() { + return id; + } + + /** + * Set id + **/ + public void setId(Long id) { + this.id = id; + } + + public Pet id(Long id) { + this.id = id; + return this; + } + + /** + * Get category + * @return category + **/ + @JsonbProperty("category") + public Category getCategory() { + return category; + } + + /** + * Set category + **/ + public void setCategory(Category category) { + this.category = category; + } + + public Pet category(Category category) { + this.category = category; + return this; + } + + /** + * Get name + * @return name + **/ + @JsonbProperty("name") + public String getName() { + return name; + } + + /** + * Set name + **/ + public void setName(String name) { + this.name = name; + } + + public Pet name(String name) { + this.name = name; + return this; + } + + /** + * Get photoUrls + * @return photoUrls + **/ + @JsonbProperty("photoUrls") + public List getPhotoUrls() { + return photoUrls; + } + + /** + * Set photoUrls + **/ + public void setPhotoUrls(List photoUrls) { + this.photoUrls = photoUrls; + } + + public Pet photoUrls(List photoUrls) { + this.photoUrls = photoUrls; + return this; + } + + public Pet addPhotoUrlsItem(String photoUrlsItem) { + this.photoUrls.add(photoUrlsItem); + return this; + } + + /** + * Get tags + * @return tags + **/ + @JsonbProperty("tags") + public List getTags() { + return tags; + } + + /** + * Set tags + **/ + public void setTags(List tags) { + this.tags = tags; + } + + public Pet tags(List tags) { + this.tags = tags; + return this; + } + + public Pet addTagsItem(Tag tagsItem) { + this.tags.add(tagsItem); + return this; + } + + /** + * pet status in the store + * @return status + **/ + @JsonbProperty("status") + public String getStatus() { + if (status == null) { + return null; + } + return status.value(); + } + + /** + * Set status + **/ + public void setStatus(StatusEnum status) { + this.status = status; + } + + public Pet status(StatusEnum status) { + this.status = status; + return this; + } + + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Pet {\n"); + + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Tag.java new file mode 100644 index 00000000000..5915eb2f4d4 --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/Tag.java @@ -0,0 +1,114 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +/** + * A tag for a pet + **/ +public class Tag { + + private Long id; + + private String name; + + /** + * Get id + * @return id + **/ + @JsonbProperty("id") + public Long getId() { + return id; + } + + /** + * Set id + **/ + public void setId(Long id) { + this.id = id; + } + + public Tag id(Long id) { + this.id = id; + return this; + } + + /** + * Get name + * @return name + **/ + @JsonbProperty("name") + public String getName() { + return name; + } + + /** + * Set name + **/ + public void setName(String name) { + this.name = name; + } + + public Tag name(String name) { + this.name = name; + return this; + } + + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Tag {\n"); + + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/User.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/User.java new file mode 100644 index 00000000000..49cfbedb33f --- /dev/null +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/model/User.java @@ -0,0 +1,261 @@ +/** + * 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. + * + * 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 + * + * http://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.client.model; + + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.json.bind.annotation.JsonbProperty; + +/** + * A User who is purchasing from the pet store + **/ +public class User { + + private Long id; + + private String username; + + private String firstName; + + private String lastName; + + private String email; + + private String password; + + private String phone; + + /** + * User Status + **/ + private Integer userStatus; + + /** + * Get id + * @return id + **/ + @JsonbProperty("id") + public Long getId() { + return id; + } + + /** + * Set id + **/ + public void setId(Long id) { + this.id = id; + } + + public User id(Long id) { + this.id = id; + return this; + } + + /** + * Get username + * @return username + **/ + @JsonbProperty("username") + public String getUsername() { + return username; + } + + /** + * Set username + **/ + public void setUsername(String username) { + this.username = username; + } + + public User username(String username) { + this.username = username; + return this; + } + + /** + * Get firstName + * @return firstName + **/ + @JsonbProperty("firstName") + public String getFirstName() { + return firstName; + } + + /** + * Set firstName + **/ + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public User firstName(String firstName) { + this.firstName = firstName; + return this; + } + + /** + * Get lastName + * @return lastName + **/ + @JsonbProperty("lastName") + public String getLastName() { + return lastName; + } + + /** + * Set lastName + **/ + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public User lastName(String lastName) { + this.lastName = lastName; + return this; + } + + /** + * Get email + * @return email + **/ + @JsonbProperty("email") + public String getEmail() { + return email; + } + + /** + * Set email + **/ + public void setEmail(String email) { + this.email = email; + } + + public User email(String email) { + this.email = email; + return this; + } + + /** + * Get password + * @return password + **/ + @JsonbProperty("password") + public String getPassword() { + return password; + } + + /** + * Set password + **/ + public void setPassword(String password) { + this.password = password; + } + + public User password(String password) { + this.password = password; + return this; + } + + /** + * Get phone + * @return phone + **/ + @JsonbProperty("phone") + public String getPhone() { + return phone; + } + + /** + * Set phone + **/ + public void setPhone(String phone) { + this.phone = phone; + } + + public User phone(String phone) { + this.phone = phone; + return this; + } + + /** + * User Status + * @return userStatus + **/ + @JsonbProperty("userStatus") + public Integer getUserStatus() { + return userStatus; + } + + /** + * Set userStatus + **/ + public void setUserStatus(Integer userStatus) { + this.userStatus = userStatus; + } + + public User userStatus(Integer userStatus) { + this.userStatus = userStatus; + return this; + } + + + /** + * Create a string representation of this pojo. + **/ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class User {\n"); + + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private static String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + From 60ba6194c1ca812cf6e52fd69cb5228969757f0f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 10 Dec 2019 15:03:12 +0800 Subject: [PATCH 89/96] add microprofile to CI test (#4749) --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index f69d9cffa32..a2629d64572 100644 --- a/pom.xml +++ b/pom.xml @@ -1204,6 +1204,7 @@ samples/client/petstore/java/vertx samples/client/petstore/java/resteasy samples/client/petstore/java/google-api-client + samples/client/petstore/java/microprofile-rest-client samples/server/petstore/jaxrs-jersey samples/server/petstore/jaxrs-spec From 00abb4780c4ac8cfde9301071b653f062555cc79 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Tue, 10 Dec 2019 16:26:33 +0800 Subject: [PATCH 90/96] change baseName to name to escape the field name of struct when it includes C programming language keyword (#4735) --- .../resources/C-libcurl/model-body.mustache | 324 +++++++++--------- .../resources/C-libcurl/model-header.mustache | 76 ++-- 2 files changed, 200 insertions(+), 200 deletions(-) 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 c53d1c36cf4..527c1b24350 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 @@ -74,17 +74,17 @@ return 0; {{^isContainer}} {{^isModel}} {{#isEnum}} - char* {{baseName}}{{classname}}_ToString({{baseName}}_e {{baseName}}){ - char *{{baseName}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; - return {{baseName}}Array[{{baseName}}]; + char* {{name}}{{classname}}_ToString({{name}}_e {{name}}){ + char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + return {{name}}Array[{{name}}]; } - {{baseName}}_e {{baseName}}{{classname}}_FromString(char* {{baseName}}){ + {{name}}_e {{name}}{{classname}}_FromString(char* {{name}}){ int stringToReturn = 0; - char *{{baseName}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; - size_t sizeofArray = sizeof({{baseName}}Array) / sizeof({{baseName}}Array[0]); + char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + size_t sizeofArray = sizeof({{name}}Array) / sizeof({{name}}Array[0]); while(stringToReturn < sizeofArray) { - if(strcmp({{baseName}}, {{baseName}}Array[stringToReturn]) == 0) { + if(strcmp({{name}}, {{name}}Array[stringToReturn]) == 0) { return stringToReturn; } stringToReturn++; @@ -98,17 +98,17 @@ return 0; {{#items}} {{^isModel}} {{#isEnum}} - char* {{baseName}}{{classname}}_ToString({{baseName}}_e {{baseName}}){ - char *{{baseName}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; - return {{baseName}}Array[{{baseName}} - 1]; + char* {{name}}{{classname}}_ToString({{name}}_e {{name}}){ + char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + return {{name}}Array[{{name}} - 1]; } - {{baseName}}_e {{baseName}}{{classname}}_FromString(char* {{baseName}}){ + {{name}}_e {{name}}{{classname}}_FromString(char* {{name}}){ int stringToReturn = 0; - char *{{baseName}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; - size_t sizeofArray = sizeof({{baseName}}Array) / sizeof({{baseName}}Array[0]); + char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + size_t sizeofArray = sizeof({{name}}Array) / sizeof({{name}}Array[0]); while(stringToReturn < sizeofArray) { - if(strcmp({{baseName}}, {{baseName}}Array[stringToReturn]) == 0) { + if(strcmp({{name}}, {{name}}Array[stringToReturn]) == 0) { return stringToReturn + 1; } stringToReturn++; @@ -127,64 +127,64 @@ return 0; {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatype}}_e {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{^isEnum}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{/isModel}} {{#isUuid}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isUuid}} {{#isEmail}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isEmail}} {{#isFreeFormObject}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isFreeFormObject}} {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isBoolean}} {{#isEnum}} {{#isString}} - {{baseName}}_e {{baseName}}{{#hasMore}},{{/hasMore}} + {{name}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{^isEnum}} {{#isString}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{#isByteArray}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isByteArray}} {{#isBinary}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isBinary}} {{#isDate}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isDate}} {{#isDateTime}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isDateTime}} {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isPrimitiveType}} {{^isPrimitiveType}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isMapContainer}} {{/isContainer}} {{/vars}} @@ -194,7 +194,7 @@ return 0; return NULL; } {{#vars}} - {{classname}}_local_var->{{{baseName}}} = {{{baseName}}}; + {{classname}}_local_var->{{{name}}} = {{{name}}}; {{/vars}} return {{classname}}_local_var; @@ -208,58 +208,58 @@ void {{classname}}_free({{classname}}_t *{{classname}}) { {{^isPrimitiveType}} {{#isModel}} {{^isEnum}} - {{{complexType}}}_free({{{classname}}}->{{{baseName}}}); + {{{complexType}}}_free({{{classname}}}->{{{name}}}); {{/isEnum}} {{/isModel}} {{#isUuid}} - free({{{classname}}}->{{{baseName}}}); + free({{{classname}}}->{{{name}}}); {{/isUuid}} {{#isEmail}} - free({{{classname}}}->{{{baseName}}}); + free({{{classname}}}->{{{name}}}); {{/isEmail}} {{#isFreeFormObject}} - object_free({{{classname}}}->{{{baseName}}}); + object_free({{{classname}}}->{{{name}}}); {{/isFreeFormObject}} {{/isPrimitiveType}} {{#isPrimitiveType}} {{^isEnum}} {{#isString}} - free({{{classname}}}->{{{baseName}}}); + free({{{classname}}}->{{{name}}}); {{/isString}} {{/isEnum}} {{#isBinary}} - free({{{classname}}}->{{{baseName}}}->data); + free({{{classname}}}->{{{name}}}->data); {{/isBinary}} {{#isDate}} - free({{{classname}}}->{{{baseName}}}); + free({{{classname}}}->{{{name}}}); {{/isDate}} {{#isDateTime}} - free({{{classname}}}->{{{baseName}}}); + free({{{classname}}}->{{{name}}}); {{/isDateTime}} {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - list_ForEach(listEntry, {{classname}}->{{baseName}}) { + list_ForEach(listEntry, {{classname}}->{{name}}) { free(listEntry->data); } - list_free({{classname}}->{{baseName}}); + list_free({{classname}}->{{name}}); {{/isPrimitiveType}} {{^isPrimitiveType}} - list_ForEach(listEntry, {{classname}}->{{baseName}}) { + list_ForEach(listEntry, {{classname}}->{{name}}) { {{complexType}}_free(listEntry->data); } - list_free({{classname}}->{{baseName}}); + list_free({{classname}}->{{name}}); {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - list_ForEach(listEntry, {{classname}}->{{baseName}}) { + list_ForEach(listEntry, {{classname}}->{{name}}) { keyValuePair_t *localKeyValue = (keyValuePair_t*) listEntry->data; free (localKeyValue->key); free (localKeyValue->value); } - list_free({{classname}}->{{baseName}}); + list_free({{classname}}->{{name}}); {{/isMapContainer}} {{/isContainer}} {{/vars}} @@ -270,30 +270,30 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { cJSON *item = cJSON_CreateObject(); {{#vars}} - // {{{classname}}}->{{{baseName}}} + // {{{classname}}}->{{{name}}} {{#required}} {{^isEnum}} - if (!{{{classname}}}->{{{baseName}}}) { + if (!{{{classname}}}->{{{name}}}) { goto fail; } {{/isEnum}} {{/required}} - {{^required}}{{^isEnum}}if({{{classname}}}->{{{baseName}}}) { {{/isEnum}}{{/required}} + {{^required}}{{^isEnum}}if({{{classname}}}->{{{name}}}) { {{/isEnum}}{{/required}} {{^isContainer}} {{#isPrimitiveType}} {{#isNumeric}} - if(cJSON_AddNumberToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddNumberToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //Numeric } {{/isNumeric}} {{#isBoolean}} - if(cJSON_AddBoolToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddBoolToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //Bool } {{/isBoolean}} {{#isEnum}} {{#isString}} - if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{baseName}}}{{classname}}_ToString({{{classname}}}->{{{baseName}}})) == NULL) + if(cJSON_AddStringToObject(item, "{{{name}}}", {{{name}}}{{classname}}_ToString({{{classname}}}->{{{name}}})) == NULL) { goto fail; //Enum } @@ -301,30 +301,30 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { {{/isEnum}} {{^isEnum}} {{#isString}} - if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddStringToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //String } {{/isString}} {{/isEnum}} {{#isByteArray}} - if(cJSON_AddNumberToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddNumberToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //Byte } {{/isByteArray}} {{#isBinary}} - char* encoded_str_{{{baseName}}} = base64encode({{{classname}}}->{{{baseName}}}->data,{{{classname}}}->{{{baseName}}}->len); - if(cJSON_AddStringToObject(item, "{{{baseName}}}", encoded_str_{{{baseName}}}) == NULL) { + char* encoded_str_{{{name}}} = base64encode({{{classname}}}->{{{name}}}->data,{{{classname}}}->{{{name}}}->len); + if(cJSON_AddStringToObject(item, "{{{name}}}", encoded_str_{{{name}}}) == NULL) { goto fail; //Binary } - free (encoded_str_{{{baseName}}}); + free (encoded_str_{{{name}}}); {{/isBinary}} {{#isDate}} - if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddStringToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //Date } {{/isDate}} {{#isDateTime}} - if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddStringToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //Date-Time } {{/isDateTime}} @@ -332,42 +332,42 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - cJSON *{{{baseName}}}_enum_local_JSON = {{datatypeWithEnum}}_convertToJSON({{{classname}}}->{{{baseName}}}); - if({{{baseName}}}_enum_local_JSON == NULL) { + cJSON *{{{name}}}_enum_local_JSON = {{datatypeWithEnum}}_convertToJSON({{{classname}}}->{{{name}}}); + if({{{name}}}_enum_local_JSON == NULL) { goto fail; // enum } - cJSON_AddItemToObject(item, "{{{baseName}}}", {{{baseName}}}_enum_local_JSON); + cJSON_AddItemToObject(item, "{{{name}}}", {{{name}}}_enum_local_JSON); if(item->child == NULL) { goto fail; } {{/isEnum}} {{^isEnum}} - cJSON *{{{baseName}}}_local_JSON = {{complexType}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_convertToJSON({{{classname}}}->{{{baseName}}}); - if({{{baseName}}}_local_JSON == NULL) { + cJSON *{{{name}}}_local_JSON = {{complexType}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_convertToJSON({{{classname}}}->{{{name}}}); + if({{{name}}}_local_JSON == NULL) { goto fail; //model } - cJSON_AddItemToObject(item, "{{{baseName}}}", {{{baseName}}}_local_JSON); + cJSON_AddItemToObject(item, "{{{name}}}", {{{name}}}_local_JSON); if(item->child == NULL) { goto fail; } {{/isEnum}} {{/isModel}} {{#isUuid}} - if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddStringToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //uuid } {{/isUuid}} {{#isEmail}} - if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{classname}}}->{{{baseName}}}) == NULL) { + if(cJSON_AddStringToObject(item, "{{{name}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //Email } {{/isEmail}} {{#isFreeFormObject}} - cJSON *{{{baseName}}}_object = object_convertToJSON({{{classname}}}->{{{baseName}}}); - if({{{baseName}}}_object == NULL) { + cJSON *{{{name}}}_object = object_convertToJSON({{{classname}}}->{{{name}}}); + if({{{name}}}_object == NULL) { goto fail; //model } - cJSON_AddItemToObject(item, "{{{baseName}}}", {{{baseName}}}_object); + cJSON_AddItemToObject(item, "{{{name}}}", {{{name}}}_object); if(item->child == NULL) { goto fail; } @@ -377,22 +377,22 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - cJSON *{{{name}}} = cJSON_AddArrayToObject(item, "{{{baseName}}}"); + cJSON *{{{name}}} = cJSON_AddArrayToObject(item, "{{{name}}}"); if({{{name}}} == NULL) { goto fail; //primitive container } listEntry_t *{{{name}}}ListEntry; - list_ForEach({{{name}}}ListEntry, {{{classname}}}->{{{baseName}}}) { + list_ForEach({{{name}}}ListEntry, {{{classname}}}->{{{name}}}) { {{#items}} {{#isString}} - if(cJSON_AddStringToObject({{{baseName}}}, "", (char*){{{baseName}}}ListEntry->data) == NULL) + if(cJSON_AddStringToObject({{{name}}}, "", (char*){{{name}}}ListEntry->data) == NULL) { goto fail; } {{/isString}} {{^isString}} - if(cJSON_AddNumberToObject({{{baseName}}}, "", *(double *){{{baseName}}}ListEntry->data) == NULL) + if(cJSON_AddNumberToObject({{{name}}}, "", *(double *){{{name}}}ListEntry->data) == NULL) { goto fail; } @@ -401,33 +401,33 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { } {{/isPrimitiveType}} {{^isPrimitiveType}} - cJSON *{{{baseName}}} = cJSON_AddArrayToObject(item, "{{{baseName}}}"); - if({{{baseName}}} == NULL) { + cJSON *{{{name}}} = cJSON_AddArrayToObject(item, "{{{name}}}"); + if({{{name}}} == NULL) { goto fail; //nonprimitive container } - listEntry_t *{{{baseName}}}ListEntry; - if ({{{classname}}}->{{{baseName}}}) { - list_ForEach({{{baseName}}}ListEntry, {{classname}}->{{{baseName}}}) { - cJSON *itemLocal = {{complexType}}_convertToJSON({{#isEnum}}{{#items}}({{datatypeWithEnum}}_e){{/items}}{{/isEnum}}{{{baseName}}}ListEntry->data); + listEntry_t *{{{name}}}ListEntry; + if ({{{classname}}}->{{{name}}}) { + list_ForEach({{{name}}}ListEntry, {{classname}}->{{{name}}}) { + cJSON *itemLocal = {{complexType}}_convertToJSON({{#isEnum}}{{#items}}({{datatypeWithEnum}}_e){{/items}}{{/isEnum}}{{{name}}}ListEntry->data); if(itemLocal == NULL) { goto fail; } - cJSON_AddItemToArray({{{baseName}}}, itemLocal); + cJSON_AddItemToArray({{{name}}}, itemLocal); } } {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - cJSON *{{{baseName}}} = cJSON_AddObjectToObject(item, "{{{baseName}}}"); - if({{{baseName}}} == NULL) { + cJSON *{{{name}}} = cJSON_AddObjectToObject(item, "{{{name}}}"); + if({{{name}}} == NULL) { goto fail; //primitive map container } cJSON *localMapObject = cJSON_CreateObject(); //Memory free to be implemented in user code - listEntry_t *{{{baseName}}}ListEntry; - if ({{{classname}}}->{{{baseName}}}) { - list_ForEach({{{baseName}}}ListEntry, {{{classname}}}->{{{baseName}}}) { - keyValuePair_t *localKeyValue = (keyValuePair_t*){{{baseName}}}ListEntry->data; + listEntry_t *{{{name}}}ListEntry; + if ({{{classname}}}->{{{name}}}) { + list_ForEach({{{name}}}ListEntry, {{{classname}}}->{{{name}}}) { + keyValuePair_t *localKeyValue = (keyValuePair_t*){{{name}}}ListEntry->data; {{#items}} {{#isString}} if(cJSON_AddStringToObject(localMapObject, localKeyValue->key, (char*)localKeyValue->value) == NULL) @@ -442,7 +442,7 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { } {{/isString}} {{/items}} - cJSON_AddItemToObject({{{baseName}}},"", localMapObject); + cJSON_AddItemToObject({{{name}}},"", localMapObject); } } {{/isMapContainer}} @@ -465,10 +465,10 @@ fail: {{classname}}_t *{{classname}}_local_var = NULL; {{#vars}} - // {{{classname}}}->{{{baseName}}} - cJSON *{{{baseName}}} = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{baseName}}}"); + // {{{classname}}}->{{{name}}} + cJSON *{{{name}}} = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{name}}}"); {{#required}} - if (!{{{baseName}}}) { + if (!{{{name}}}) { goto end; } @@ -476,71 +476,71 @@ fail: {{^isContainer}} {{#isPrimitiveType}} {{#isNumeric}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsNumber({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsNumber({{{name}}})) { goto end; //Numeric } {{/isNumeric}} {{#isBoolean}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsBool({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsBool({{{name}}})) { goto end; //Bool } {{/isBoolean}} {{#isEnum}} {{#isString}} - {{{baseName}}}_e {{baseName}}Variable; - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + {{{name}}}_e {{name}}Variable; + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //Enum } - {{baseName}}Variable = {{baseName}}{{classname}}_FromString({{{baseName}}}->valuestring); + {{name}}Variable = {{name}}{{classname}}_FromString({{{name}}}->valuestring); {{/isString}} {{/isEnum}} {{^isEnum}} {{#isString}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //String } {{/isString}} {{/isEnum}} {{#isByteArray}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsNumber({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsNumber({{{name}}})) { goto end; //Byte } {{/isByteArray}} {{#isBinary}} - binary_t* decoded_str_{{{baseName}}}; - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + binary_t* decoded_str_{{{name}}}; + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //Binary } - char* decoded = base64decode({{{baseName}}}->valuestring, strlen({{{baseName}}}->valuestring)); - decoded_str_{{{baseName}}}->data = malloc(strlen(decoded) - 1); - if (!decoded_str_{{{baseName}}}->data) { + char* decoded = base64decode({{{name}}}->valuestring, strlen({{{name}}}->valuestring)); + decoded_str_{{{name}}}->data = malloc(strlen(decoded) - 1); + if (!decoded_str_{{{name}}}->data) { goto end; } - memcpy(decoded_str_{{{baseName}}}->data,decoded,(strlen(decoded)-1)); - decoded_str_{{{baseName}}}->len = strlen(decoded) - 1; + memcpy(decoded_str_{{{name}}}->data,decoded,(strlen(decoded)-1)); + decoded_str_{{{name}}}->len = strlen(decoded) - 1; {{/isBinary}} {{#isDate}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //Date } {{/isDate}} {{#isDateTime}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //DateTime } @@ -549,34 +549,34 @@ fail: {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatypeWithEnum}}_e {{baseName}}_local_nonprim_enum; - {{^required}}if ({{{baseName}}}) { {{/required}} - {{{baseName}}}_local_nonprim_enum = {{datatypeWithEnum}}_parseFromJSON({{{baseName}}}); //enum model + {{datatypeWithEnum}}_e {{name}}_local_nonprim_enum; + {{^required}}if ({{{name}}}) { {{/required}} + {{{name}}}_local_nonprim_enum = {{datatypeWithEnum}}_parseFromJSON({{{name}}}); //enum model {{/isEnum}} {{^isEnum}} - {{^isFreeFormObject}}{{complexType}}{{/isFreeFormObject}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_t *{{baseName}}_local_nonprim = NULL; - {{^required}}if ({{{baseName}}}) { {{/required}} - {{{baseName}}}_local_nonprim = {{complexType}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_parseFromJSON({{{baseName}}}); //nonprimitive + {{^isFreeFormObject}}{{complexType}}{{/isFreeFormObject}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_t *{{name}}_local_nonprim = NULL; + {{^required}}if ({{{name}}}) { {{/required}} + {{{name}}}_local_nonprim = {{complexType}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_parseFromJSON({{{name}}}); //nonprimitive {{/isEnum}} {{/isModel}} {{#isUuid}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //uuid } {{/isUuid}} {{#isEmail}} - {{^required}}if ({{{baseName}}}) { {{/required}} - if(!cJSON_IsString({{{baseName}}})) + {{^required}}if ({{{name}}}) { {{/required}} + if(!cJSON_IsString({{{name}}})) { goto end; //email } {{/isEmail}} {{#isFreeFormObject}} - object_t *{{baseName}}_local_object = NULL; - {{^required}}if ({{{baseName}}}) { {{/required}} - {{{baseName}}}_local_object = object_parseFromJSON({{{baseName}}}); //object + object_t *{{name}}_local_object = NULL; + {{^required}}if ({{{name}}}) { {{/required}} + {{{name}}}_local_object = object_parseFromJSON({{{name}}}); //object {{/isFreeFormObject}} {{/isPrimitiveType}} {{/isContainer}} @@ -584,64 +584,64 @@ fail: {{#isListContainer}} {{#isPrimitiveType}} list_t *{{{name}}}List; - {{^required}}if ({{{baseName}}}) { {{/required}} + {{^required}}if ({{{name}}}) { {{/required}} cJSON *{{{name}}}_local; - if(!cJSON_IsArray({{{baseName}}})) { + if(!cJSON_IsArray({{{name}}})) { goto end;//primitive container } {{{name}}}List = list_create(); - cJSON_ArrayForEach({{{name}}}_local, {{{baseName}}}) + cJSON_ArrayForEach({{{name}}}_local, {{{name}}}) { {{#items}} {{#isString}} - if(!cJSON_IsString({{{baseName}}}_local)) + if(!cJSON_IsString({{{name}}}_local)) { goto end; } - list_addElement({{{baseName}}}List , strdup({{{baseName}}}_local->valuestring)); + list_addElement({{{name}}}List , strdup({{{name}}}_local->valuestring)); {{/isString}} {{^isString}} - if(!cJSON_IsNumber({{{baseName}}}_local)) + if(!cJSON_IsNumber({{{name}}}_local)) { goto end; } - list_addElement({{{baseName}}}List , &{{{baseName}}}_local->valuedouble); + list_addElement({{{name}}}List , &{{{name}}}_local->valuedouble); {{/isString}} {{/items}} } {{/isPrimitiveType}} {{^isPrimitiveType}} - list_t *{{{baseName}}}List; - {{^required}}if ({{{baseName}}}) { {{/required}} - cJSON *{{{baseName}}}_local_nonprimitive; - if(!cJSON_IsArray({{{baseName}}})){ + list_t *{{{name}}}List; + {{^required}}if ({{{name}}}) { {{/required}} + cJSON *{{{name}}}_local_nonprimitive; + if(!cJSON_IsArray({{{name}}})){ goto end; //nonprimitive container } - {{{baseName}}}List = list_create(); + {{{name}}}List = list_create(); - cJSON_ArrayForEach({{{baseName}}}_local_nonprimitive,{{{baseName}}} ) + cJSON_ArrayForEach({{{name}}}_local_nonprimitive,{{{name}}} ) { - if(!cJSON_IsObject({{{baseName}}}_local_nonprimitive)){ + if(!cJSON_IsObject({{{name}}}_local_nonprimitive)){ goto end; } - {{#isEnum}}{{#items}}{{datatypeWithEnum}}_e {{/items}}{{/isEnum}}{{^isEnum}}{{complexType}}_t *{{/isEnum}}{{{baseName}}}Item = {{complexType}}_parseFromJSON({{{baseName}}}_local_nonprimitive); + {{#isEnum}}{{#items}}{{datatypeWithEnum}}_e {{/items}}{{/isEnum}}{{^isEnum}}{{complexType}}_t *{{/isEnum}}{{{name}}}Item = {{complexType}}_parseFromJSON({{{name}}}_local_nonprimitive); - list_addElement({{{baseName}}}List, {{#isEnum}}{{#items}}(void *){{/items}}{{/isEnum}}{{{baseName}}}Item); + list_addElement({{{name}}}List, {{#isEnum}}{{#items}}(void *){{/items}}{{/isEnum}}{{{name}}}Item); } {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} list_t *{{{complexType}}}List; - {{^required}}if ({{{baseName}}}) { {{/required}} + {{^required}}if ({{{name}}}) { {{/required}} cJSON *{{{complexType}}}_local_map; - if(!cJSON_IsObject({{{baseName}}})) { + if(!cJSON_IsObject({{{name}}})) { goto end;//primitive map container } {{{complexType}}}List = list_create(); keyValuePair_t *localMapKeyPair; - cJSON_ArrayForEach({{{complexType}}}_local_map, {{{baseName}}}) + cJSON_ArrayForEach({{{complexType}}}_local_map, {{{name}}}) { {{#isString}} if(!cJSON_IsString({{{complexType}}}_local_map)) @@ -674,64 +674,64 @@ fail: {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}_local_nonprim_enum{{^required}} : -1{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_nonprim_enum{{^required}} : -1{{/required}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{^isEnum}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}_local_nonprim{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_nonprim{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{/isModel}} {{#isUuid}} - {{^required}}{{{baseName}}} ? {{/required}}strdup({{{baseName}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}strdup({{{name}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isUuid}} {{#isEmail}} - {{^required}}{{{baseName}}} ? {{/required}}strdup({{{baseName}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}strdup({{{name}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isEmail}} {{#isFreeFormObject}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}_local_object{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_object{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isFreeFormObject}} {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}->valuedouble{{^required}} : 0{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}->valuedouble{{^required}} : 0{{/required}}{{#hasMore}},{{/hasMore}} {{/isNumeric}} {{#isBoolean}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}->valueint{{^required}} : 0{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}->valueint{{^required}} : 0{{/required}}{{#hasMore}},{{/hasMore}} {{/isBoolean}} {{#isEnum}} {{#isString}} - {{^required}}{{{baseName}}} ? {{/required}}{{baseName}}Variable{{^required}} : -1{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{name}}Variable{{^required}} : -1{{/required}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{^isEnum}} {{#isString}} - {{^required}}{{{baseName}}} ? {{/required}}strdup({{{baseName}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}strdup({{{name}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{#isByteArray}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}->valueint{{^required}} : 0{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}->valueint{{^required}} : 0{{/required}}{{#hasMore}},{{/hasMore}} {{/isByteArray}} {{#isBinary}} - {{^required}}{{{baseName}}} ? {{/required}}decoded_str_{{{baseName}}}{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}decoded_str_{{{name}}}{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isBinary}} {{#isDate}} - {{^required}}{{{baseName}}} ? {{/required}}strdup({{{baseName}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}strdup({{{name}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isDate}} {{#isDateTime}} - {{^required}}{{{baseName}}} ? {{/required}}strdup({{{baseName}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}strdup({{{name}}}->valuestring){{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isDateTime}} {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - {{^required}}{{{baseName}}} ? {{/required}}{{{name}}}List{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}List{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isPrimitiveType}} {{^isPrimitiveType}} - {{^required}}{{{baseName}}} ? {{/required}}{{{baseName}}}List{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}List{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - {{^required}}{{{baseName}}} ? {{/required}}{{{complexType}}}List{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} + {{^required}}{{{name}}} ? {{/required}}{{{complexType}}}List{{^required}} : NULL{{/required}}{{#hasMore}},{{/hasMore}} {{/isMapContainer}} {{/isContainer}} {{/vars}} diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache index a67e2fbd6c2..780e148cbae 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache @@ -36,12 +36,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_e {{classname}}); {{^isModel}} {{#isEnum}} {{#allowableValues}} - typedef enum { {{#enumVars}} {{{value}}}{{#first}} = 0{{/first}}{{^-last}},{{/-last}}{{/enumVars}} } {{baseName}}_e; + typedef enum { {{#enumVars}} {{{value}}}{{#first}} = 0{{/first}}{{^-last}},{{/-last}}{{/enumVars}} } {{name}}_e; {{/allowableValues}} - char* {{baseName}}_ToString({{baseName}}_e {{baseName}}); + char* {{name}}_ToString({{name}}_e {{name}}); - {{baseName}}_e {{baseName}}_FromString(char* {{baseName}}); + {{name}}_e {{name}}_FromString(char* {{name}}); {{/isEnum}} {{/isModel}} {{/isContainer}} @@ -50,12 +50,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_e {{classname}}); {{^isModel}} {{#isEnum}} {{#allowableValues}} - typedef enum { {{#enumVars}} {{{value}}}{{^-last}},{{/-last}}{{/enumVars}} } {{baseName}}_e; + typedef enum { {{#enumVars}} {{{value}}}{{^-last}},{{/-last}}{{/enumVars}} } {{name}}_e; {{/allowableValues}} - char* {{baseName}}_ToString({{baseName}}_e {{baseName}}); + char* {{name}}_ToString({{name}}_e {{name}}); - {{baseName}}_e {{baseName}}_FromString(char* {{baseName}}); + {{name}}_e {{name}}_FromString(char* {{name}}); {{/isEnum}} {{/isModel}} {{/items}} @@ -69,64 +69,64 @@ typedef struct {{classname}}_t { {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatype}}_e {{baseName}}; //enum model + {{datatype}}_e {{name}}; //enum model {{/isEnum}} {{^isEnum}} - {{datatype}}_t *{{baseName}}; //model + {{datatype}}_t *{{name}}; //model {{/isEnum}} {{/isModel}} {{#isUuid}} - {{datatype}} *{{baseName}}; // uuid + {{datatype}} *{{name}}; // uuid {{/isUuid}} {{#isEmail}} - {{datatype}} *{{baseName}}; // email + {{datatype}} *{{name}}; // email {{/isEmail}} {{#isFreeFormObject}} - {{datatype}}_t *{{baseName}}; //object + {{datatype}}_t *{{name}}; //object {{/isFreeFormObject}} {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{baseName}}; //numeric + {{datatype}} {{name}}; //numeric {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{baseName}}; //boolean + {{datatype}} {{name}}; //boolean {{/isBoolean}} {{#isEnum}} {{#isString}} - {{baseName}}_e {{baseName}}; //enum + {{name}}_e {{name}}; //enum {{/isString}} {{/isEnum}} {{^isEnum}} {{#isString}} - {{datatype}} *{{baseName}}; // string + {{datatype}} *{{name}}; // string {{/isString}} {{/isEnum}} {{#isByteArray}} - {{datatype}} {{baseName}}; //Byte + {{datatype}} {{name}}; //Byte {{/isByteArray}} {{#isBinary}} - {{datatype}} {{baseName}}; //binary + {{datatype}} {{name}}; //binary {{/isBinary}} {{#isDate}} - {{datatype}} *{{baseName}}; //date + {{datatype}} *{{name}}; //date {{/isDate}} {{#isDateTime}} - {{datatype}} *{{baseName}}; //date time + {{datatype}} *{{name}}; //date time {{/isDateTime}} {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - {{datatype}}_t *{{baseName}}; //primitive container + {{datatype}}_t *{{name}}; //primitive container {{/isPrimitiveType}} {{^isPrimitiveType}} - {{datatype}}_t *{{baseName}}; //nonprimitive container + {{datatype}}_t *{{name}}; //nonprimitive container {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - {{datatype}} {{baseName}}; //map + {{datatype}} {{name}}; //map {{/isMapContainer}} {{/isContainer}} {{/vars}} @@ -139,64 +139,64 @@ typedef struct {{classname}}_t { {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatype}}_e {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{^isEnum}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{/isModel}} {{#isUuid}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isUuid}} {{#isEmail}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isEmail}} {{#isFreeFormObject}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isFreeFormObject}} {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isBoolean}} {{#isEnum}} {{#isString}} - {{baseName}}_e {{baseName}}{{#hasMore}},{{/hasMore}} + {{name}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{^isEnum}} {{#isString}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{#isByteArray}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isByteArray}} {{#isBinary}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isBinary}} {{#isDate}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isDate}} {{#isDateTime}} - {{datatype}} *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} *{{name}}{{#hasMore}},{{/hasMore}} {{/isDateTime}} {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#isListContainer}} {{#isPrimitiveType}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isPrimitiveType}} {{^isPrimitiveType}} - {{datatype}}_t *{{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} {{/isPrimitiveType}} {{/isListContainer}} {{#isMapContainer}} - {{datatype}} {{baseName}}{{#hasMore}},{{/hasMore}} + {{datatype}} {{name}}{{#hasMore}},{{/hasMore}} {{/isMapContainer}} {{/isContainer}} {{/vars}} From a6957488056510386dac7ebb3c03f4f919dd44c2 Mon Sep 17 00:00:00 2001 From: Erik Timmers Date: Tue, 10 Dec 2019 14:43:16 +0100 Subject: [PATCH 91/96] Add isCircularReference to properties (#4553) --- .../openapitools/codegen/CodegenProperty.java | 10 ++-- .../openapitools/codegen/DefaultCodegen.java | 51 +++++++++++++++++++ .../codegen/languages/ElmClientCodegen.java | 1 + .../codegen/DefaultCodegenTest.java | 51 +++++++++++++++++++ .../src/test/resources/3_0/recursion.yaml | 33 ++++++++++++ 5 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/recursion.yaml 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 2b36fd5a227..16edb14adf8 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 @@ -62,6 +62,7 @@ public class CodegenProperty implements Cloneable { public boolean isWriteOnly; public boolean isNullable; public boolean isSelfReference; + public boolean isCircularReference; public List _enum; public Map allowableValues; public CodegenProperty items; @@ -498,6 +499,7 @@ public class CodegenProperty implements Cloneable { sb.append(", isWriteOnly=").append(isWriteOnly); sb.append(", isNullable=").append(isNullable); sb.append(", isSelfReference=").append(isSelfReference); + sb.append(", isCircularReference=").append(isCircularReference); sb.append(", _enum=").append(_enum); sb.append(", allowableValues=").append(allowableValues); sb.append(", items=").append(items); @@ -558,6 +560,7 @@ public class CodegenProperty implements Cloneable { isWriteOnly == that.isWriteOnly && isNullable == that.isNullable && isSelfReference == that.isSelfReference && + isCircularReference == that.isCircularReference && hasValidation == that.hasValidation && isInherited == that.isInherited && isXmlAttribute == that.isXmlAttribute && @@ -613,8 +616,9 @@ public class CodegenProperty implements Cloneable { hasMoreNonReadOnly, isPrimitiveType, isModel, isContainer, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBinary, isFile, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isListContainer, isMapContainer, isEnum, isReadOnly, - isWriteOnly, isNullable, isSelfReference, _enum, allowableValues, items, mostInnerItems, - vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase, nameInSnakeCase, - enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName, xmlNamespace, isXmlWrapped); + isWriteOnly, isNullable, isSelfReference, isCircularReference, _enum, allowableValues, items, + mostInnerItems, vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase, + nameInSnakeCase, enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName, xmlNamespace, + isXmlWrapped); } } 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 1099af7cd49..f35967ea2e9 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 @@ -328,10 +328,61 @@ public class DefaultCodegen implements CodegenConfig { } } } + setCircularReferences(allModels); return objs; } + public void setCircularReferences(Map models) { + final Map> dependencyMap = models.entrySet().stream() + .collect(Collectors.toMap(Entry::getKey, entry -> getModelDependencies(entry.getValue()))); + + models.keySet().forEach(name -> setCircularReferencesOnProperties(name, dependencyMap)); + } + + private List getModelDependencies(CodegenModel model) { + return model.getAllVars().stream() + .map(prop -> { + if (prop.isContainer) { + return prop.items.dataType == null ? null : prop; + } + return prop.dataType == null ? null : prop; + }) + .filter(prop -> prop != null) + .collect(Collectors.toList()); + } + + private void setCircularReferencesOnProperties(final String root, + final Map> dependencyMap) { + dependencyMap.getOrDefault(root, new ArrayList<>()).stream() + .forEach(prop -> { + final List unvisited = + Collections.singletonList(prop.isContainer ? prop.items.dataType : prop.dataType); + prop.isCircularReference = isCircularReference(root, + new HashSet<>(), + new ArrayList<>(unvisited), + dependencyMap); + }); + } + + private boolean isCircularReference(final String root, + final Set visited, + final List unvisited, + final Map> dependencyMap) { + for (int i = 0; i < unvisited.size(); i++) { + final String next = unvisited.get(i); + if (!visited.contains(next)) { + if (next.equals(root)) { + return true; + } + dependencyMap.getOrDefault(next, new ArrayList<>()) + .forEach(prop -> unvisited.add(prop.isContainer ? prop.items.dataType : prop.dataType)); + visited.add(next); + } + } + return false; + } + // override with any special post-processing @SuppressWarnings("static-method") public Map postProcessModels(Map objs) { 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 d192dd80010..15bfcb01036 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 @@ -347,6 +347,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { }); } } + setCircularReferences(allModels); for (Map.Entry entry : objs.entrySet()) { Map inner = (Map) entry.getValue(); List> models = (List>) inner.get("models"); 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 41e83880097..0f25bf02e8c 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 @@ -1113,4 +1113,55 @@ public class DefaultCodegenTest { Assert.assertFalse(result); } } + + @Test + public void testCircularReferencesDetection() { + // given + DefaultCodegen codegen = new DefaultCodegen(); + final CodegenProperty inboundOut = new CodegenProperty(); + inboundOut.baseName = "out"; + inboundOut.dataType = "RoundA"; + final CodegenProperty roundANext = new CodegenProperty(); + roundANext.baseName = "next"; + roundANext.dataType = "RoundB"; + final CodegenProperty roundBNext = new CodegenProperty(); + roundBNext.baseName = "next"; + roundBNext.dataType = "RoundC"; + final CodegenProperty roundCNext = new CodegenProperty(); + roundCNext.baseName = "next"; + roundCNext.dataType = "RoundA"; + final CodegenProperty roundCOut = new CodegenProperty(); + roundCOut.baseName = "out"; + roundCOut.dataType = "Outbound"; + final CodegenModel inboundModel = new CodegenModel(); + inboundModel.setDataType("Inbound"); + inboundModel.setAllVars(Collections.singletonList(inboundOut)); + final CodegenModel roundAModel = new CodegenModel(); + roundAModel.setDataType("RoundA"); + roundAModel.setAllVars(Collections.singletonList(roundANext)); + final CodegenModel roundBModel = new CodegenModel(); + roundBModel.setDataType("RoundB"); + roundBModel.setAllVars(Collections.singletonList(roundBNext)); + final CodegenModel roundCModel = new CodegenModel(); + roundCModel.setDataType("RoundC"); + roundCModel.setAllVars(Arrays.asList(roundCNext, roundCOut)); + final CodegenModel outboundModel = new CodegenModel(); + outboundModel.setDataType("Outbound"); + final Map models = new HashMap<>(); + models.put("Inbound", inboundModel); + models.put("RoundA", roundAModel); + models.put("RoundB", roundBModel); + models.put("RoundC", roundCModel); + models.put("Outbound", outboundModel); + + // when + codegen.setCircularReferences(models); + + // then + Assert.assertFalse(inboundOut.isCircularReference); + Assert.assertTrue(roundANext.isCircularReference); + Assert.assertTrue(roundBNext.isCircularReference); + Assert.assertTrue(roundCNext.isCircularReference); + Assert.assertFalse(roundCOut.isCircularReference); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/recursion.yaml b/modules/openapi-generator/src/test/resources/3_0/recursion.yaml new file mode 100644 index 00000000000..dafd73e8872 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/recursion.yaml @@ -0,0 +1,33 @@ +openapi: 3.0.0 +info: + description: Test + version: 1.0.0 + title: OpenAPI +paths: + /foo: + post: + description: '' + responses: + '200': + description: Response + content: + application/json: + schema: + $ref: '#/components/schemas/Foo' +components: + schemas: + Foo: + type: object + properties: + foo: + $ref: '#/components/schemas/Foo' + Bar: + type: object + properties: + baz: + $ref: '#/components/schemas/Baz' + Baz: + type: object + properties: + bar: + $ref: '#/components/schemas/Bar' From b19d241be737636de58cecdcf20adfbe6a5046fd Mon Sep 17 00:00:00 2001 From: Roland Franssen Date: Tue, 10 Dec 2019 14:52:36 +0100 Subject: [PATCH 92/96] [PHP] ensure rewound guzzle response body (#4744) * [PHP] ensure rewound guzzle response body * recompile php client --- .../src/main/resources/php/api.mustache | 8 +-- .../lib/Api/AnotherFakeApi.php | 8 +-- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 58 ++++++++--------- .../lib/Api/FakeClassnameTags123Api.php | 8 +-- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 48 +++++++------- .../OpenAPIClient-php/lib/Api/StoreApi.php | 26 ++++---- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 28 ++++---- .../lib/Api/AnotherFakeApi.php | 8 +-- .../OpenAPIClient-php/lib/Api/DefaultApi.php | 8 +-- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 64 +++++++++---------- .../lib/Api/FakeClassnameTags123Api.php | 8 +-- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 48 +++++++------- .../OpenAPIClient-php/lib/Api/StoreApi.php | 26 ++++---- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 28 ++++---- 14 files changed, 187 insertions(+), 187 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/php/api.mustache b/modules/openapi-generator/src/main/resources/php/api.mustache index 1debf085696..34fc0b3057f 100644 --- a/modules/openapi-generator/src/main/resources/php/api.mustache +++ b/modules/openapi-generator/src/main/resources/php/api.mustache @@ -189,7 +189,7 @@ use {{invokerPackage}}\ObjectSerializer; "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -219,7 +219,7 @@ use {{invokerPackage}}\ObjectSerializer; if ('{{dataType}}' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -238,7 +238,7 @@ use {{invokerPackage}}\ObjectSerializer; if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -353,7 +353,7 @@ use {{invokerPackage}}\ObjectSerializer; if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ 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 4d01e48008b..5cf4e964777 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -156,7 +156,7 @@ class AnotherFakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -181,7 +181,7 @@ class AnotherFakeApi if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -196,7 +196,7 @@ class AnotherFakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -263,7 +263,7 @@ class AnotherFakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ 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 527f71a9497..ff8e6d69248 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -155,7 +155,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -371,7 +371,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -396,7 +396,7 @@ class FakeApi if ('bool' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -411,7 +411,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -478,7 +478,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -628,7 +628,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -653,7 +653,7 @@ class FakeApi if ('\OpenAPI\Client\Model\OuterComposite' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -668,7 +668,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -735,7 +735,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -885,7 +885,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -910,7 +910,7 @@ class FakeApi if ('float' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -925,7 +925,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -992,7 +992,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1142,7 +1142,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1167,7 +1167,7 @@ class FakeApi if ('string' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1182,7 +1182,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1249,7 +1249,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1398,7 +1398,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1615,7 +1615,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1848,7 +1848,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1873,7 +1873,7 @@ class FakeApi if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1888,7 +1888,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1955,7 +1955,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2140,7 +2140,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -2535,7 +2535,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -2818,7 +2818,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -3099,7 +3099,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -3320,7 +3320,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -3557,7 +3557,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } 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 249310a4c93..2d0d87e5d1a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -156,7 +156,7 @@ class FakeClassnameTags123Api "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -181,7 +181,7 @@ class FakeClassnameTags123Api if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -196,7 +196,7 @@ class FakeClassnameTags123Api if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -263,7 +263,7 @@ class FakeClassnameTags123Api if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ 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 d51e1eb0d67..1d162e01629 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -155,7 +155,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -380,7 +380,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -616,7 +616,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -641,7 +641,7 @@ class PetApi if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -656,7 +656,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -723,7 +723,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -891,7 +891,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -916,7 +916,7 @@ class PetApi if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -931,7 +931,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -998,7 +998,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1166,7 +1166,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1191,7 +1191,7 @@ class PetApi if ('\OpenAPI\Client\Model\Pet' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1206,7 +1206,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1273,7 +1273,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1442,7 +1442,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1669,7 +1669,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1916,7 +1916,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1941,7 +1941,7 @@ class PetApi if ('\OpenAPI\Client\Model\ApiResponse' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1956,7 +1956,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2027,7 +2027,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2211,7 +2211,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -2236,7 +2236,7 @@ class PetApi if ('\OpenAPI\Client\Model\ApiResponse' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2251,7 +2251,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2322,7 +2322,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ 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 0c303fc86eb..f3951f8005d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -155,7 +155,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -378,7 +378,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -403,7 +403,7 @@ class StoreApi if ('map[string,int]' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -418,7 +418,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -483,7 +483,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -638,7 +638,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -663,7 +663,7 @@ class StoreApi if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -678,7 +678,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -745,7 +745,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -917,7 +917,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -942,7 +942,7 @@ class StoreApi if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -957,7 +957,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1024,7 +1024,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ 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 fa9839fa21d..7e756a60421 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -155,7 +155,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -374,7 +374,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -593,7 +593,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -812,7 +812,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1037,7 +1037,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1062,7 +1062,7 @@ class UserApi if ('\OpenAPI\Client\Model\User' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1077,7 +1077,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1144,7 +1144,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1311,7 +1311,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1336,7 +1336,7 @@ class UserApi if ('string' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1351,7 +1351,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1420,7 +1420,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1589,7 +1589,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1798,7 +1798,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index a85ca08dc2a..54b6b23e56b 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -156,7 +156,7 @@ class AnotherFakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -181,7 +181,7 @@ class AnotherFakeApi if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -196,7 +196,7 @@ class AnotherFakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -263,7 +263,7 @@ class AnotherFakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php index 5aa7cb7bd5f..6509b1adbe8 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php @@ -150,7 +150,7 @@ class DefaultApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -175,7 +175,7 @@ class DefaultApi if ('\OpenAPI\Client\Model\InlineResponseDefault' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -190,7 +190,7 @@ class DefaultApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -255,7 +255,7 @@ class DefaultApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 5c600e51d71..a4fb9c82888 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -154,7 +154,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -179,7 +179,7 @@ class FakeApi if ('\OpenAPI\Client\Model\HealthCheckResult' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -194,7 +194,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -259,7 +259,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -405,7 +405,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -430,7 +430,7 @@ class FakeApi if ('bool' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -445,7 +445,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -512,7 +512,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -662,7 +662,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -687,7 +687,7 @@ class FakeApi if ('\OpenAPI\Client\Model\OuterComposite' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -702,7 +702,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -769,7 +769,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -919,7 +919,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -944,7 +944,7 @@ class FakeApi if ('float' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -959,7 +959,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1026,7 +1026,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1176,7 +1176,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1201,7 +1201,7 @@ class FakeApi if ('string' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1216,7 +1216,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1283,7 +1283,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1432,7 +1432,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1649,7 +1649,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1882,7 +1882,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1907,7 +1907,7 @@ class FakeApi if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1922,7 +1922,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1989,7 +1989,7 @@ class FakeApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2174,7 +2174,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -2569,7 +2569,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -2852,7 +2852,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -3137,7 +3137,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -3358,7 +3358,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -3595,7 +3595,7 @@ class FakeApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index 68745dca6bb..d02129c035d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -156,7 +156,7 @@ class FakeClassnameTags123Api "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -181,7 +181,7 @@ class FakeClassnameTags123Api if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -196,7 +196,7 @@ class FakeClassnameTags123Api if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -263,7 +263,7 @@ class FakeClassnameTags123Api if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index 09a92a02a57..380f77af259 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -163,7 +163,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -406,7 +406,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -642,7 +642,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -667,7 +667,7 @@ class PetApi if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -682,7 +682,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -749,7 +749,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -917,7 +917,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -942,7 +942,7 @@ class PetApi if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -957,7 +957,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1024,7 +1024,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1192,7 +1192,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1217,7 +1217,7 @@ class PetApi if ('\OpenAPI\Client\Model\Pet' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1232,7 +1232,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1299,7 +1299,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1476,7 +1476,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1721,7 +1721,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1968,7 +1968,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1993,7 +1993,7 @@ class PetApi if ('\OpenAPI\Client\Model\ApiResponse' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2008,7 +2008,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2079,7 +2079,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2263,7 +2263,7 @@ class PetApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -2288,7 +2288,7 @@ class PetApi if ('\OpenAPI\Client\Model\ApiResponse' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2303,7 +2303,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -2374,7 +2374,7 @@ class PetApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 1287dd6d578..a62aebf8e48 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -155,7 +155,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -378,7 +378,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -403,7 +403,7 @@ class StoreApi if ('map[string,int]' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -418,7 +418,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -483,7 +483,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -638,7 +638,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -663,7 +663,7 @@ class StoreApi if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -678,7 +678,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -745,7 +745,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -917,7 +917,7 @@ class StoreApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -942,7 +942,7 @@ class StoreApi if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -957,7 +957,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1024,7 +1024,7 @@ class StoreApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index 2625f3a843e..fac6d96dbd4 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -155,7 +155,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -374,7 +374,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -593,7 +593,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -812,7 +812,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1037,7 +1037,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1062,7 +1062,7 @@ class UserApi if ('\OpenAPI\Client\Model\User' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1077,7 +1077,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1144,7 +1144,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1311,7 +1311,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1336,7 +1336,7 @@ class UserApi if ('string' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1351,7 +1351,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1420,7 +1420,7 @@ class UserApi if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { - $content = $responseBody->getContents(); + $content = (string) $responseBody; } return [ @@ -1589,7 +1589,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } @@ -1798,7 +1798,7 @@ class UserApi "[{$e->getCode()}] {$e->getMessage()}", $e->getCode(), $e->getResponse() ? $e->getResponse()->getHeaders() : null, - $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null + $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); } From 9754ef4f88fcb6def929a50c97cb31f1990d317c Mon Sep 17 00:00:00 2001 From: Sai Giridhar P Date: Wed, 11 Dec 2019 08:54:12 +0530 Subject: [PATCH 93/96] fix(r): Fixing the exports (#4761) --- .../openapi-generator/src/main/resources/r/NAMESPACE.mustache | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/r/NAMESPACE.mustache b/modules/openapi-generator/src/main/resources/r/NAMESPACE.mustache index b92da8e8b6e..fae0e548448 100644 --- a/modules/openapi-generator/src/main/resources/r/NAMESPACE.mustache +++ b/modules/openapi-generator/src/main/resources/r/NAMESPACE.mustache @@ -4,6 +4,9 @@ # Core export(ApiClient) export(ApiResponse) +{{#useRlangExceptionHandling}} +export(ApiException) +{{/useRlangExceptionHandling}} # Models {{#models}} From 21ad2869b199428fbe937ee46ec9f64308b346b2 Mon Sep 17 00:00:00 2001 From: patrickcisco Date: Tue, 10 Dec 2019 22:04:15 -0800 Subject: [PATCH 94/96] fixing an issue where serverPort from additional-properties is interpreted as a string... causing the default to always be used (#4764) --- .../codegen/languages/GoServerCodegen.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 211dcdadb99..e37f80bf409 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 @@ -144,10 +144,19 @@ public class GoServerCodegen extends AbstractGoCodegen { if (additionalProperties.containsKey("serverPort") && additionalProperties.get("serverPort") instanceof Integer) { this.setServerPort((int) additionalProperties.get("serverPort")); + } else if (additionalProperties.containsKey("serverPort") && additionalProperties.get("serverPort") instanceof String){ + try { + this.setServerPort(Integer.parseInt(additionalProperties.get("serverPort").toString())); + additionalProperties.put("serverPort", serverPort); + } + catch (NumberFormatException e) + { + LOGGER.warn("serverPort is not a valid integer... defaulting to {}", serverPort); + additionalProperties.put("serverPort", serverPort); + } } else { additionalProperties.put("serverPort", serverPort); } - if (additionalProperties.containsKey("featureCORS")) { this.setFeatureCORS(convertPropertyToBooleanAndWriteBack("featureCORS")); } else { From fe9121967f27ab3231577b7afcfb947c6a1c56c9 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 12 Dec 2019 12:00:05 +0800 Subject: [PATCH 95/96] fix shippable errors (#4775) --- shippable.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shippable.yml b/shippable.yml index c9ff665bebe..fe67ed0ea62 100644 --- a/shippable.yml +++ b/shippable.yml @@ -10,6 +10,10 @@ build: - $HOME/.stack - $SHIPPABLE_REPO_DIR/samples/client/petstore/elixir/deps ci: + # fix shippable apt-get errors + - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 23E7166788B63E1E 6A030B21BA07F4FB 4B8EC3BAABDC4346 EB3E94ADBE1229CF 960B2B2623A0BD5D 6B05F25D762E3157 + - rm /etc/apt/sources.list.d/jonathonf-ubuntu-backports-xenial.list + # - java -version - mvn --quiet clean install -Dmaven.javadoc.skip=true # ensure all modifications created by 'mature' generators are in the git repo From 2277934d5e4ffc0541fd74a5928bf012995ac93e Mon Sep 17 00:00:00 2001 From: facundomedica <14063057+facundomedica@users.noreply.github.com> Date: Thu, 12 Dec 2019 06:18:07 -0300 Subject: [PATCH 96/96] [Kotlin] fix basic authentication compilation issue (#4772) * Fix #4771 * update samples --- .../libraries/jvm/infrastructure/ApiClient.kt.mustache | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 1 + 8 files changed, 8 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm/infrastructure/ApiClient.kt.mustache index ff7e68a98fc..d4b5a587d4c 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm/infrastructure/ApiClient.kt.mustache @@ -1,5 +1,6 @@ package {{packageName}}.infrastructure +import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody {{#jvm-okhttp3}} 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 ca294b411c8..b397f322247 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,5 +1,6 @@ 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/ApiClient.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 3b6246b9ee4..e9201e8a2a9 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,5 +1,6 @@ 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/ApiClient.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 443c18a8353..7a83b73f51c 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,5 +1,6 @@ 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-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 3eb74d9ddfc..162f8d23473 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,5 +1,6 @@ package org.openapitools.client.infrastructure +import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.MediaType 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 443c18a8353..7a83b73f51c 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,5 +1,6 @@ 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/ApiClient.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 443c18a8353..7a83b73f51c 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,5 +1,6 @@ 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/ApiClient.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 443c18a8353..7a83b73f51c 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,5 +1,6 @@ package org.openapitools.client.infrastructure +import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody