From 3fec766e390b5d926efe8d52c3bcbd23e5f22af9 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 7 Jun 2016 12:54:28 -0400 Subject: [PATCH] webagg: redis lookup: if url contains wildcard, scan redis keys to check multiple keys until one is found webagg tests: fix test to include mime in live cdx --- webagg/responseloader.py | 12 +++++++++++- webagg/test/test_handlers.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/webagg/responseloader.py b/webagg/responseloader.py index d38c27b2..00f01069 100644 --- a/webagg/responseloader.py +++ b/webagg/responseloader.py @@ -133,7 +133,17 @@ class RedisResolver(RedisIndexSource): if hasattr(cdx, '_formatter') and cdx._formatter: redis_key = cdx._formatter.format(redis_key) - res = self.redis.hget(redis_key, filename) + res = None + + if '*' in redis_key: + for key in self.redis.scan_iter(redis_key): + #key = key.decode('utf-8') + res = self.redis.hget(key, filename) + if res: + break + else: + res = self.redis.hget(redis_key, filename) + if res and six.PY3: res = res.decode('utf-8') diff --git a/webagg/test/test_handlers.py b/webagg/test/test_handlers.py index 603f109d..70b239e2 100644 --- a/webagg/test/test_handlers.py +++ b/webagg/test/test_handlers.py @@ -124,7 +124,7 @@ class TestResAgg(FakeRedisTests, BaseTestClass): cdxlist = list([json.loads(cdx) for cdx in resp.text.rstrip().split('\n')]) cdxlist[0]['timestamp'] = '2016' assert(cdxlist == [{'url': 'http://httpbin.org/get', 'urlkey': 'org,httpbin)/get', 'is_live': 'true', - 'load_url': 'http://httpbin.org/get', 'source': 'live', 'timestamp': '2016'}]) + 'mime': '', 'load_url': 'http://httpbin.org/get', 'source': 'live', 'timestamp': '2016'}]) def test_live_resource(self): headers = {'foo': 'bar'}