diff --git a/oxrlib/loaders.py b/oxrlib/loaders.py index 5c802b185725b325e1cc71bc1ed9843bf4abd35c..750ec3f58dde46f48b0e216b5348f8e112da27c2 100644 --- a/oxrlib/loaders.py +++ b/oxrlib/loaders.py @@ -4,19 +4,20 @@ import io import urllib.request import urllib.parse -from . import errors +from . import cache, errors -class FileCache: - def __init__(self, dir_path, filename_pattern): - self.dir_path = dir_path - self.pattern = filename_pattern +class ReadCacheFile(cache.CacheFileBase): + ERRORS_MAP = [ + (FileNotFoundError, errors.LoaderNoDataError), + (OSError, errors.LoaderSourceError), + ] - def historical(self, date, base): - path = self.dir_path / self.pattern.format(date=date.isoformat(), base=base) - try: - return path.open() - except FileNotFoundError as error: - raise errors.LoaderNoDataError(path) from error + +class FileCache(cache.CacheBase): + ConfigurationError = errors.CacheLoaderConfigurationError + + def open(self, path): + return ReadCacheFile(path) class OXRAPIRequest: