{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/infrastructure\/fetchers\/playwright_http_adapter.py",
"content": "\"\"\"Adapter: BrowserFetcher → HttpFetcherPort (so ProcessUrl can use Chromium).\"\"\"\nfrom __future__ import annotations\n\nfrom src.domain.ports.browser_fetcher_port import BrowserFetcherPort\nfrom src.domain.ports.http_fetcher_port import FetchResult, HttpFetcherPort\nfrom src.domain.value_objects.normalized_url import NormalizedUrl\n\n\nclass PlaywrightHttpAdapter(HttpFetcherPort):\n def __init__(self, browser: BrowserFetcherPort, *, screenshot: bool = False) -> None:\n self._browser = browser\n self._screenshot = screenshot\n\n async def fetch(self, url: NormalizedUrl) -> FetchResult:\n result = await self._browser.fetch(url, screenshot=self._screenshot)\n return FetchResult(\n final_url=result.final_url,\n status_code=result.status_code,\n redirect_chain=(),\n headers=dict(result.headers),\n body=result.html.encode(\"utf-8\", errors=\"replace\"),\n response_time_ms=result.render_time_ms,\n ttfb_ms=None,\n error=None,\n )\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/infrastructure\/fetchers\/playwright_http_adapter.py",
"content": "\"\"\"Adapter: BrowserFetcher → HttpFetcherPort (so ProcessUrl can use Chromium).\"\"\"\nfrom __future__ import annotations\n\nfrom src.domain.ports.browser_fetcher_port import BrowserFetcherPort\nfrom src.domain.ports.http_fetcher_port import FetchResult, HttpFetcherPort\nfrom src.domain.value_objects.normalized_url import NormalizedUrl\n\n\nclass PlaywrightHttpAdapter(HttpFetcherPort):\n def __init__(self, browser: BrowserFetcherPort, *, screenshot: bool = False) -> None:\n self._browser = browser\n self._screenshot = screenshot\n\n async def fetch(self, url: NormalizedUrl) -> FetchResult:\n result = await self._browser.fetch(url, screenshot=self._screenshot)\n return FetchResult(\n final_url=result.final_url,\n status_code=result.status_code,\n redirect_chain=(),\n headers=dict(result.headers),\n body=result.html.encode(\"utf-8\", errors=\"replace\"),\n response_time_ms=result.render_time_ms,\n ttfb_ms=None,\n error=None,\n )\n",
"structuredPatch": [],
"originalFile": null,
"userModified": false
}
}