from typing import List from typing_extensions import TypedDict from fastapi import FastAPI from pydantic import BaseModel from summary import summarize KEY = 'J9l#K4wP5h@2' app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} class SummaryReq(BaseModel): key: str id: str text: str @app.post("/summary/") async def summary(request: SummaryReq): if request.key != KEY: return 'Unauthorized' return summarize(request.id, request.text) class Page(TypedDict): id: str text: str class SummariesReq(BaseModel): key: str pages: List[Page] @app.post("/summaries/") async def summaries(request: SummariesReq): if request.key != KEY: return 'Unauthorized' result = [] print(f'process pages: {len(request.pages)}') for page in request.pages: try: print(page['id']) result.append(summarize(page['id'], page['text'])) except Exception as e: print(e) return result