Commit Graph

8130 Commits

Author SHA1 Message Date
alisters
0de482da2b Kotlin client: add volley library support (#10253)
* Add basic jvm-volley folder to enable it as a library

* Add JVM_VOLLEY to the KotlinClientCodegen as a library option (using Retrofit2 processing for now)

* Temporary checkin of generated code and kotlinfied version for use in new template

* Added Kotlin-ified api invoker and request objects, update Kotlin client codgen for volley

* Add Android specific build.gradle mustache file to jvm-volley library

* Hardcode SDK version and build tools version in build.gradle template, add extra repository for Android Gradle build tools

* Add Android manifest to generated code

* Add Kotlin dependencies and plugins to build gradle template

* WIP: Create basic API templating for jvm-volley

* Add ApiException and parameter validation, create path variable using ApiInvoker

* Build queryParams and headerParams

* Add VolleyRequest template

* WIP: Injecting context and default API invoker into APIs (non compiling)

* Add DefaultInvoker stub and update API to inject context

* Add request queue generation to the DefaultInvoker

* Fix up compile errors in the invoker

* Cleanup unrequired templates

* Update templates

* Add constructor overloads to inject stack or network into request queue

* Fix compile errors with request queue generation

* Fix compile errors

* Al'll fix it for you.....

* WIP compile fixes

* More compile fixes

* Generate to java directory and kotlin-ify auth code

* More syntax fixes in templates

* Almost left it in a working state, fixing that .... now...

* Switch builder method based on model existence constraints - body and response

* Add coroutine logic to APIs and pass through listeners to the requests, various other fixes.

* Use reflection and type tokens to work around clazz issues on generics

* Add POST, PATCH and PUT to RequestFactory

* More templating magic

* Fix Steve, the human compiler's errors again !

* Add CLI option for generating room models

* Configure the room model package

* Add initial room model templating and generation

* Add room model generation implementation

* Implement toRoom function on models to convert model to room model

* Bug fixes, transformers to and from room models

* Add query parameters to URL generation

* Fix issues with gson type conversion, add type adapters to gson instance

* Fix issues with older API versions and Java8 libraries,

* Add request factory interface

* API template tidy up

* Update IRequestFactory to include companion object, minor tidy ups

* Remove @Keep annotations from room templates

* Rename toRoomModel and toApiModel functions

* Add empty companion object to generated room model

* Add ITransformStorage interface to allow polymorphic transforms to room models

* Add content type into GsonRequest

* Move gson serialization of request body into GsonRequest

* Update request factory to take header factories

* Remove the generated comparision code

* Move the generateRoomModels switch into the KotlinClientCodegen class

* Move room model generation out of default generator

* Updates for auth

* Finalise removal of kotlin elements from default generator

* Hoist room model logic out of abstractKotlin into kotlin client codegen

* Revert AbstractKotlinCodegen

* Revert Codegen constants to remove base generator changes out of our new library

* Revert data class template changes, add data class body check to Kotlin Client codegen

* Add sample generation yaml file for jvm-volley library

* Update JVM-Volley readme for generateRoomModels flag

* Remove unused template files, get auth compiling but non functional, clean build of warnings

* Generate sample generated code

* Add not implemented method for oauth

* Add unit test for KotlinClientCodegen generateRoomModel flag

* Remove accidental hard coding of src/main/java source folder

* Push changed generated sample files

* Move and rename IStorable inside the volley library

* Inject retry policy into API definition, re-run sample and doc scripts

* Add generic post processors

* Update samples after generator changes

* Fix some compile errors with the pet store sample

* Fix duplicate auth companion object and import generation

* Reinstate query and form parameter code generation

* Add check for unsupported serialization libraries

* Fix broken unit tests

* Regenerate samples

* AN-233 Update request factory to allow custom gsonadapters

* update `GsonRequest.mustache` and `RequestFactoy.mustache` to use `Map<Type, Any>` instead of `Map<Type, Object>` to better fit kotlin conventions

* Update readme with better examples and design notes

* Update readme with info about gson serializers and adapters for polymorphic types

* Updated samples

* Merge from upstream

* Address review comments

* Update samples

* Samples

* Update docs

* Remove DateAdapter generated file, template and it's inclusion as a supporting file in favour of localDateTime

* Review comment cleanup for initial PR #10253 - cleaner auth key in parameter string handling

* Review comment - add a kotlin version parameter to the build scripts

* Updated samples

* Missing changes from build.mustache

* Regenerate samples for build.gradle changes

* Merge from master and generate samples

* Remove serializer as a supporting file from jvm-volley - it's serialisation is not a singleton and configured differently via gson request and dependency injection

* Remove singleton serializer from jvm-volley generation as it's not used

Co-authored-by: Alister Shipman <alister.shipman@greater.com.au>
Co-authored-by: Steve Telford <steven.telford@greater.com.au>
Co-authored-by: Leigh Cooper <leigh.cooper@greater.com.au>
Co-authored-by: Michael Hewett <y2trooper@gmail.com>
2021-12-20 14:59:11 +08:00
William Cheng
b72eba90cd [java][okhttp-gson-nextgen] better oneOf implementation (#11146)
* add validJsonObject method

* add check for null

* fix list model generation

* fix optional fields validation

* add tests

* fix variable naming

* update tests

* add fromJson in oneOf, add tests

* convert JSON to static

* remove trailing space

* add fromString methods to all models

* add toJson, fix anyOf template

* remove workarounds

* undo changes to tests

* skip file schema test

* add new file
2021-12-18 23:22:55 +08:00
Yuriy Belenko
d65bf8d1a6 [php-slim4] Partial generation (#11069)
* Update tests folder

I forgot to update tests folder in latest PR. Fixing my mistake.

* Implement part generation
2021-12-17 16:11:06 +08:00
Yuriy Belenko
7dbcac3b6c [php-slim4] Switch to Packaged Body Parsing Middleware (#9562)
* Remove custom JSON parsing middleware

* Enable packaged Body Parsing Middleware

Ref:
https://www.slimframework.com/docs/v4/middleware/body-parsing.html

* Refresh samples
2021-12-17 15:24:21 +08:00
Tal Kirshboim
acadba4bfb Declare Kotlin API classes as open (#11129) 2021-12-17 12:12:47 +08:00
Josh Burton
6f6d4f8c02 [dart-dio-next] Removes dioLibrary option (#10931)
As there is no longer a fork of the dio library this option can be removed
2021-12-17 10:36:42 +08:00
Samuel Nelson
80d1eedc20 Fix deprecation issue since akka-http 2.6 (#11048) 2021-12-17 10:20:26 +08:00
Bruno Coelho
42d635b463 [swift5][client] improve code formatting (#11124)
* [swift][client] improve code formatting with multiple response as

* [kotlin][vertx] update sample project
2021-12-17 10:19:41 +08:00
Mostafa Moradian
fedc54af9a [K6 Generator] various enhancements (request body example data extraction, support for generating scenario tests and load tests out of the box, and much more) (#11106)
* Further K6 OpenAPI generator enhancements

 * request body example data extraction
 * request grouping and ordering
 * response visibility
 * request data extraction for chaining requests

Signed-off-by: Michael H. Siemaszko <mhs@into.software>

* Further K6 OpenAPI generator enhancements

 - regenerated samples

Signed-off-by: Michael H. Siemaszko <mhs@into.software>

* Fix suggested changes by linter

* Fix extra spaces in the template

* Log exception

* Rename function signature to camelCase

* Address comments on Big-O

* Move declaration of variable near the usage

* Add config file for generating k6 script

* Regenerate k6 script

* Regenerate samples

* Fix predicate

* Fix missing import

Co-authored-by: Michael H. Siemaszko <mhs@into.software>
2021-12-17 10:18:10 +08:00
Tomáš Čermák
9b65513bb1 [Protobuf-Schema] Namespace updates (#11115)
* [Protobuf-Schema] Namespace updates

* [Protobuf-Schema] Petstore sample updated
2021-12-17 10:12:11 +08:00
William Cheng
b2daa5a836 update jackson-databind-nullable to 0.2.2 (#11121) 2021-12-15 11:41:16 +08:00
Tal Kirshboim
3eb0465ec4 Update samples (#11119) 2021-12-15 11:38:10 +08:00
William Cheng
e5d58a35a2 update dependencies to newer versions (java) (#11116) 2021-12-14 18:32:37 +08:00
basyskom-dege
8fbd11073a [QT][C++]fixed integration test for Oauth (#10921)
* fixed missing package, fixed namespace issues

* using older function to check if token is valid

* using time.h to check if token is valid
2021-12-14 18:23:18 +08:00
Bruno Coelho
eb224db540 [kotlin][client] remove old Date usage (#11082)
* [kotlin][client] remove old Date usage

* [kotlin][client] remove old Date usage
2021-12-14 16:03:12 +08:00
Bruno Coelho
5416e92d19 [swift5][client] add support for async/await in iOS 13 and above (#11109) 2021-12-14 15:58:19 +08:00
William Cheng
fbb61658df [kotlin][client] rename ApiInfrastructureResponse to ApiResponse (#11094)
* rename ApiInfrastructureResponse to ApiResponse

* mark ApiResponse as reserved word

* update samples, docs

* fix typo
2021-12-12 16:32:08 +08:00
Bruno Coelho
3247903caa [kotlin][client] update request exceptions (#11065) 2021-12-11 21:48:59 +08:00
Guus Bloemsma
0236f84c11 [kotlin-client] Allowing vendor types for json (#10758)
* Using the first serializable 'consumes' mediaType
Using all deserializable 'produces' mediaTypes
Matching json vendor types as json

* updating the generated samples
2021-12-11 21:48:00 +08:00
Justin Black
cee5f75912 Feat adds content and header properties to CodegenResponse (#11046)
* Adds responseHeaders to codegenResponse

* Sets response headers in codegenResponse

* Samples updated

* Adds test of response headers

* Adds content to CodegenResponse

* Sets codegenResponse content

* Tests added, test content-data.yaml spec update

* Adds mediaTypeSchemaSuffix input to getContent

* Tests updated

* Updates how response content schema names are set

* Adds missing Locale to String.format invocations
2021-12-10 13:49:29 -08:00
Deniz Dogan
c94d2b2331 [swift5] Fix missing case for FormDataEncoding#encode (#11064)
Fixes #11062
2021-12-10 14:08:32 +08:00
William Cheng
550c0781dc [okhttp-gson-next-gen] new option for error object (#10995)
* add error body and type to api exception class

* add option to specify error object

* add option, update api doc with better error handling

* update samples

* update doc
2021-12-10 02:08:17 +08:00
Tomasz Prus
b755ae288a [Python] Add option to select/detect content-type. (#10978)
* [Python] Add option to select/detect content-type.

* Regenerate samples after rebase.

* Update samples.

* test: fix assertion
2021-12-08 13:15:26 -08:00
Justin Black
347b75a024 Fixes paramName and dataType for request body anyType parameters (#11075)
* Adds request body of any type

* Fixes param dataType, paramName, and baseName

* Uses updateRequestBodyForPrimitiveType as the else case for anyType request bodies like the code used to do

* Samples updated

* Samples regenerated
2021-12-08 13:03:08 -08:00
Bruno Coelho
c941044701 [swift5][client] allow request cancellation and authentication flow to work together (#11019)
* [swift5][client] allow request cancellation and authentication flow to work together

* [swift5][client] allow request cancellation and authentication flow to work together

* [swift5][client] rename OpenAPIRequestCancellable to RequestTask

* [swift5][client] rename OpenAPIRequestCancellable to RequestTask
2021-12-09 01:07:49 +08:00
William Cheng
2ff6f833e2 add more tests for oneOf (#11068) 2021-12-08 09:39:42 +08:00
William Cheng
a489a2e828 [java][okhttp-gson-next-gen] better error message in oneOf/anyOf (#11059)
* better error message

* update tests
2021-12-07 21:38:54 +08:00
William Cheng
192126be6b [java][okhttp-gson-next-gen] fix serialization, add tests (#11057)
* fix serialization, add tests

* add new files
2021-12-07 16:22:46 +08:00
William Cheng
000a18d3b9 [java][okhttp-gson-nextgen] Better null handling in oneOf, anyOf model (#11056)
* better null handling in oneOf model

* update anyof with better null handling

* add null test
2021-12-07 15:11:06 +08:00
William Cheng
95377f68bf [C#][functions] minor improvements. (#11034)
* better code format

* mark generator as beta

* update readme

* minor code format change

* remove docs

* add Docs

* remove docs

* add back docs

* mv yaml
2021-12-06 23:18:48 +08:00
Yuriy Belenko
186842ea19 [php-slim4] Bump required PHP version to 7.4 (#11039)
* Change minimum PHP version to 7.4

* Refresh samples
2021-12-05 15:47:12 +08:00
Peter Leibiger
ecddd4cff1 [dart][dio][built_value] Fix missing serializer factory builders for additionalProperties (#11011)
Refactor the addition of custom serializer factories.
2021-12-04 14:32:36 +08:00
Tal Kirshboim
8fc6172c6d Build and test Kotlin Multiplatform samples in CI (#11023) 2021-12-04 13:06:37 +08:00
Jarrod Parkes
15f45711a8 add swift5 option for generating frozen enums (#11013)
* add swift5 option for generating frozen enums

* use case unknownDefault to avoid conflicts

* update comments to reflect unknownDefault case

* set default values for unknown case to avoid conflict

* dont need vendor extensions to detect enum raw data type

* move CaseIterableDefaultsLast into models mustache template

* comment catch all case and add support for other types

* add frozen enums to ci pipeline

* remove extraneous edit to extensions template

* remove left over protocols files

* small comment and case adjustments
2021-12-04 13:05:51 +08:00
Tal Kirshboim
3719035787 Fix HTTP client configuration object freezing issue on iOS (#11012) 2021-12-04 12:56:40 +08:00
cghislai
b915ad99a8 typescript-angular: Add supports for v13 (#10877) 2021-12-03 09:10:40 +01:00
Deniz Dogan
56e7f811bc Add Hashable to oneOf enums (#10971)
Fixes #10970
2021-12-01 14:49:00 +08:00
William Cheng
a745f053bd skip custom adapter for parent object (#10998) 2021-12-01 14:20:39 +08:00
Fumito Nakazawa
a24d314006 [swift5] Use enum as parameter instead of raw type (#10967)
* Fix enum type

* Remove operation_id

* Fix samples
2021-12-01 00:34:15 +08:00
William Cheng
b061bd2146 [Java][Okhttp] Add oneOf support (#10875)
* add custom gson deserializer

* add check for additional fields, required fields

* add tests for custom deserializer

* add custom adapter

* add custom adapter

* register type adapter factory

* comment out custom deserializer and use adapter instead

* add okhttp-gson-nextgen

* add new files

* restore okhttp-gson

* switch to adapter

* remove custom de/serializer

* add comment

* update tests

* test nextgen in ci

* update doc

* use full model name in JSON.java

* undo changes

* add oneof discriminator support

* fix anyOf

* remove mappings

* add more tests

* fix oneof deserialization, add more tests

* add error body and type to api exception class

* JSON to use instance variables/methods

* Revert "add error body and type to api exception class"

This reverts commit 07f34e2c45.
2021-11-30 15:33:42 +08:00
jiangyuan
e7ac0eec4b [Python] fix model.mustache import (#10988)
* fix model.mustache import

* add samples file change

Co-authored-by: jiangyuan04 <jiangyuan04@baidu.com>
2021-11-29 17:50:19 -08:00
Tal Kirshboim
6406e5c031 [Kotlin][Multiplatform] Support custom Ktor HTTP client configuration (#10968)
* Support using a custom Ktor HTTP client configuration

* Remove ApiClient.kt secondary constructor
2021-11-30 09:33:42 +08:00
Justin Black
8702f24f05 Adds request body content data to allow multiple content types to be sent to servers (#10973)
* Adds CodegenMediaType and CodegenEncoding

* Adds partial new code to set Parameter content data

* Adds content to CodegenParameter

* Sets content for request bodies

* Adds testParameterContent

* Adds testRequestBodyContent
2021-11-29 09:31:38 -08:00
Alexander Karkossa
8e2e200e18 fix: changed Any to kotlin.Any (#10985) 2021-11-30 00:42:22 +08:00
Kevin Chen
3d92df5a41 [Java][okhttp-gson] Support text/plain body (#10885)
* support serialize RequestBody with contentType text/plain

* add Serialize test

* update test comment
2021-11-26 15:04:19 +08:00
Fumito Nakazawa
a620853216 [swift5] Refactor encodeToJSON (#10961)
* Add protocol extension method

* execute sample script

* Add Packing.cmake

* Revert "Add Packing.cmake"

This reverts commit cb52547fe3.

* Remove empty lines

* Revert FILES

* Add Packing.cmake
2021-11-26 00:55:06 +08:00
Berlin Cho
8e303150ae [Java][resttemplate] Support URL queryParams Comma encoding (#10958)
* Java Encode comma (with unit tests)

* fix PMD warnings
2021-11-25 16:12:55 +08:00
Steve Mason
5bd0452893 [Java][Native] Drain InputStream when no response is being read (#10956)
The [docs for ofInputStream](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.BodySubscribers.html#ofInputStream()) say:

> To ensure that all resources associated with the corresponding exchange are properly released the caller must ensure to either read all lines until the stream is exhausted, or call BaseStream.close() if it is unable or unwilling to do so. Calling close before exhausting the stream may cause the underlying HTTP connection to be closed and prevent it from being reused for subsequent operations.

When ObjectMapper.readValue is called with an InputStream it implicitly closes it, but when the library is not expecting a return type it's not passing the InputStream to Jackson, so the stream needs to be manually drained and closed as per the docs

Failure to do this leads to a leak of HttpClient socket handles, and ultimately the exception `java.net.BindException: Cannot assign requested address` when trying to make API calls
2021-11-25 14:44:57 +08:00
AJ Rice
08eaafa871 Add operation level servers support for java okhttp-gson client (#10925)
* Add Operation Servers to {operation}Call method

* add getter/setter methods

Add methods for hostIndex and customBaseUrl

* Fix return types for getters

* Add custom baseUrl logic

if you dont specifically declare a custom base url using the set method then it uses the 1st server in the operation host index array

if no custom url is set and the operation base path array is empty however, the call throws an exception

* Update server selection logic

First checks to see if a custom url is provided

If not, checks to see if operation level server is defined and uses the supplied host index (default 0)

If neither is supplied, uses the ApiClient default base path

* Update samples and docs
2021-11-25 14:17:50 +08:00
William Cheng
1953e70661 [C#][netcore] minor code improvement (#10951)
* minor code improvement

* better code format
2021-11-25 13:28:33 +08:00