Skip to content

Commit

Permalink
Pickle is now the default serialier.
Browse files Browse the repository at this point in the history
  • Loading branch information
Toru Maesaka committed May 5, 2011
1 parent 653d016 commit cab0d40
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 24 deletions.
29 changes: 15 additions & 14 deletions kyototycoon/kt_http.py
Expand Up @@ -26,6 +26,8 @@ class ProtocolHandler:
def __init__(self, pickle_protocol=2):
self.error_obj = kt_error.KyotoTycoonError()
self.pickle_protocol = pickle_protocol
self.pack = self._pickle_packer
self.unpack = self._pickle_unpacker

def error(self):
return self.error_obj
Expand All @@ -51,12 +53,18 @@ def echo(self):
return True if res.status == 200 else False

def get(self, key):
if key is None: return False
if key is None:
return False

key = urllib.quote(key.encode('UTF-8'))
self.conn.request('GET', key)
rv = self.conn.getresponse()
body = rv.read()
return body if rv.status == 200 else None

if rv.status != 200:
return None

return self.unpack(body)

def get_int(self, key):
if key is None: return False
Expand All @@ -73,11 +81,9 @@ def get_int(self, key):
def set(self, key, value, expire):
if key is None:
return False
if not isinstance(value, str):
value = str(value)

key = urllib.quote(key.encode('UTF-8'))
value = value.encode('UTF-8')
value = self.pack(value)
return self._rest_put(key, value, expire) == 201

def set_int(self, key, value, expire):
Expand All @@ -91,18 +97,16 @@ def set_int(self, key, value, expire):
return self._rest_put(key, value, expire) == 201

def add(self, key, value, expire):
if key is None: return False
if key is None:
return False

headers = { 'X-Kt-Mode' : 'add' }
if expire != None:
expire = int(time.time()) + expire;
headers["X-Kt-Xt"] = str(expire)

if not isinstance(value, str):
value = str(value)

key = urllib.quote(key.encode('UTF-8'))
value = value.encode('UTF-8')
value = self.pack(value)

self.conn.request('PUT', key, value, headers)
rv = self.conn.getresponse()
Expand All @@ -125,12 +129,9 @@ def replace(self, key, value, expire):
if expire != None:
expire = int(time.time()) + expire;
headers["X-Kt-Xt"] = str(expire)

if not isinstance(value, str):
value = str(value)

key = urllib.quote(key.encode('UTF-8'))
value = value.encode('UTF-8')
value = self.pack(value)

self.conn.request('PUT', key, value, headers)
rv = self.conn.getresponse()
Expand Down
15 changes: 5 additions & 10 deletions tests/t_simple.py
Expand Up @@ -36,20 +36,15 @@ def test_set(self):
self.assertFalse(self.kt_handle.get(None))

self.assertTrue(self.kt_handle.set('cb', 1791))
self.assertEqual(self.kt_handle.get('cb'), '1791')
self.assertEqual(self.kt_handle.get('cb'), 1791)

self.assertTrue(self.kt_handle.set('cb', 1791.1226))
self.assertEqual(self.kt_handle.get('cb'), '1791.1226')
self.assertEqual(self.kt_handle.get('cb'), 1791.1226)

def test_set_int(self):
self.assertTrue(self.kt_handle.clear())
self.assertTrue(self.kt_handle.set_int('key', 1984))

# get() would fail due to the default serializer.
self.failIf(self.kt_handle.get('key') == 1984)
# get_int() must succeed.
self.assertEqual(self.kt_handle.get_int('key'), 1984)
# this must fail since set_int() only accepts an integer.
self.assertFalse(self.kt_handle.set_int('key', '1984'))

def test_remove(self):
Expand All @@ -72,9 +67,9 @@ def test_replace(self):
self.assertFalse(self.kt_handle.replace(None, 'value'))

self.assertTrue(self.kt_handle.replace('apple', 212))
self.assertEqual(self.kt_handle.get('apple'), '212')
self.assertEqual(self.kt_handle.get('apple'), 212)
self.assertTrue(self.kt_handle.replace('apple', 121))
self.assertEqual(self.kt_handle.get('apple'), '121')
self.assertEqual(self.kt_handle.get('apple'), 121)

def test_add(self):
self.assertTrue(self.kt_handle.clear())
Expand All @@ -91,7 +86,7 @@ def test_add(self):
self.assertFalse(self.kt_handle.add(None, 'value'))

self.assertTrue(self.kt_handle.add('number', 111))
self.assertEqual(self.kt_handle.get('number'), '111')
self.assertEqual(self.kt_handle.get('number'), 111)

def test_large_key(self):
large_key = 'x' * self.LARGE_KEY_LEN
Expand Down

0 comments on commit cab0d40

Please sign in to comment.