]> git.scottworley.com Git - paperdoorknob/blobdiff - fetch.py
Reify Chunk
[paperdoorknob] / fetch.py
index 3c0c6a3aa9c47bc63999e0adde5cb750df8c85e6..d5267534a100e1d0e527ef347547cb57b2ae6f31 100644 (file)
--- a/fetch.py
+++ b/fetch.py
@@ -41,3 +41,19 @@ def DirectFetcher(timeout: int) -> Iterator[_SessionFetcher]:
 def CachingFetcher(cache_path: str, timeout: int) -> Iterator[_SessionFetcher]:
     with requests_cache.CachedSession(cache_path, cache_control=True) as session:
         yield _SessionFetcher(session, timeout)
+
+
+class FakeFetcher(Fetcher):
+
+    def __init__(self, resources: dict[str, bytes]) -> None:
+        self._resources = resources
+        self._fetch_count = 0
+
+    def fetch(self, url: str) -> bytes:
+        self._fetch_count += 1
+        if url not in self._resources:
+            raise requests.HTTPError("URL not found")
+        return self._resources[url]
+
+    def request_count(self) -> int:
+        return self._fetch_count