etesync-server/etebase_fastapi/app.py

47 lines
2.1 KiB
Python
Raw Normal View History

2020-12-23 21:29:08 +00:00
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "etebase_server.settings")
application = get_wsgi_application()
2020-12-27 16:38:18 +00:00
from django.conf import settings
# Not at the top of the file because we first need to setup django
2020-12-23 21:29:08 +00:00
from fastapi import FastAPI, Request
2020-12-28 09:44:17 +00:00
from fastapi.middleware.wsgi import WSGIMiddleware
2020-12-28 08:57:40 +00:00
from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.trustedhost import TrustedHostMiddleware
2020-12-23 21:29:08 +00:00
2020-12-27 13:45:29 +00:00
from .exceptions import CustomHttpException
2020-12-23 21:29:08 +00:00
from .authentication import authentication_router
2020-12-28 07:04:45 +00:00
from .collection import collection_router, item_router
from .member import member_router
from .invitation import invitation_incoming_router, invitation_outgoing_router
2020-12-23 21:29:08 +00:00
from .msgpack import MsgpackResponse
app = FastAPI()
2020-12-25 09:12:22 +00:00
VERSION = "v1"
BASE_PATH = f"/api/{VERSION}"
2020-12-28 07:11:35 +00:00
COLLECTION_UID_MARKER = "{collection_uid}"
2020-12-28 07:35:27 +00:00
app.include_router(authentication_router, prefix=f"{BASE_PATH}/authentication", tags=["authentication"])
app.include_router(collection_router, prefix=f"{BASE_PATH}/collection", tags=["collection"])
app.include_router(item_router, prefix=f"{BASE_PATH}/collection/{COLLECTION_UID_MARKER}", tags=["item"])
app.include_router(member_router, prefix=f"{BASE_PATH}/collection/{COLLECTION_UID_MARKER}", tags=["member"])
app.include_router(invitation_incoming_router, prefix=f"{BASE_PATH}/invitation/incoming", tags=["incoming invitation"])
app.include_router(invitation_outgoing_router, prefix=f"{BASE_PATH}/invitation/outgoing", tags=["outgoing invitation"])
2020-12-25 12:06:35 +00:00
if settings.DEBUG:
from .test_reset_view import test_reset_view_router
app.include_router(test_reset_view_router, prefix=f"{BASE_PATH}/test/authentication")
2020-12-23 21:29:08 +00:00
app.add_middleware(
CORSMiddleware, allow_origin_regex="https?://.*", allow_credentials=True, allow_methods=["*"], allow_headers=["*"]
)
2020-12-28 08:57:40 +00:00
app.add_middleware(TrustedHostMiddleware, allowed_hosts=settings.ALLOWED_HOSTS)
2020-12-28 09:44:17 +00:00
app.mount("/", WSGIMiddleware(application))
2020-12-23 21:29:08 +00:00
@app.exception_handler(CustomHttpException)
async def custom_exception_handler(request: Request, exc: CustomHttpException):
return MsgpackResponse(status_code=exc.status_code, content=exc.as_dict)