Code Duplication    Length = 28-28 lines in 2 locations

wechatpy/session/memcachedstorage.py 1 location

@@ 9-36 (lines=28) @@
6
from wechatpy.utils import json
7
8
9
class MemcachedStorage(SessionStorage):
10
11
    def __init__(self, mc, prefix='wechatpy'):
12
        for method_name in ('get', 'set', 'delete'):
13
            assert hasattr(mc, method_name)
14
        self.mc = mc
15
        self.prefix = prefix
16
17
    def key_name(self, key):
18
        return '{0}:{1}'.format(self.prefix, key)
19
20
    def get(self, key, default=None):
21
        key = self.key_name(key)
22
        value = self.mc.get(key)
23
        if value is None:
24
            return default
25
        return json.loads(to_text(value))
26
27
    def set(self, key, value, ttl=0):
28
        if value is None:
29
            return
30
        key = self.key_name(key)
31
        value = json.dumps(value)
32
        self.mc.set(key, value, ttl)
33
34
    def delete(self, key):
35
        key = self.key_name(key)
36
        self.mc.delete(key)
37

wechatpy/session/redisstorage.py 1 location

@@ 8-35 (lines=28) @@
5
from wechatpy.utils import json
6
7
8
class RedisStorage(SessionStorage):
9
10
    def __init__(self, redis, prefix='wechatpy'):
11
        for method_name in ('get', 'set', 'delete'):
12
            assert hasattr(redis, method_name)
13
        self.redis = redis
14
        self.prefix = prefix
15
16
    def key_name(self, key):
17
        return '{0}:{1}'.format(self.prefix, key)
18
19
    def get(self, key, default=None):
20
        key = self.key_name(key)
21
        value = self.redis.get(key)
22
        if value is None:
23
            return default
24
        return json.loads(to_text(value))
25
26
    def set(self, key, value, ttl=None):
27
        if value is None:
28
            return
29
        key = self.key_name(key)
30
        value = json.dumps(value)
31
        self.redis.set(key, value, ex=ttl)
32
33
    def delete(self, key):
34
        key = self.key_name(key)
35
        self.redis.delete(key)
36