Subclass Python exceptions (#7321)

* Subclass Python exceptions:
- UnauthorizedException (401)
- ForbiddenException (403)
- NotFoundException (404)
- ServiceException [500 - 599]

Fixes #2151

* add generated sample code

* use Python 2 flavor inheritance

* regenerate samples
This commit is contained in:
Ryan Rishi 2020-09-05 11:22:04 -06:00 committed by GitHub
parent b38968456a
commit 2d5b2726d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 159 additions and 3 deletions

View File

@ -120,6 +120,30 @@ class ApiException(OpenApiException):
return error_message return error_message
class NotFoundException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(NotFoundException, self).__init__(status, reason, http_resp)
class UnauthorizedException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(UnauthorizedException, self).__init__(status, reason, http_resp)
class ForbiddenException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ForbiddenException, self).__init__(status, reason, http_resp)
class ServiceException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ServiceException, self).__init__(status, reason, http_resp)
def render_path(path_to_item): def render_path(path_to_item):
"""Returns a string representation of a path""" """Returns a string representation of a path"""
result = "" result = ""

View File

@ -16,7 +16,7 @@ import six
from six.moves.urllib.parse import urlencode from six.moves.urllib.parse import urlencode
import urllib3 import urllib3
from {{packageName}}.exceptions import ApiException, ApiValueError from {{packageName}}.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -213,6 +213,18 @@ class RESTClientObject(object):
logger.debug("response body: %s", r.data) logger.debug("response body: %s", r.data)
if not 200 <= r.status <= 299: if not 200 <= r.status <= 299:
if r.status == 401:
raise UnauthorizedException(http_resp=r)
if r.status == 403:
raise ForbiddenException(http_resp=r)
if r.status == 404:
raise NotFoundException(http_resp=r)
if 500 <= r.status <= 599:
raise ServiceException(http_resp=r)
raise ApiException(http_resp=r) raise ApiException(http_resp=r)
return r return r

View File

@ -128,6 +128,30 @@ class ApiException(OpenApiException):
return error_message return error_message
class NotFoundException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(NotFoundException, self).__init__(status, reason, http_resp)
class UnauthorizedException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(UnauthorizedException, self).__init__(status, reason, http_resp)
class ForbiddenException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ForbiddenException, self).__init__(status, reason, http_resp)
class ServiceException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ServiceException, self).__init__(status, reason, http_resp)
def render_path(path_to_item): def render_path(path_to_item):
"""Returns a string representation of a path""" """Returns a string representation of a path"""
result = "" result = ""

View File

@ -128,6 +128,30 @@ class ApiException(OpenApiException):
return error_message return error_message
class NotFoundException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(NotFoundException, self).__init__(status, reason, http_resp)
class UnauthorizedException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(UnauthorizedException, self).__init__(status, reason, http_resp)
class ForbiddenException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ForbiddenException, self).__init__(status, reason, http_resp)
class ServiceException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ServiceException, self).__init__(status, reason, http_resp)
def render_path(path_to_item): def render_path(path_to_item):
"""Returns a string representation of a path""" """Returns a string representation of a path"""
result = "" result = ""

View File

@ -128,6 +128,30 @@ class ApiException(OpenApiException):
return error_message return error_message
class NotFoundException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(NotFoundException, self).__init__(status, reason, http_resp)
class UnauthorizedException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(UnauthorizedException, self).__init__(status, reason, http_resp)
class ForbiddenException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ForbiddenException, self).__init__(status, reason, http_resp)
class ServiceException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ServiceException, self).__init__(status, reason, http_resp)
def render_path(path_to_item): def render_path(path_to_item):
"""Returns a string representation of a path""" """Returns a string representation of a path"""
result = "" result = ""

View File

@ -24,7 +24,7 @@ import six
from six.moves.urllib.parse import urlencode from six.moves.urllib.parse import urlencode
import urllib3 import urllib3
from petstore_api.exceptions import ApiException, ApiValueError from petstore_api.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -221,6 +221,18 @@ class RESTClientObject(object):
logger.debug("response body: %s", r.data) logger.debug("response body: %s", r.data)
if not 200 <= r.status <= 299: if not 200 <= r.status <= 299:
if r.status == 401:
raise UnauthorizedException(http_resp=r)
if r.status == 403:
raise ForbiddenException(http_resp=r)
if r.status == 404:
raise NotFoundException(http_resp=r)
if 500 <= r.status <= 599:
raise ServiceException(http_resp=r)
raise ApiException(http_resp=r) raise ApiException(http_resp=r)
return r return r

View File

@ -128,6 +128,30 @@ class ApiException(OpenApiException):
return error_message return error_message
class NotFoundException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(NotFoundException, self).__init__(status, reason, http_resp)
class UnauthorizedException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(UnauthorizedException, self).__init__(status, reason, http_resp)
class ForbiddenException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ForbiddenException, self).__init__(status, reason, http_resp)
class ServiceException(ApiException):
def __init__(self, status=None, reason=None, http_resp=None):
super(ServiceException, self).__init__(status, reason, http_resp)
def render_path(path_to_item): def render_path(path_to_item):
"""Returns a string representation of a path""" """Returns a string representation of a path"""
result = "" result = ""

View File

@ -24,7 +24,7 @@ import six
from six.moves.urllib.parse import urlencode from six.moves.urllib.parse import urlencode
import urllib3 import urllib3
from petstore_api.exceptions import ApiException, ApiValueError from petstore_api.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -221,6 +221,18 @@ class RESTClientObject(object):
logger.debug("response body: %s", r.data) logger.debug("response body: %s", r.data)
if not 200 <= r.status <= 299: if not 200 <= r.status <= 299:
if r.status == 401:
raise UnauthorizedException(http_resp=r)
if r.status == 403:
raise ForbiddenException(http_resp=r)
if r.status == 404:
raise NotFoundException(http_resp=r)
if 500 <= r.status <= 599:
raise ServiceException(http_resp=r)
raise ApiException(http_resp=r) raise ApiException(http_resp=r)
return r return r