{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/domain\/ports\/http_fetcher_port.py"
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/domain\/ports\/http_fetcher_port.py",
"content": "from __future__ import annotations\n\nfrom abc import ABC, abstractmethod\nfrom collections.abc import Mapping\nfrom dataclasses import dataclass\n\nfrom src.domain.value_objects.normalized_url import NormalizedUrl\n\n\n@dataclass(frozen=True, slots=True)\nclass FetchResult:\n final_url: str\n status_code: int\n redirect_chain: tuple[str, ...]\n headers: Mapping[str, str]\n body: bytes\n response_time_ms: int\n ttfb_ms: int | None\n error: str | None\n\n\nclass HttpFetcherPort(ABC):\n @abstractmethod\n async def fetch(self, url: NormalizedUrl) -> FetchResult: ...\n",
"numLines": 25,
"startLine": 1,
"totalLines": 25
}
}
}