| 1234567891011121314151617181920212223242526272829303132333435 |
- import time
- from typing import Any
- from fastapi import Request
- from app.models.schemas import VisitRequest
- from app.use_cases.camoufox.visit import VisitUseCase
- from app.libs.log import log
- from app.libs.aras_response import aras_ok, aras_server_error
- class ApiController:
- def __init__(self) -> None:
- self.visit_use_case = VisitUseCase()
- def ping(self) -> dict[str, Any]:
- log.logger.info("Ping received")
- return aras_ok("pong")
- async def visit(self, request: Request, payload: VisitRequest) -> dict[str, Any]:
- start_time = time.time()
- try:
- options = payload.model_dump(exclude={"url"})
- options["headers"] = dict(request.scope.get("raw_headers_dict", {}))
- log.logger.info(f"Visiting URL: {payload.url}")
- log.logger.debug(f"Options: {options}")
- response = await self.visit_use_case.execute(str(payload.url), options)
- return aras_ok("OK", response)
- except Exception as exc:
- log.logger.error(exc)
- return aras_server_error(str(exc))
- finally:
- duration = time.time() - start_time
- log.logger.info(f"Execution time: {duration:.2f}s")
|