Source code for betty.fetch.static

"""
Fetch content from the internet.
"""

from __future__ import annotations

from typing import Mapping, TYPE_CHECKING

from typing_extensions import override

from betty.fetch import Fetcher, FetchResponse, FetchError
from betty.locale.localizable import static

if TYPE_CHECKING:
    from pathlib import Path


[docs] class StaticFetcher(Fetcher): """ Return predefined (static) fetch responses. """
[docs] def __init__( self, *, fetch_map: Mapping[str, FetchResponse] | None = None, fetch_file_map: Mapping[str, Path] | None = None, ): self._fetch_map = fetch_map or {} self._fetch_file_map = fetch_file_map or {}
[docs] @override async def fetch(self, url: str) -> FetchResponse: try: return self._fetch_map[url] except KeyError: raise FetchError(static("")) from None
[docs] @override async def fetch_file(self, url: str) -> Path: try: return self._fetch_file_map[url] except KeyError: raise FetchError(static("")) from None