Spaces:
Sleeping
Sleeping
File size: 1,253 Bytes
de68d43 |
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 |
from __future__ import annotations
import logging
from core.service.playwright import AsyncPlaywrightContext, TimeoutError
from core.service.playwright.models import PageModel, ScreenshotModel
from fastapi import APIRouter, HTTPException
from fastapi.responses import Response
router = APIRouter()
playwright_context = AsyncPlaywrightContext()
@router.post("/screenshot", tags=["V1"])
async def screenshot(
screenshot_model: ScreenshotModel,
page_model: PageModel | None = None,
) -> Response:
page_model = page_model if page_model else PageModel()
async with playwright_context as sc:
try:
response = await sc.screenshot(screenshot_model=screenshot_model, page_model=page_model)
return Response(content=response, media_type="image/png")
except TimeoutError as e:
status_code = 504 if isinstance(e, TimeoutError) else 400
detail = f"An error occurred while generating the screenshot: {e}"
raise HTTPException(status_code=status_code, detail=detail) from e
except Exception as e:
logging.exception("Unhandled error in screenshot generation")
raise HTTPException(status_code=500, detail="An unexpected error occurred") from e
|