alisaadhq's picture
Upload 19 files
d286c92 verified
Raw
History Blame Contribute Delete
1.44 kB
"""FastAPI application factory."""
import os
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from starlette.middleware.sessions import SessionMiddleware
from torrent2drive.config import STATIC_DIR
from torrent2drive.routes import register_routes
from torrent2drive.session import start_gc_loop
def create_app() -> FastAPI:
application = FastAPI(title="Torrent2Space")
application.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
application.add_middleware(
SessionMiddleware,
secret_key=os.environ.get("SESSION_SECRET", "torrent2space-change-me"),
same_site="lax",
)
register_routes(application)
assets_dir = os.path.join(STATIC_DIR, "assets")
if os.path.isdir(assets_dir):
application.mount("/assets", StaticFiles(directory=assets_dir), name="assets")
if os.path.isdir(STATIC_DIR):
application.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
return application
app = create_app()
start_gc_loop()
def main():
uvicorn.run(
"torrent2drive.app:app",
host="0.0.0.0",
port=int(os.environ.get("PORT", "7860")),
reload=os.environ.get("T2D_RELOAD", "").lower() in ("1", "true", "yes"),
)
if __name__ == "__main__":
main()