File size: 1,178 Bytes
79b7942
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os

import uvicorn
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles

from app.config import settings
from app.manage import configure_app
from app.utils.constants import APP_DESCRIPTION, APP_NAME, APP_VERSION, DOCS_URL, OPENAPI_URL, STATIC_DIR


def initialize_app():
    """Initializes the app by adding required configurations using configure_app

    Returns:
        app: returns configured app's FastAPI instance.
    """

    fastapi_app = FastAPI(title=APP_NAME, version=APP_VERSION, description=APP_DESCRIPTION)

    # app configuration - one time
    configure_app(fastapi_app)

    # Mount the static folder
    fastapi_app.mount(
        "/static",
        StaticFiles(directory=STATIC_DIR),
        name="static",
    )

    @fastapi_app.get("/")
    async def read_index():
        with open(os.path.join(STATIC_DIR, "index.html")) as f:
            return HTMLResponse(content=f.read(), status_code=200)

    return fastapi_app


# initialize app at the end
server = initialize_app()


def start():
    uvicorn.run(server, host="0.0.0.0", port=8000)


if __name__ == "__main__":
    start()