diff --git a/fanficfare/browsercache/__init__.py b/fanficfare/browsercache/__init__.py index 1d760942..08f69e23 100644 --- a/fanficfare/browsercache/__init__.py +++ b/fanficfare/browsercache/__init__.py @@ -31,12 +31,12 @@ class BrowserCache(object): Class to read web browser cache This wrapper class contains the actual impl object. """ - def __init__(self, cache_dir, age_limit=-1): + def __init__(self, getConfig_fn, getConfigList_fn): """Constructor for BrowserCache""" # import of child classes have to be inside the def to avoid circular import error for browser_cache_class in [SimpleCache, BlockfileCache, FirefoxCache2]: - self.browser_cache_impl = browser_cache_class.new_browser_cache(cache_dir, - age_limit=age_limit) + self.browser_cache_impl = browser_cache_class.new_browser_cache(getConfig_fn, + getConfigList_fn) if self.browser_cache_impl is not None: break if self.browser_cache_impl is None: diff --git a/fanficfare/browsercache/base_browsercache.py b/fanficfare/browsercache/base_browsercache.py index 85a9f1f3..82452a4a 100644 --- a/fanficfare/browsercache/base_browsercache.py +++ b/fanficfare/browsercache/base_browsercache.py @@ -44,13 +44,20 @@ from ..six import ensure_text from ..exceptions import BrowserCacheException +CACHE_DIR_CONFIG="browser_cache_path" +AGE_LIMIT_CONFIG="browser_cache_age_limit" + class BaseBrowserCache(object): """Base class to read various formats of web browser cache file""" - def __init__(self, cache_dir, age_limit=-1): + def __init__(self, getConfig_fn, getConfigList_fn): """Constructor for BaseBrowserCache""" ## only ever called by class method new_browser_cache() - self.cache_dir = cache_dir + self.getConfig = getConfig_fn + self.getConfigList = getConfigList_fn + + self.cache_dir = self.expand_cache_dir(getConfig_fn(CACHE_DIR_CONFIG)) + age_limit=self.getConfig(AGE_LIMIT_CONFIG) if age_limit is None or age_limit == '' or float(age_limit) < 0.0: self.age_limit = None else: @@ -58,17 +65,20 @@ class BaseBrowserCache(object): self.age_limit = float(age_limit) * 3600 @classmethod - def new_browser_cache(cls, cache_dir, age_limit=-1): + def new_browser_cache(cls, getConfig_fn, getConfigList_fn): """Return new instance of this BrowserCache class, or None if supplied directory not the correct cache type""" - cache_dir = os.path.realpath(os.path.expanduser(cache_dir)) - if cls.is_cache_dir(cache_dir): + if cls.is_cache_dir(cls.expand_cache_dir(getConfig_fn(CACHE_DIR_CONFIG))): try: - return cls(cache_dir, - age_limit=age_limit) + return cls(getConfig_fn, + getConfigList_fn) except BrowserCacheException: return None return None + @staticmethod + def expand_cache_dir(cache_dir): + return os.path.realpath(os.path.expanduser(cache_dir)) + @staticmethod def is_cache_dir(cache_dir): """Check given dir is a valid cache.""" diff --git a/fanficfare/browsercache/browsercache_simple.py b/fanficfare/browsercache/browsercache_simple.py index 67de5dd0..b5b97fb3 100644 --- a/fanficfare/browsercache/browsercache_simple.py +++ b/fanficfare/browsercache/browsercache_simple.py @@ -39,7 +39,6 @@ SIMPLE_EOF = struct.Struct('