Spaces:
Sleeping
Sleeping
Update app/routers/screenshot/screenshot.py
Browse files
app/routers/screenshot/screenshot.py
CHANGED
@@ -2,13 +2,14 @@ from __future__ import annotations
|
|
2 |
|
3 |
import logging
|
4 |
|
5 |
-
from core.service.playwright import
|
6 |
from core.service.playwright.models import PageModel, ScreenshotModel
|
7 |
from fastapi import APIRouter, HTTPException
|
8 |
from fastapi.responses import Response
|
9 |
|
10 |
router = APIRouter()
|
11 |
-
|
|
|
12 |
|
13 |
|
14 |
@router.post("/screenshot", tags=["V1"])
|
@@ -17,14 +18,19 @@ async def screenshot(
|
|
17 |
page_model: PageModel | None = None,
|
18 |
) -> Response:
|
19 |
page_model = page_model if page_model else PageModel()
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
import logging
|
4 |
|
5 |
+
from core.service.playwright import PlaywrightInstance, TimeoutError
|
6 |
from core.service.playwright.models import PageModel, ScreenshotModel
|
7 |
from fastapi import APIRouter, HTTPException
|
8 |
from fastapi.responses import Response
|
9 |
|
10 |
router = APIRouter()
|
11 |
+
|
12 |
+
playwright_instance = PlaywrightInstance()
|
13 |
|
14 |
|
15 |
@router.post("/screenshot", tags=["V1"])
|
|
|
18 |
page_model: PageModel | None = None,
|
19 |
) -> Response:
|
20 |
page_model = page_model if page_model else PageModel()
|
21 |
+
|
22 |
+
await playwright_instance
|
23 |
+
|
24 |
+
try:
|
25 |
+
response = await playwright_instance.screenshot(
|
26 |
+
screenshot_model=screenshot_model, page_model=page_model,
|
27 |
+
)
|
28 |
+
return Response(content=response, media_type="image/png")
|
29 |
+
except TimeoutError as e:
|
30 |
+
status_code = 504 if isinstance(e, TimeoutError) else 400
|
31 |
+
detail = f"An error occurred while generating the screenshot: {e}"
|
32 |
+
raise HTTPException(status_code=status_code, detail=detail) from e
|
33 |
+
except Exception as e:
|
34 |
+
logging.exception("Unhandled error in screenshot generation")
|
35 |
+
raise HTTPException(status_code=500, detail="An unexpected error occurred") from e
|
36 |
+
|