File size: 1,222 Bytes
22379c6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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.message import ocr_router
    app.include_router(ocr_router, tags=['message'])

    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 {"message": "Hello world!"}

    return app