forked from loafle/openapi-generator-original
Fixes issue where object in query parameter generates a NPE (#12010)
* Fixes issue 11946 * Fixes items assignment for deep object query params * Adds fix for inline query param object schemas * Fixes keyword name, changes it from mapBean[keyword] * Reverts version file
This commit is contained in:
parent
0c825ad301
commit
a4e2dde745
@ -269,6 +269,8 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
// A cache to efficiently lookup schema `toModelName()` based on the schema Key
|
// A cache to efficiently lookup schema `toModelName()` based on the schema Key
|
||||||
private final Map<String, String> schemaKeyToModelNameCache = new HashMap<>();
|
private final Map<String, String> schemaKeyToModelNameCache = new HashMap<>();
|
||||||
|
|
||||||
|
protected boolean loadDeepObjectIntoItems = true;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CliOption> cliOptions() {
|
public List<CliOption> cliOptions() {
|
||||||
return cliOptions;
|
return cliOptions;
|
||||||
@ -4748,10 +4750,12 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
codegenParameter.pattern = toRegularExpression(parameterSchema.getPattern());
|
codegenParameter.pattern = toRegularExpression(parameterSchema.getPattern());
|
||||||
|
|
||||||
if (codegenParameter.isQueryParam && codegenParameter.isDeepObject) {
|
if (codegenParameter.isQueryParam && codegenParameter.isDeepObject && loadDeepObjectIntoItems) {
|
||||||
Schema schema = ModelUtils.getSchema(openAPI, codegenParameter.dataType);
|
Schema schema = parameterSchema;
|
||||||
|
if (schema.get$ref() != null) {
|
||||||
|
schema = ModelUtils.getReferencedSchema(openAPI, schema);
|
||||||
|
}
|
||||||
codegenParameter.items = fromProperty(codegenParameter.paramName, schema);
|
codegenParameter.items = fromProperty(codegenParameter.paramName, schema);
|
||||||
// TODO Check why schema is actually null for a schema of type object defined inline
|
|
||||||
// https://swagger.io/docs/specification/serialization/
|
// https://swagger.io/docs/specification/serialization/
|
||||||
if (schema != null) {
|
if (schema != null) {
|
||||||
Map<String, Schema<?>> properties = schema.getProperties();
|
Map<String, Schema<?>> properties = schema.getProperties();
|
||||||
|
@ -87,6 +87,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
|
|||||||
|
|
||||||
public PythonExperimentalClientCodegen() {
|
public PythonExperimentalClientCodegen() {
|
||||||
super();
|
super();
|
||||||
|
loadDeepObjectIntoItems = false;
|
||||||
|
|
||||||
modifyFeatureSet(features -> features
|
modifyFeatureSet(features -> features
|
||||||
.includeSchemaSupportFeatures(
|
.includeSchemaSupportFeatures(
|
||||||
|
@ -1490,6 +1490,46 @@ paths:
|
|||||||
allOf:
|
allOf:
|
||||||
- type: string
|
- type: string
|
||||||
minLength: 1
|
minLength: 1
|
||||||
|
'/fake/objInQuery':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- fake
|
||||||
|
summary: user list
|
||||||
|
operationId: objectInQuery
|
||||||
|
parameters:
|
||||||
|
- name: mapBean
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: mapBean
|
||||||
|
style: deepObject
|
||||||
|
explode: true
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
keyword:
|
||||||
|
title: keyword
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ok
|
||||||
|
'/fake/refObjInQuery':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- fake
|
||||||
|
summary: user list
|
||||||
|
operationId: refObjectInQuery
|
||||||
|
parameters:
|
||||||
|
- name: mapBean
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: mapBean
|
||||||
|
style: deepObject
|
||||||
|
explode: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Foo'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ok
|
||||||
servers:
|
servers:
|
||||||
- url: 'http://{server}.swagger.io:{port}/v2'
|
- url: 'http://{server}.swagger.io:{port}/v2'
|
||||||
description: petstore server
|
description: petstore server
|
||||||
|
@ -79,6 +79,7 @@ docs/IntegerMin15.md
|
|||||||
docs/IsoscelesTriangle.md
|
docs/IsoscelesTriangle.md
|
||||||
docs/IsoscelesTriangleAllOf.md
|
docs/IsoscelesTriangleAllOf.md
|
||||||
docs/Mammal.md
|
docs/Mammal.md
|
||||||
|
docs/MapBean.md
|
||||||
docs/MapTest.md
|
docs/MapTest.md
|
||||||
docs/MixedPropertiesAndAdditionalPropertiesClass.md
|
docs/MixedPropertiesAndAdditionalPropertiesClass.md
|
||||||
docs/Model200Response.md
|
docs/Model200Response.md
|
||||||
@ -216,6 +217,7 @@ petstore_api/model/integer_min15.py
|
|||||||
petstore_api/model/isosceles_triangle.py
|
petstore_api/model/isosceles_triangle.py
|
||||||
petstore_api/model/isosceles_triangle_all_of.py
|
petstore_api/model/isosceles_triangle_all_of.py
|
||||||
petstore_api/model/mammal.py
|
petstore_api/model/mammal.py
|
||||||
|
petstore_api/model/map_bean.py
|
||||||
petstore_api/model/map_test.py
|
petstore_api/model/map_test.py
|
||||||
petstore_api/model/mixed_properties_and_additional_properties_class.py
|
petstore_api/model/mixed_properties_and_additional_properties_class.py
|
||||||
petstore_api/model/model200_response.py
|
petstore_api/model/model200_response.py
|
||||||
|
@ -102,9 +102,11 @@ Class | Method | HTTP request | Description
|
|||||||
*FakeApi* | [**json_form_data**](docs/FakeApi.md#json_form_data) | **GET** /fake/jsonFormData | test json serialization of form data
|
*FakeApi* | [**json_form_data**](docs/FakeApi.md#json_form_data) | **GET** /fake/jsonFormData | test json serialization of form data
|
||||||
*FakeApi* | [**mammal**](docs/FakeApi.md#mammal) | **POST** /fake/refs/mammal |
|
*FakeApi* | [**mammal**](docs/FakeApi.md#mammal) | **POST** /fake/refs/mammal |
|
||||||
*FakeApi* | [**number_with_validations**](docs/FakeApi.md#number_with_validations) | **POST** /fake/refs/number |
|
*FakeApi* | [**number_with_validations**](docs/FakeApi.md#number_with_validations) | **POST** /fake/refs/number |
|
||||||
|
*FakeApi* | [**object_in_query**](docs/FakeApi.md#object_in_query) | **GET** /fake/objInQuery | user list
|
||||||
*FakeApi* | [**object_model_with_ref_props**](docs/FakeApi.md#object_model_with_ref_props) | **POST** /fake/refs/object_model_with_ref_props |
|
*FakeApi* | [**object_model_with_ref_props**](docs/FakeApi.md#object_model_with_ref_props) | **POST** /fake/refs/object_model_with_ref_props |
|
||||||
*FakeApi* | [**parameter_collisions**](docs/FakeApi.md#parameter_collisions) | **POST** /fake/parameterCollisions/{1}/{aB}/{Ab}/{self}/{A-B}/ | parameter collision case
|
*FakeApi* | [**parameter_collisions**](docs/FakeApi.md#parameter_collisions) | **POST** /fake/parameterCollisions/{1}/{aB}/{Ab}/{self}/{A-B}/ | parameter collision case
|
||||||
*FakeApi* | [**query_parameter_collection_format**](docs/FakeApi.md#query_parameter_collection_format) | **PUT** /fake/test-query-paramters |
|
*FakeApi* | [**query_parameter_collection_format**](docs/FakeApi.md#query_parameter_collection_format) | **PUT** /fake/test-query-paramters |
|
||||||
|
*FakeApi* | [**ref_object_in_query**](docs/FakeApi.md#ref_object_in_query) | **GET** /fake/refObjInQuery | user list
|
||||||
*FakeApi* | [**string**](docs/FakeApi.md#string) | **POST** /fake/refs/string |
|
*FakeApi* | [**string**](docs/FakeApi.md#string) | **POST** /fake/refs/string |
|
||||||
*FakeApi* | [**string_enum**](docs/FakeApi.md#string_enum) | **POST** /fake/refs/enum |
|
*FakeApi* | [**string_enum**](docs/FakeApi.md#string_enum) | **POST** /fake/refs/enum |
|
||||||
*FakeApi* | [**upload_download_file**](docs/FakeApi.md#upload_download_file) | **POST** /fake/uploadDownloadFile | uploads a file and downloads a file using application/octet-stream
|
*FakeApi* | [**upload_download_file**](docs/FakeApi.md#upload_download_file) | **POST** /fake/uploadDownloadFile | uploads a file and downloads a file using application/octet-stream
|
||||||
@ -208,6 +210,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [IsoscelesTriangle](docs/IsoscelesTriangle.md)
|
- [IsoscelesTriangle](docs/IsoscelesTriangle.md)
|
||||||
- [IsoscelesTriangleAllOf](docs/IsoscelesTriangleAllOf.md)
|
- [IsoscelesTriangleAllOf](docs/IsoscelesTriangleAllOf.md)
|
||||||
- [Mammal](docs/Mammal.md)
|
- [Mammal](docs/Mammal.md)
|
||||||
|
- [MapBean](docs/MapBean.md)
|
||||||
- [MapTest](docs/MapTest.md)
|
- [MapTest](docs/MapTest.md)
|
||||||
- [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
|
- [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
|
||||||
- [Model200Response](docs/Model200Response.md)
|
- [Model200Response](docs/Model200Response.md)
|
||||||
|
@ -22,9 +22,11 @@ Method | HTTP request | Description
|
|||||||
[**json_form_data**](FakeApi.md#json_form_data) | **GET** /fake/jsonFormData | test json serialization of form data
|
[**json_form_data**](FakeApi.md#json_form_data) | **GET** /fake/jsonFormData | test json serialization of form data
|
||||||
[**mammal**](FakeApi.md#mammal) | **POST** /fake/refs/mammal |
|
[**mammal**](FakeApi.md#mammal) | **POST** /fake/refs/mammal |
|
||||||
[**number_with_validations**](FakeApi.md#number_with_validations) | **POST** /fake/refs/number |
|
[**number_with_validations**](FakeApi.md#number_with_validations) | **POST** /fake/refs/number |
|
||||||
|
[**object_in_query**](FakeApi.md#object_in_query) | **GET** /fake/objInQuery | user list
|
||||||
[**object_model_with_ref_props**](FakeApi.md#object_model_with_ref_props) | **POST** /fake/refs/object_model_with_ref_props |
|
[**object_model_with_ref_props**](FakeApi.md#object_model_with_ref_props) | **POST** /fake/refs/object_model_with_ref_props |
|
||||||
[**parameter_collisions**](FakeApi.md#parameter_collisions) | **POST** /fake/parameterCollisions/{1}/{aB}/{Ab}/{self}/{A-B}/ | parameter collision case
|
[**parameter_collisions**](FakeApi.md#parameter_collisions) | **POST** /fake/parameterCollisions/{1}/{aB}/{Ab}/{self}/{A-B}/ | parameter collision case
|
||||||
[**query_parameter_collection_format**](FakeApi.md#query_parameter_collection_format) | **PUT** /fake/test-query-paramters |
|
[**query_parameter_collection_format**](FakeApi.md#query_parameter_collection_format) | **PUT** /fake/test-query-paramters |
|
||||||
|
[**ref_object_in_query**](FakeApi.md#ref_object_in_query) | **GET** /fake/refObjInQuery | user list
|
||||||
[**string**](FakeApi.md#string) | **POST** /fake/refs/string |
|
[**string**](FakeApi.md#string) | **POST** /fake/refs/string |
|
||||||
[**string_enum**](FakeApi.md#string_enum) | **POST** /fake/refs/enum |
|
[**string_enum**](FakeApi.md#string_enum) | **POST** /fake/refs/enum |
|
||||||
[**upload_download_file**](FakeApi.md#upload_download_file) | **POST** /fake/uploadDownloadFile | uploads a file and downloads a file using application/octet-stream
|
[**upload_download_file**](FakeApi.md#upload_download_file) | **POST** /fake/uploadDownloadFile | uploads a file and downloads a file using application/octet-stream
|
||||||
@ -1786,6 +1788,89 @@ No authorization required
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **object_in_query**
|
||||||
|
> object_in_query()
|
||||||
|
|
||||||
|
user list
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import petstore_api
|
||||||
|
from petstore_api.api import fake_api
|
||||||
|
from petstore_api.model.map_bean import MapBean
|
||||||
|
from pprint import pprint
|
||||||
|
# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = petstore_api.Configuration(
|
||||||
|
host = "http://petstore.swagger.io:80/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with petstore_api.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = fake_api.FakeApi(api_client)
|
||||||
|
|
||||||
|
# example passing only optional values
|
||||||
|
query_params = {
|
||||||
|
'mapBean': dict(
|
||||||
|
keyword="keyword_example",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
try:
|
||||||
|
# user list
|
||||||
|
api_response = api_instance.object_in_query(
|
||||||
|
query_params=query_params,
|
||||||
|
)
|
||||||
|
except petstore_api.ApiException as e:
|
||||||
|
print("Exception when calling FakeApi->object_in_query: %s\n" % e)
|
||||||
|
```
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
query_params | RequestQueryParams | |
|
||||||
|
stream | bool | default is False | if True then the response.content will be streamed and loaded from a file like object. When downloading a file, set this to True to force the code to deserialize the content to a FileSchema file
|
||||||
|
timeout | typing.Optional[typing.Union[int, typing.Tuple]] | default is None | the timeout used by the rest client
|
||||||
|
skip_deserialization | bool | default is False | when True, headers and body will be unset and an instance of api_client.ApiResponseWithoutDeserialization will be returned
|
||||||
|
|
||||||
|
### query_params
|
||||||
|
#### RequestQueryParams
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
mapBean | MapBeanSchema | | optional
|
||||||
|
|
||||||
|
|
||||||
|
#### MapBeanSchema
|
||||||
|
Type | Description | Notes
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
[**{str: (bool, date, datetime, dict, float, int, list, str, none_type)}**](MapBean.md) | |
|
||||||
|
|
||||||
|
|
||||||
|
### Return Types, Responses
|
||||||
|
|
||||||
|
Code | Class | Description
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
n/a | api_client.ApiResponseWithoutDeserialization | When skip_deserialization is True this response is returned
|
||||||
|
200 | ApiResponseFor200 | ok
|
||||||
|
|
||||||
|
#### ApiResponseFor200
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
response | urllib3.HTTPResponse | Raw response |
|
||||||
|
body | Unset | body was not defined |
|
||||||
|
headers | Unset | headers were not defined |
|
||||||
|
|
||||||
|
|
||||||
|
void (empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
# **object_model_with_ref_props**
|
# **object_model_with_ref_props**
|
||||||
> ObjectModelWithRefProps object_model_with_ref_props()
|
> ObjectModelWithRefProps object_model_with_ref_props()
|
||||||
|
|
||||||
@ -2297,6 +2382,89 @@ body | Unset | body was not defined |
|
|||||||
headers | Unset | headers were not defined |
|
headers | Unset | headers were not defined |
|
||||||
|
|
||||||
|
|
||||||
|
void (empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **ref_object_in_query**
|
||||||
|
> ref_object_in_query()
|
||||||
|
|
||||||
|
user list
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import petstore_api
|
||||||
|
from petstore_api.api import fake_api
|
||||||
|
from petstore_api.model.foo import Foo
|
||||||
|
from pprint import pprint
|
||||||
|
# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = petstore_api.Configuration(
|
||||||
|
host = "http://petstore.swagger.io:80/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with petstore_api.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = fake_api.FakeApi(api_client)
|
||||||
|
|
||||||
|
# example passing only optional values
|
||||||
|
query_params = {
|
||||||
|
'mapBean': Foo(
|
||||||
|
bar="bar",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
try:
|
||||||
|
# user list
|
||||||
|
api_response = api_instance.ref_object_in_query(
|
||||||
|
query_params=query_params,
|
||||||
|
)
|
||||||
|
except petstore_api.ApiException as e:
|
||||||
|
print("Exception when calling FakeApi->ref_object_in_query: %s\n" % e)
|
||||||
|
```
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
query_params | RequestQueryParams | |
|
||||||
|
stream | bool | default is False | if True then the response.content will be streamed and loaded from a file like object. When downloading a file, set this to True to force the code to deserialize the content to a FileSchema file
|
||||||
|
timeout | typing.Optional[typing.Union[int, typing.Tuple]] | default is None | the timeout used by the rest client
|
||||||
|
skip_deserialization | bool | default is False | when True, headers and body will be unset and an instance of api_client.ApiResponseWithoutDeserialization will be returned
|
||||||
|
|
||||||
|
### query_params
|
||||||
|
#### RequestQueryParams
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
mapBean | MapBeanSchema | | optional
|
||||||
|
|
||||||
|
|
||||||
|
#### MapBeanSchema
|
||||||
|
Type | Description | Notes
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
[**Foo**](Foo.md) | |
|
||||||
|
|
||||||
|
|
||||||
|
### Return Types, Responses
|
||||||
|
|
||||||
|
Code | Class | Description
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
n/a | api_client.ApiResponseWithoutDeserialization | When skip_deserialization is True this response is returned
|
||||||
|
200 | ApiResponseFor200 | ok
|
||||||
|
|
||||||
|
#### ApiResponseFor200
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
response | urllib3.HTTPResponse | Raw response |
|
||||||
|
body | Unset | body was not defined |
|
||||||
|
headers | Unset | headers were not defined |
|
||||||
|
|
||||||
|
|
||||||
void (empty response body)
|
void (empty response body)
|
||||||
|
|
||||||
### Authorization
|
### Authorization
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
# MapBean
|
||||||
|
|
||||||
|
#### Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**keyword** | **str** | | [optional]
|
||||||
|
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
@ -28,9 +28,11 @@ from petstore_api.api.fake_api_endpoints.inline_composition import InlineComposi
|
|||||||
from petstore_api.api.fake_api_endpoints.json_form_data import JsonFormData
|
from petstore_api.api.fake_api_endpoints.json_form_data import JsonFormData
|
||||||
from petstore_api.api.fake_api_endpoints.mammal import Mammal
|
from petstore_api.api.fake_api_endpoints.mammal import Mammal
|
||||||
from petstore_api.api.fake_api_endpoints.number_with_validations import NumberWithValidations
|
from petstore_api.api.fake_api_endpoints.number_with_validations import NumberWithValidations
|
||||||
|
from petstore_api.api.fake_api_endpoints.object_in_query import ObjectInQuery
|
||||||
from petstore_api.api.fake_api_endpoints.object_model_with_ref_props import ObjectModelWithRefProps
|
from petstore_api.api.fake_api_endpoints.object_model_with_ref_props import ObjectModelWithRefProps
|
||||||
from petstore_api.api.fake_api_endpoints.parameter_collisions import ParameterCollisions
|
from petstore_api.api.fake_api_endpoints.parameter_collisions import ParameterCollisions
|
||||||
from petstore_api.api.fake_api_endpoints.query_parameter_collection_format import QueryParameterCollectionFormat
|
from petstore_api.api.fake_api_endpoints.query_parameter_collection_format import QueryParameterCollectionFormat
|
||||||
|
from petstore_api.api.fake_api_endpoints.ref_object_in_query import RefObjectInQuery
|
||||||
from petstore_api.api.fake_api_endpoints.string import String
|
from petstore_api.api.fake_api_endpoints.string import String
|
||||||
from petstore_api.api.fake_api_endpoints.string_enum import StringEnum
|
from petstore_api.api.fake_api_endpoints.string_enum import StringEnum
|
||||||
from petstore_api.api.fake_api_endpoints.upload_download_file import UploadDownloadFile
|
from petstore_api.api.fake_api_endpoints.upload_download_file import UploadDownloadFile
|
||||||
@ -57,9 +59,11 @@ class FakeApi(
|
|||||||
JsonFormData,
|
JsonFormData,
|
||||||
Mammal,
|
Mammal,
|
||||||
NumberWithValidations,
|
NumberWithValidations,
|
||||||
|
ObjectInQuery,
|
||||||
ObjectModelWithRefProps,
|
ObjectModelWithRefProps,
|
||||||
ParameterCollisions,
|
ParameterCollisions,
|
||||||
QueryParameterCollectionFormat,
|
QueryParameterCollectionFormat,
|
||||||
|
RefObjectInQuery,
|
||||||
String,
|
String,
|
||||||
StringEnum,
|
StringEnum,
|
||||||
UploadDownloadFile,
|
UploadDownloadFile,
|
||||||
|
@ -0,0 +1,182 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
import re # noqa: F401
|
||||||
|
import sys # noqa: F401
|
||||||
|
import typing
|
||||||
|
import urllib3
|
||||||
|
|
||||||
|
from petstore_api import api_client, exceptions
|
||||||
|
import decimal # noqa: F401
|
||||||
|
from datetime import date, datetime # noqa: F401
|
||||||
|
from frozendict import frozendict # noqa: F401
|
||||||
|
|
||||||
|
from petstore_api.schemas import ( # noqa: F401
|
||||||
|
AnyTypeSchema,
|
||||||
|
ComposedSchema,
|
||||||
|
DictSchema,
|
||||||
|
ListSchema,
|
||||||
|
StrSchema,
|
||||||
|
IntSchema,
|
||||||
|
Int32Schema,
|
||||||
|
Int64Schema,
|
||||||
|
Float32Schema,
|
||||||
|
Float64Schema,
|
||||||
|
NumberSchema,
|
||||||
|
DateSchema,
|
||||||
|
DateTimeSchema,
|
||||||
|
DecimalSchema,
|
||||||
|
BoolSchema,
|
||||||
|
BinarySchema,
|
||||||
|
NoneSchema,
|
||||||
|
none_type,
|
||||||
|
Configuration,
|
||||||
|
Unset,
|
||||||
|
unset,
|
||||||
|
ComposedBase,
|
||||||
|
ListBase,
|
||||||
|
DictBase,
|
||||||
|
NoneBase,
|
||||||
|
StrBase,
|
||||||
|
IntBase,
|
||||||
|
Int32Base,
|
||||||
|
Int64Base,
|
||||||
|
Float32Base,
|
||||||
|
Float64Base,
|
||||||
|
NumberBase,
|
||||||
|
DateBase,
|
||||||
|
DateTimeBase,
|
||||||
|
BoolBase,
|
||||||
|
BinaryBase,
|
||||||
|
Schema,
|
||||||
|
_SchemaValidator,
|
||||||
|
_SchemaTypeChecker,
|
||||||
|
_SchemaEnumMaker
|
||||||
|
)
|
||||||
|
|
||||||
|
from petstore_api.model.map_bean import MapBean
|
||||||
|
|
||||||
|
# query params
|
||||||
|
|
||||||
|
|
||||||
|
class MapBeanSchema(
|
||||||
|
DictSchema
|
||||||
|
):
|
||||||
|
keyword = StrSchema
|
||||||
|
|
||||||
|
|
||||||
|
def __new__(
|
||||||
|
cls,
|
||||||
|
*args: typing.Union[dict, frozendict, ],
|
||||||
|
keyword: typing.Union[keyword, Unset] = unset,
|
||||||
|
_configuration: typing.Optional[Configuration] = None,
|
||||||
|
**kwargs: typing.Type[Schema],
|
||||||
|
) -> 'MapBeanSchema':
|
||||||
|
return super().__new__(
|
||||||
|
cls,
|
||||||
|
*args,
|
||||||
|
keyword=keyword,
|
||||||
|
_configuration=_configuration,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
RequestRequiredQueryParams = typing.TypedDict(
|
||||||
|
'RequestRequiredQueryParams',
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
RequestOptionalQueryParams = typing.TypedDict(
|
||||||
|
'RequestOptionalQueryParams',
|
||||||
|
{
|
||||||
|
'mapBean': MapBeanSchema,
|
||||||
|
},
|
||||||
|
total=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RequestQueryParams(RequestRequiredQueryParams, RequestOptionalQueryParams):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
request_query_map_bean = api_client.QueryParameter(
|
||||||
|
name="mapBean",
|
||||||
|
style=api_client.ParameterStyle.DEEP_OBJECT,
|
||||||
|
schema=MapBeanSchema,
|
||||||
|
explode=True,
|
||||||
|
)
|
||||||
|
_path = '/fake/objInQuery'
|
||||||
|
_method = 'GET'
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ApiResponseFor200(api_client.ApiResponse):
|
||||||
|
response: urllib3.HTTPResponse
|
||||||
|
body: Unset = unset
|
||||||
|
headers: Unset = unset
|
||||||
|
|
||||||
|
|
||||||
|
_response_for_200 = api_client.OpenApiResponse(
|
||||||
|
response_cls=ApiResponseFor200,
|
||||||
|
)
|
||||||
|
_status_code_to_response = {
|
||||||
|
'200': _response_for_200,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectInQuery(api_client.Api):
|
||||||
|
|
||||||
|
def object_in_query(
|
||||||
|
self: api_client.Api,
|
||||||
|
query_params: RequestQueryParams = frozendict(),
|
||||||
|
stream: bool = False,
|
||||||
|
timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None,
|
||||||
|
skip_deserialization: bool = False,
|
||||||
|
) -> typing.Union[
|
||||||
|
ApiResponseFor200,
|
||||||
|
api_client.ApiResponseWithoutDeserialization
|
||||||
|
]:
|
||||||
|
"""
|
||||||
|
user list
|
||||||
|
:param skip_deserialization: If true then api_response.response will be set but
|
||||||
|
api_response.body and api_response.headers will not be deserialized into schema
|
||||||
|
class instances
|
||||||
|
"""
|
||||||
|
self._verify_typed_dict_inputs(RequestQueryParams, query_params)
|
||||||
|
|
||||||
|
_query_params = []
|
||||||
|
for parameter in (
|
||||||
|
request_query_map_bean,
|
||||||
|
):
|
||||||
|
parameter_data = query_params.get(parameter.name, unset)
|
||||||
|
if parameter_data is unset:
|
||||||
|
continue
|
||||||
|
serialized_data = parameter.serialize(parameter_data)
|
||||||
|
_query_params.extend(serialized_data)
|
||||||
|
# TODO add cookie handling
|
||||||
|
|
||||||
|
response = self.api_client.call_api(
|
||||||
|
resource_path=_path,
|
||||||
|
method=_method,
|
||||||
|
query_params=tuple(_query_params),
|
||||||
|
stream=stream,
|
||||||
|
timeout=timeout,
|
||||||
|
)
|
||||||
|
|
||||||
|
if skip_deserialization:
|
||||||
|
api_response = api_client.ApiResponseWithoutDeserialization(response=response)
|
||||||
|
else:
|
||||||
|
response_for_status = _status_code_to_response.get(str(response.status))
|
||||||
|
if response_for_status:
|
||||||
|
api_response = response_for_status.deserialize(response, self.api_client.configuration)
|
||||||
|
else:
|
||||||
|
api_response = api_client.ApiResponseWithoutDeserialization(response=response)
|
||||||
|
|
||||||
|
if not 200 <= response.status <= 299:
|
||||||
|
raise exceptions.ApiException(api_response=api_response)
|
||||||
|
|
||||||
|
return api_response
|
@ -0,0 +1,161 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
import re # noqa: F401
|
||||||
|
import sys # noqa: F401
|
||||||
|
import typing
|
||||||
|
import urllib3
|
||||||
|
|
||||||
|
from petstore_api import api_client, exceptions
|
||||||
|
import decimal # noqa: F401
|
||||||
|
from datetime import date, datetime # noqa: F401
|
||||||
|
from frozendict import frozendict # noqa: F401
|
||||||
|
|
||||||
|
from petstore_api.schemas import ( # noqa: F401
|
||||||
|
AnyTypeSchema,
|
||||||
|
ComposedSchema,
|
||||||
|
DictSchema,
|
||||||
|
ListSchema,
|
||||||
|
StrSchema,
|
||||||
|
IntSchema,
|
||||||
|
Int32Schema,
|
||||||
|
Int64Schema,
|
||||||
|
Float32Schema,
|
||||||
|
Float64Schema,
|
||||||
|
NumberSchema,
|
||||||
|
DateSchema,
|
||||||
|
DateTimeSchema,
|
||||||
|
DecimalSchema,
|
||||||
|
BoolSchema,
|
||||||
|
BinarySchema,
|
||||||
|
NoneSchema,
|
||||||
|
none_type,
|
||||||
|
Configuration,
|
||||||
|
Unset,
|
||||||
|
unset,
|
||||||
|
ComposedBase,
|
||||||
|
ListBase,
|
||||||
|
DictBase,
|
||||||
|
NoneBase,
|
||||||
|
StrBase,
|
||||||
|
IntBase,
|
||||||
|
Int32Base,
|
||||||
|
Int64Base,
|
||||||
|
Float32Base,
|
||||||
|
Float64Base,
|
||||||
|
NumberBase,
|
||||||
|
DateBase,
|
||||||
|
DateTimeBase,
|
||||||
|
BoolBase,
|
||||||
|
BinaryBase,
|
||||||
|
Schema,
|
||||||
|
_SchemaValidator,
|
||||||
|
_SchemaTypeChecker,
|
||||||
|
_SchemaEnumMaker
|
||||||
|
)
|
||||||
|
|
||||||
|
from petstore_api.model.foo import Foo
|
||||||
|
|
||||||
|
# query params
|
||||||
|
MapBeanSchema = Foo
|
||||||
|
RequestRequiredQueryParams = typing.TypedDict(
|
||||||
|
'RequestRequiredQueryParams',
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
RequestOptionalQueryParams = typing.TypedDict(
|
||||||
|
'RequestOptionalQueryParams',
|
||||||
|
{
|
||||||
|
'mapBean': MapBeanSchema,
|
||||||
|
},
|
||||||
|
total=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RequestQueryParams(RequestRequiredQueryParams, RequestOptionalQueryParams):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
request_query_map_bean = api_client.QueryParameter(
|
||||||
|
name="mapBean",
|
||||||
|
style=api_client.ParameterStyle.DEEP_OBJECT,
|
||||||
|
schema=MapBeanSchema,
|
||||||
|
explode=True,
|
||||||
|
)
|
||||||
|
_path = '/fake/refObjInQuery'
|
||||||
|
_method = 'GET'
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ApiResponseFor200(api_client.ApiResponse):
|
||||||
|
response: urllib3.HTTPResponse
|
||||||
|
body: Unset = unset
|
||||||
|
headers: Unset = unset
|
||||||
|
|
||||||
|
|
||||||
|
_response_for_200 = api_client.OpenApiResponse(
|
||||||
|
response_cls=ApiResponseFor200,
|
||||||
|
)
|
||||||
|
_status_code_to_response = {
|
||||||
|
'200': _response_for_200,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class RefObjectInQuery(api_client.Api):
|
||||||
|
|
||||||
|
def ref_object_in_query(
|
||||||
|
self: api_client.Api,
|
||||||
|
query_params: RequestQueryParams = frozendict(),
|
||||||
|
stream: bool = False,
|
||||||
|
timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None,
|
||||||
|
skip_deserialization: bool = False,
|
||||||
|
) -> typing.Union[
|
||||||
|
ApiResponseFor200,
|
||||||
|
api_client.ApiResponseWithoutDeserialization
|
||||||
|
]:
|
||||||
|
"""
|
||||||
|
user list
|
||||||
|
:param skip_deserialization: If true then api_response.response will be set but
|
||||||
|
api_response.body and api_response.headers will not be deserialized into schema
|
||||||
|
class instances
|
||||||
|
"""
|
||||||
|
self._verify_typed_dict_inputs(RequestQueryParams, query_params)
|
||||||
|
|
||||||
|
_query_params = []
|
||||||
|
for parameter in (
|
||||||
|
request_query_map_bean,
|
||||||
|
):
|
||||||
|
parameter_data = query_params.get(parameter.name, unset)
|
||||||
|
if parameter_data is unset:
|
||||||
|
continue
|
||||||
|
serialized_data = parameter.serialize(parameter_data)
|
||||||
|
_query_params.extend(serialized_data)
|
||||||
|
# TODO add cookie handling
|
||||||
|
|
||||||
|
response = self.api_client.call_api(
|
||||||
|
resource_path=_path,
|
||||||
|
method=_method,
|
||||||
|
query_params=tuple(_query_params),
|
||||||
|
stream=stream,
|
||||||
|
timeout=timeout,
|
||||||
|
)
|
||||||
|
|
||||||
|
if skip_deserialization:
|
||||||
|
api_response = api_client.ApiResponseWithoutDeserialization(response=response)
|
||||||
|
else:
|
||||||
|
response_for_status = _status_code_to_response.get(str(response.status))
|
||||||
|
if response_for_status:
|
||||||
|
api_response = response_for_status.deserialize(response, self.api_client.configuration)
|
||||||
|
else:
|
||||||
|
api_response = api_client.ApiResponseWithoutDeserialization(response=response)
|
||||||
|
|
||||||
|
if not 200 <= response.status <= 299:
|
||||||
|
raise exceptions.ApiException(api_response=api_response)
|
||||||
|
|
||||||
|
return api_response
|
@ -0,0 +1,90 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
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: \" \\ # noqa: E501
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 1.0.0
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re # noqa: F401
|
||||||
|
import sys # noqa: F401
|
||||||
|
import typing # noqa: F401
|
||||||
|
|
||||||
|
from frozendict import frozendict # noqa: F401
|
||||||
|
|
||||||
|
import decimal # noqa: F401
|
||||||
|
from datetime import date, datetime # noqa: F401
|
||||||
|
from frozendict import frozendict # noqa: F401
|
||||||
|
|
||||||
|
from petstore_api.schemas import ( # noqa: F401
|
||||||
|
AnyTypeSchema,
|
||||||
|
ComposedSchema,
|
||||||
|
DictSchema,
|
||||||
|
ListSchema,
|
||||||
|
StrSchema,
|
||||||
|
IntSchema,
|
||||||
|
Int32Schema,
|
||||||
|
Int64Schema,
|
||||||
|
Float32Schema,
|
||||||
|
Float64Schema,
|
||||||
|
NumberSchema,
|
||||||
|
DateSchema,
|
||||||
|
DateTimeSchema,
|
||||||
|
DecimalSchema,
|
||||||
|
BoolSchema,
|
||||||
|
BinarySchema,
|
||||||
|
NoneSchema,
|
||||||
|
none_type,
|
||||||
|
Configuration,
|
||||||
|
Unset,
|
||||||
|
unset,
|
||||||
|
ComposedBase,
|
||||||
|
ListBase,
|
||||||
|
DictBase,
|
||||||
|
NoneBase,
|
||||||
|
StrBase,
|
||||||
|
IntBase,
|
||||||
|
Int32Base,
|
||||||
|
Int64Base,
|
||||||
|
Float32Base,
|
||||||
|
Float64Base,
|
||||||
|
NumberBase,
|
||||||
|
DateBase,
|
||||||
|
DateTimeBase,
|
||||||
|
BoolBase,
|
||||||
|
BinaryBase,
|
||||||
|
Schema,
|
||||||
|
_SchemaValidator,
|
||||||
|
_SchemaTypeChecker,
|
||||||
|
_SchemaEnumMaker
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MapBean(
|
||||||
|
DictSchema
|
||||||
|
):
|
||||||
|
"""NOTE: This class is auto generated by OpenAPI Generator.
|
||||||
|
Ref: https://openapi-generator.tech
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
"""
|
||||||
|
keyword = StrSchema
|
||||||
|
|
||||||
|
|
||||||
|
def __new__(
|
||||||
|
cls,
|
||||||
|
*args: typing.Union[dict, frozendict, ],
|
||||||
|
keyword: typing.Union[keyword, Unset] = unset,
|
||||||
|
_configuration: typing.Optional[Configuration] = None,
|
||||||
|
**kwargs: typing.Type[Schema],
|
||||||
|
) -> 'MapBean':
|
||||||
|
return super().__new__(
|
||||||
|
cls,
|
||||||
|
*args,
|
||||||
|
keyword=keyword,
|
||||||
|
_configuration=_configuration,
|
||||||
|
**kwargs,
|
||||||
|
)
|
@ -84,6 +84,7 @@ from petstore_api.model.integer_min15 import IntegerMin15
|
|||||||
from petstore_api.model.isosceles_triangle import IsoscelesTriangle
|
from petstore_api.model.isosceles_triangle import IsoscelesTriangle
|
||||||
from petstore_api.model.isosceles_triangle_all_of import IsoscelesTriangleAllOf
|
from petstore_api.model.isosceles_triangle_all_of import IsoscelesTriangleAllOf
|
||||||
from petstore_api.model.mammal import Mammal
|
from petstore_api.model.mammal import Mammal
|
||||||
|
from petstore_api.model.map_bean import MapBean
|
||||||
from petstore_api.model.map_test import MapTest
|
from petstore_api.model.map_test import MapTest
|
||||||
from petstore_api.model.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass
|
from petstore_api.model.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass
|
||||||
from petstore_api.model.model200_response import Model200Response
|
from petstore_api.model.model200_response import Model200Response
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
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: \" \\ # noqa: E501
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 1.0.0
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import petstore_api
|
||||||
|
from petstore_api.model.map_bean import MapBean
|
||||||
|
|
||||||
|
|
||||||
|
class TestMapBean(unittest.TestCase):
|
||||||
|
"""MapBean unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_MapBean(self):
|
||||||
|
"""Test MapBean"""
|
||||||
|
# FIXME: construct object with mandatory attributes with example values
|
||||||
|
# model = MapBean() # noqa: E501
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
Loading…
x
Reference in New Issue
Block a user