Adding JSONSerializer

This commit is contained in:
Honza Kral
2013-05-02 23:42:11 +02:00
parent 28cfd5ec0b
commit 6aad2599d7
3 changed files with 36 additions and 0 deletions
+4
View File
@@ -2,6 +2,10 @@ class ElastiSearchException(Exception):
pass
class SerializationError(ElastiSearchException):
pass
class TransportError(ElastiSearchException):
pass
+24
View File
@@ -0,0 +1,24 @@
import json
from datetime import date, datetime
from .exceptions import SerializationError
class JSONSerializer(object):
def default(self, data):
if isinstance(data, (date, datetime)):
return data.isoformat()
raise TypeError
def loads(self, s):
try:
return json.loads(s)
except ValueError as e:
raise SerializationError(e)
def dumps(self, data):
try:
return json.dumps(data, default=self.default)
except ValueError as e:
raise SerializationError(e)
+8
View File
@@ -0,0 +1,8 @@
from datetime import datetime
from unittest import TestCase
from elasticsearch.serializer import JSONSerializer
class TestJSONSerializer(TestCase):
def test_datetime_serialization(self):
self.assertEquals(u'{"d": "2010-10-01T02:30:00"}', JSONSerializer().dumps({'d': datetime(2010, 10, 1, 2, 30)}))