Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Fixes issues 90, allow access to deserialized body for non 2XX statuses #91

Merged
merged 4 commits into from
Nov 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,11 @@ class BaseApi(api_client.Api):
{{/if}}

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# coding: utf-8

{{>partial_header}}
import dataclasses
import typing

from urllib3._collections import HTTPHeaderDict


class OpenApiException(Exception):
Expand Down Expand Up @@ -90,19 +94,26 @@ class ApiKeyError(OpenApiException, KeyError):
super(ApiKeyError, self).__init__(full_msg)


class ApiException(OpenApiException):
T = typing.TypeVar("T")

def __init__(self, status=None, reason=None, api_response: '{{packageName}}.api_client.ApiResponse' = None):
if api_response:
self.status = api_response.response.status
self.reason = api_response.response.reason
self.body = api_response.response.data
self.headers = api_response.response.getheaders()
else:
self.status = status
self.reason = reason
self.body = None
self.headers = None

@dataclasses.dataclass
class ApiException(OpenApiException, typing.Generic[T]):
status: int
reason: str
api_response: typing.Optional[T] = None

@property
def body(self) -> typing.Union[str, bytes, None]:
if not self.api_response:
return None
return self.api_response.response.data

@property
def headers(self) -> typing.Optional[HTTPHeaderDict]:
if not self.api_response:
return None
return self.api_response.response.getheaders()

def __str__(self):
"""Custom error messages for exception"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,10 @@ paths:
description: Success
'404':
description: Not found
content:
application/json:
schema:
type: object
requestBody:
content:
application/x-www-form-urlencoded:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
The version of the OpenAPI document: 0.0.1
Generated by: https://openapi-generator.tech
"""
import dataclasses
import typing

from urllib3._collections import HTTPHeaderDict


class OpenApiException(Exception):
Expand Down Expand Up @@ -97,19 +101,26 @@ def __init__(self, msg, path_to_item=None):
super(ApiKeyError, self).__init__(full_msg)


class ApiException(OpenApiException):
T = typing.TypeVar("T")

def __init__(self, status=None, reason=None, api_response: 'unit_test_api.api_client.ApiResponse' = None):
if api_response:
self.status = api_response.response.status
self.reason = api_response.response.reason
self.body = api_response.response.data
self.headers = api_response.response.getheaders()
else:
self.status = status
self.reason = reason
self.body = None
self.headers = None

@dataclasses.dataclass
class ApiException(OpenApiException, typing.Generic[T]):
status: int
reason: str
api_response: typing.Optional[T] = None

@property
def body(self) -> typing.Union[str, bytes, None]:
if not self.api_response:
return None
return self.api_response.response.data

@property
def headers(self) -> typing.Optional[HTTPHeaderDict]:
if not self.api_response:
return None
return self.api_response.response.getheaders()

def __str__(self):
"""Custom error messages for exception"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ class BaseApi(api_client.Api):
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ class instances
api_response = api_client.ApiResponseWithoutDeserialization(response=response)

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

return api_response

Expand Down
Loading