Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
{{#if appName}}
{{{appName}}}
{{/if}}

{{#if appDescription}}
{{{appDescription}}} # noqa: E501
{{/if}}

{{#if version}}
The version of the OpenAPI document: {{{version}}}
{{/if}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1152,6 +1152,86 @@ class Api(TypedDictInputVerifier):
"""
api_client: ApiClient = dataclasses.field(default_factory=lambda: ApiClient())

@staticmethod
def _get_used_path(
used_path: str,
path_parameters: typing.Tuple[typing.Type[PathParameter], ...] = (),
path_params: typing.Dict[str, typing.Any] = frozendict.frozendict(),
query_parameters: typing.Tuple[typing.Type[QueryParameter], ...] = (),
query_params: typing.Dict[str, typing.Any] = frozendict.frozendict(),
) -> str:
used_path_params = {}
for parameter in path_parameters:
parameter_data = path_params.get(parameter.name, schemas.unset)
if parameter_data is schemas.unset:
continue
serialized_data = parameter.serialize(parameter_data)
used_path_params.update(serialized_data)

for k, v in used_path_params.items():
used_path = used_path.replace('{%s}' % k, v)

prefix_separator_iterator = None
for parameter in query_parameters:
parameter_data = query_params.get(parameter.name, schemas.unset)
if parameter_data is schemas.unset:
continue
if prefix_separator_iterator is None:
prefix_separator_iterator = parameter.get_prefix_separator_iterator()
serialized_data = parameter.serialize(parameter_data, prefix_separator_iterator)
for serialized_value in serialized_data.values():
used_path += serialized_value
return used_path

@staticmethod
def _get_headers(
header_parameters: typing.Tuple[typing.Type[HeaderParameter], ...] = (),
header_params: typing.Dict[str, typing.Any] = frozendict.frozendict(),
accept_content_types: typing.Tuple[str] = (),
) -> _collections.HTTPHeaderDict:
headers = _collections.HTTPHeaderDict()
for parameter in header_parameters:
parameter_data = header_params.get(parameter.name, schemas.unset)
if parameter_data is schemas.unset:
continue
serialized_data = parameter.serialize(parameter_data)
headers.extend(serialized_data)
if accept_content_types:
for accept_content_type in accept_content_types:
headers.add('Accept', accept_content_type)
return headers

@staticmethod
def _get_fields_and_body(
request_body: 'RequestBody',
body: typing.Any,
headers: _collections.HTTPHeaderDict,
content_type: str
):
if request_body.required and body is schemas.unset:
raise exceptions.ApiValueError(
'The required body parameter has an invalid value of: unset. Set a valid value instead')
_fields = None
_body = None

if request_body.required or ((not request_body.required) and body is not schemas.unset):
serialized_data = request_body.serialize(body, content_type)
headers.add('Content-Type', content_type)
if 'fields' in serialized_data:
_fields = serialized_data['fields']
elif 'body' in serialized_data:
_body = serialized_data['body']
return _fields, _body

@staticmethod
def _verify_response_status(api_response: 'ApiResponse'):
if not 200 <= api_response.response.status <= 399:
raise exceptions.ApiException(
status=api_response.response.status,
reason=api_response.response.reason,
api_response=api_response
)


class SerializedRequestBody(typing_extensions.TypedDict, total=False):
body: typing.Union[str, bytes]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
{{jsonPathPiece.camelCase}} = {{refInfo.refModule}}.{{refInfo.refClass}}
{{else}}
{{#if content}}
import typing
import typing_extensions
import typing, typing_extensions

{{/if}}
from {{packageName}} import api_client
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
{{jsonPathPiece.camelCase}} = {{refInfo.refModule}}.{{refInfo.refClass}}
{{else}}
{{#if content}}
import typing
import typing_extensions
import typing, typing_extensions

{{/if}}
from {{packageName}} import api_client
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
{{> _helper_imports }}
{{jsonPathPiece.camelCase}} = {{refInfo.refModule}}.{{refInfo.refClass}}
{{else}}
import typing
import typing_extensions
import typing, typing_extensions

from {{packageName}} import api_client
{{#each content}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ class {{xParamsName}}:
pass


parameters = [
parameters = (
{{#each xParams}}
{{jsonPathPiece.snakeCase}}.{{jsonPathPiece.camelCase}},
{{/each}}
]
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,7 @@

{{> _helper_header }}

from dataclasses import dataclass
import typing_extensions
import urllib3
{{#with operation}}
{{#or headerParams requestBody produces}}
from urllib3._collections import HTTPHeaderDict
{{/or}}
{{/with}}

from {{packageName}} import api_client, exceptions{{#neq operation.security null}}{{#gt operation.security.size 0}}, security_schemes{{/gt}}{{else}}{{#neq security null}}{{#gt security.size 0}}, security_schemes{{/gt}}{{/neq}}{{/neq}}
from {{packageName}} import api_client{{#neq operation.security null}}{{#gt operation.security.size 0}}, security_schemes{{/gt}}{{else}}{{#neq security null}}{{#gt security.size 0}}, security_schemes{{/gt}}{{/neq}}{{/neq}}
{{#eq operation.security null}}
{{#neq security null}}
{{#gt security.size 0}}
Expand All @@ -29,7 +20,16 @@ from {{packageName}}.security import (
{{/gt}}
{{/neq}}
{{/eq}}
{{> _helper_imports_schema_types }}
import datetime # noqa: F401
import decimal # noqa: F401
import io # noqa: F401
import typing # noqa: F401
import typing_extensions # noqa: F401
import uuid # noqa: F401

import frozendict # noqa: F401

from {{packageName}} import schemas # noqa: F401
{{#if imports}}

{{/if}}
Expand Down Expand Up @@ -214,84 +214,46 @@ class BaseApi(api_client.Api):
{{#if cookieParams}}
self._verify_typed_dict_inputs(RequestCookieParameters.Params, cookie_params)
{{/if}}
{{#or pathParams queryParams}}
used_path = self._get_used_path(
path,
{{#if pathParams}}
path_parameters=RequestPathParameters.parameters,
path_params=path_params{{#if queryParams}},{{/if}}
{{/if}}
{{#if queryParams}}
query_parameters=RequestQueryParameters.parameters,
query_params=query_params
{{/if}}
)
{{else}}
used_path = path
{{#if pathParams}}

_path_params = {}
for parameter in RequestPathParameters.parameters:
parameter_data = path_params.get(parameter.name, schemas.unset)
if parameter_data is schemas.unset:
continue
serialized_data = parameter.serialize(parameter_data)
_path_params.update(serialized_data)

for k, v in _path_params.items():
used_path = used_path.replace('{%s}' % k, v)
{{/if}}
{{#if queryParams}}

prefix_separator_iterator = None
for parameter in RequestQueryParameters.parameters:
parameter_data = query_params.get(parameter.name, schemas.unset)
if parameter_data is schemas.unset:
continue
if prefix_separator_iterator is None:
prefix_separator_iterator = parameter.get_prefix_separator_iterator()
serialized_data = parameter.serialize(parameter_data, prefix_separator_iterator)
for serialized_value in serialized_data.values():
used_path += serialized_value
{{/if}}
{{/or}}
{{#or headerParams requestBody produces}}

_headers = HTTPHeaderDict()
{{else}}
{{#if headerParams}}
_headers = self._get_headers(
{{#if produces}}
header_parameters=RequestHeaderParameters.parameters,
header_params=header_params,
accept_content_types=accept_content_types
{{else}}
header_parameters=RequestHeaderParameters.parameters,
header_params=header_params
{{/if}}
)
{{else}}
_headers = self._get_headers({{#if produces}}accept_content_types=accept_content_types{{/if}})
{{/if}}
{{/or}}
{{#if headerParams}}
for parameter in RequestHeaderParameters.parameters:
parameter_data = header_params.get(parameter.name, schemas.unset)
if parameter_data is schemas.unset:
continue
serialized_data = parameter.serialize(parameter_data)
_headers.extend(serialized_data)
{{/if}}
# TODO add cookie handling
{{#if produces}}
if accept_content_types:
for accept_content_type in accept_content_types:
_headers.add('Accept', accept_content_type)
{{/if}}
{{#with requestBody}}

{{#if refInfo}}
{{#if getDeepestRef.required}}
if body is schemas.unset:
raise exceptions.ApiValueError(
'The required body parameter has an invalid value of: unset. Set a valid value instead')
{{/if}}
{{else}}
{{#if required}}
if body is schemas.unset:
raise exceptions.ApiValueError(
'The required body parameter has an invalid value of: unset. Set a valid value instead')
{{/if}}
{{/if}}
_fields = None
_body = None
{{#if refInfo}}
{{#if getDeepestRef.required}}
{{> paths/path/verb/_helper_operation_body_serialization }}
{{else}}
if body is not schemas.unset:
{{> paths/path/verb/_helper_operation_body_serialization }}
{{/if}}
{{else}}
{{#if required}}
{{> paths/path/verb/_helper_operation_body_serialization }}
{{else}}
if body is not schemas.unset:
{{> paths/path/verb/_helper_operation_body_serialization }}
{{/if}}
{{/if}}
_fields, _body = self._get_fields_and_body(
request_body=request_body.{{jsonPathPiece.camelCase}},
body=body,
headers=_headers,
content_type=content_type
)
{{/with}}
{{#if servers}}
host = self.api_client.configuration.get_server_url(
Expand Down Expand Up @@ -405,12 +367,7 @@ class BaseApi(api_client.Api):
{{/if}}
{{/if}}

if not 200 <= response.status <= 399:
raise exceptions.ApiException(
status=response.status,
reason=response.reason,
api_response=api_response
)
self._verify_response_status(api_response)

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@

"""
openapi 3.0.3 sample spec

sample spec for testing openapi functionality, built from json schema tests for draft6 # noqa: E501

The version of the OpenAPI document: 0.0.1
Generated by: https://github.com/openapi-json-schema-tools/openapi-json-schema-generator
"""
Expand Down
Loading