# under the terms of the GNU General Public License as published by the
# Free Software Foundation, version 3.
+from abc import ABC, abstractmethod
import os
import os.path
from fetch import Fetcher
+class ImageStore(ABC):
+
+ @abstractmethod
+ def get_image(self, url: str) -> str:
+ raise NotImplementedError()
+
+
class ImageStoreError(Exception):
pass
-class ImageStore:
+class DiskImageStore(ImageStore):
def __init__(self, root_path: str, fetcher: Fetcher) -> None:
self._root_path = root_path
def _filename(self, url: str) -> str:
assert url not in self._images
- base = os.path.basename(url)
+ base = os.path.basename(url).replace('%', '')
if base not in self._filenames:
return base
stem, ext = os.path.splitext(base)
self._filenames.add(name)
self._images[url] = path
return self._images[url]
+
+
+class FakeImageStore(ImageStore):
+
+ def get_image(self, url: str) -> str:
+ return 'stored:' + url