File size: 1,435 Bytes
3061962
 
 
 
 
 
 
 
 
 
 
 
 
 
ed5ec6a
 
 
 
 
3061962
adb81a7
 
 
3061962
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed5ec6a
3061962
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from starlette.exceptions import HTTPException as StarletteHTTPException
from starlette.staticfiles import StaticFiles

from ocr.core.config import settings
from ocr.core.wrappers import OcrResponseWrapper, ErrorOcrResponse


def create_app() -> FastAPI:
    app = FastAPI()

    from ocr.api.report import report_router
    app.include_router(report_router, tags=['report'])

    from ocr.api.message import message_router
    app.include_router(message_router, tags=['message'])

    from ocr.api.consult import consult_router
    app.include_router(consult_router, tags=['consult'])

    app.add_middleware(
        CORSMiddleware,
        allow_origins=["*"],
        allow_methods=["*"],
        allow_headers=["*"],
    )

    static_directory = os.path.join(settings.BASE_DIR, 'static')
    if not os.path.exists(static_directory):
        os.makedirs(static_directory)

    app.mount(
        '/static',
        StaticFiles(directory='static'),
    )

    @app.exception_handler(StarletteHTTPException)
    async def http_exception_handler(_, exc):
        return OcrResponseWrapper(
            data=None,
            successful=False,
            error=ErrorOcrResponse(message=str(exc.detail))
        ).response(exc.status_code)

    @app.get("/")
    async def read_root():
        return {"report": "Hello world!"}

    return app