Spaces:
Sleeping
Sleeping
File size: 1,277 Bytes
de68d43 8844cda de68d43 ec5f5d2 de68d43 8844cda de68d43 8844cda c953b06 8844cda c953b06 8844cda |
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 |
from __future__ import annotations
import logging
from core.service.playwright import PlaywrightInstance, TimeoutError
from core.service.playwright.models import PageModel, ScreenshotModel
from fastapi import APIRouter, HTTPException
from fastapi.responses import Response
router = APIRouter()
playwright_instance = PlaywrightInstance()
@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()
await playwright_instance
try:
response = await playwright_instance.screenshot(
screenshot_model=screenshot_model,
page_model=page_model,
)
return Response(content=response, media_type=f"image/{screenshot_model.image_type}")
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
|