Remove 'persistent' and 'dic' arg in Cache

'dic' was mostly intended for facebook now-bygone advanced buggy token storage. 'persistent' was needed by fb and 'proxy' mode, but a small workaround was found for the proxy mode (basically making sure the cache object is always at least 5-item long)
master
pictuga 2014-05-15 00:54:40 +02:00
parent 76e7f1ea00
commit bbf1ffbb15
1 changed files with 11 additions and 19 deletions

View File

@ -133,10 +133,9 @@ class ParseOptions:
class Cache:
""" Light, error-prone caching system. """
def __init__(self, folder, key, persistent=False, dic=False):
def __init__(self, folder, key):
self._key = key
self._dir = folder
self._dic = dic
maxsize = os.statvfs('./').f_namemax - len(self._dir) - 1 - 4 # ".tmp"
self._hash = urllib.quote_plus(self._key)[:maxsize]
@ -152,9 +151,6 @@ class Cache:
if data:
self._cached = json.loads(data)
if persistent:
self._cache = self._cached
def __del__(self):
self.save()
@ -167,10 +163,6 @@ class Cache:
elif key in self._cached:
self._cache[key] = self._cached[key]
return self._cached[key]
else:
if self._dic:
self._cache[key] = {}
return self._cache[key]
else:
return None
@ -184,6 +176,10 @@ class Cache:
if len(self._cache) == 0:
return
# useful to circumvent issue caused by :proxy
if len(self._cache) < 5:
self._cache.update(self._cached)
if not os.path.exists(self._dir):
os.makedirs(self._dir)
@ -203,18 +199,15 @@ class Cache:
return time.time() - os.path.getmtime(self._file) < sec
def new(self, key, persistent=False, dic=None):
def new(self, key):
""" Returns a Cache object in the same directory """
if key != self._key:
if dic is None:
dic = self._dic
return Cache(self._dir, key, persistent, dic)
return Cache(self._dir, key)
else:
return self
def redirect(self, key, persistent=False):
return self.__init__(self._dir, key, persistent)
def redirect(self, key):
return self.__init__(self._dir, key)
class SimpleDownload(urllib2.HTTPCookieProcessor):
"""
@ -508,7 +501,7 @@ def Init(url, cachePath, options):
url = url.replace(' ', '%20')
# cache
cache = Cache(cachePath, url, options.proxy)
cache = Cache(cachePath, url)
log(cache._hash)
return (url, cache)
@ -766,7 +759,6 @@ def cli_app():
def doFacebook(url, environ, headers, options, cache):
log('fb stuff')
facebook = cache.new('facebook', persistent=True, dic=True)
query = urlparse.urlparse(url).query
if 'code' in query: