[exceptions] add exception handlers, moved AclCallerMiddleware to lib
This commit is contained in:
parent
3fda051180
commit
24673e4408
|
@ -20,10 +20,11 @@ RequestResponseEndpoint = Callable[ [Request], Awaitable[Response] ]
|
||||||
from .models.api.domain import Domain
|
from .models.api.domain import Domain
|
||||||
|
|
||||||
# module libraries
|
# module libraries
|
||||||
from .lib.responses import *
|
|
||||||
from .lib.jwt_middleware import JWTAuthenticationBackend
|
from .lib.jwt_middleware import JWTAuthenticationBackend
|
||||||
from .lib.acl_caller_middleware import AclCallerMiddleware
|
from .lib.acl_caller_middleware import AclCallerMiddleware
|
||||||
|
|
||||||
|
from .lib.responses import *
|
||||||
|
|
||||||
|
|
||||||
def mount_domains(app: ASGIApp, domains: list):
|
def mount_domains(app: ASGIApp, domains: list):
|
||||||
""" Procedure to mount the registered domains on their prefixes
|
""" Procedure to mount the registered domains on their prefixes
|
||||||
|
@ -89,7 +90,7 @@ async def root(request):
|
||||||
|
|
||||||
def check_conf():
|
def check_conf():
|
||||||
if not environ.get('HALFORM_SECRET', False):
|
if not environ.get('HALFORM_SECRET', False):
|
||||||
environ['HALFORM_SECRET'] = 'secret'
|
environ['HALFORM_SECRET'] = open('/etc/half_orm/secret').read()
|
||||||
print('Missing HALFORM_SECRET variable from configuration, seting to default')
|
print('Missing HALFORM_SECRET variable from configuration, seting to default')
|
||||||
|
|
||||||
if not environ.get('HALFORM_DSN', False):
|
if not environ.get('HALFORM_DSN', False):
|
||||||
|
@ -100,5 +101,11 @@ app = Starlette(
|
||||||
Middleware(AuthenticationMiddleware, backend=JWTAuthenticationBackend(secret_key=environ.get('HALFORM_SECRET'))),
|
Middleware(AuthenticationMiddleware, backend=JWTAuthenticationBackend(secret_key=environ.get('HALFORM_SECRET'))),
|
||||||
Middleware(AclCallerMiddleware),
|
Middleware(AclCallerMiddleware),
|
||||||
],
|
],
|
||||||
on_startup=[startup]
|
exception_handlers={
|
||||||
|
401: UnauthorizedResponse,
|
||||||
|
404: NotFoundResponse,
|
||||||
|
500: InternalServerErrorResponse,
|
||||||
|
501: NotImplementedResponse
|
||||||
|
},
|
||||||
|
on_startup=[startup],
|
||||||
)
|
)
|
||||||
|
|
|
@ -7,17 +7,11 @@ from io import TextIOBase, StringIO
|
||||||
# asgi framework
|
# asgi framework
|
||||||
from starlette.responses import Response
|
from starlette.responses import Response
|
||||||
|
|
||||||
class NotFoundResponse(Response):
|
__all__ = ['CSVResponse',
|
||||||
""" The 404 Not Found default Response
|
'InternalServerErrorResponse',
|
||||||
"""
|
'NotFoundResponse',
|
||||||
def __init__(self):
|
'NotImplementedResponse',
|
||||||
super().__init__(status_code=404)
|
'UnauthorizedResponse']
|
||||||
|
|
||||||
class ForbiddenResponse(Response):
|
|
||||||
""" The 401 Not Found default Response
|
|
||||||
"""
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(status_code = 401)
|
|
||||||
|
|
||||||
class CSVResponse(Response):
|
class CSVResponse(Response):
|
||||||
def __init__(self, obj):
|
def __init__(self, obj):
|
||||||
|
@ -33,3 +27,32 @@ class CSVResponse(Response):
|
||||||
'Content-Type': 'text/csv; charset=UTF-8',
|
'Content-Type': 'text/csv; charset=UTF-8',
|
||||||
'Content-Disposition': f'attachment; filename="{filename}"'},
|
'Content-Disposition': f'attachment; filename="{filename}"'},
|
||||||
status_code = 200)
|
status_code = 200)
|
||||||
|
|
||||||
|
|
||||||
|
class InternalServerErrorResponse(Response):
|
||||||
|
""" The 500 Internal Server Error default Response
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(status_code=500)
|
||||||
|
|
||||||
|
|
||||||
|
class NotFoundResponse(Response):
|
||||||
|
""" The 404 Not Found default Response
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(status_code=404)
|
||||||
|
|
||||||
|
|
||||||
|
class NotImplementedResponse(Response):
|
||||||
|
""" The 501 Not Implemented default Response
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(status_code=501)
|
||||||
|
|
||||||
|
|
||||||
|
class UnauthorizedResponse(Response):
|
||||||
|
""" The 401 Not Found default Response
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(status_code = 401)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue