Adding JSONSerializer
This commit is contained in:
@@ -2,6 +2,10 @@ class ElastiSearchException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class SerializationError(ElastiSearchException):
|
||||
pass
|
||||
|
||||
|
||||
class TransportError(ElastiSearchException):
|
||||
pass
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)}))
|
||||
Reference in New Issue
Block a user