Skip to content

Commit 9c12b04

Browse files
authored
json_dumps: add support for serializing buffer objects. (#3156)
1 parent 9579f12 commit 9c12b04

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

redash/utils/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import random
99
import re
1010
import uuid
11+
import binascii
1112

1213
import pystache
1314
import pytz
@@ -81,6 +82,8 @@ def default(self, o):
8182
return str(o)
8283
elif isinstance(o, (datetime.date, datetime.time)):
8384
return o.isoformat()
85+
elif isinstance(o, buffer):
86+
return binascii.hexlify(o)
8487
else:
8588
return super(JSONEncoder, self).default(o)
8689

tests/test_utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import binascii
12
from collections import namedtuple
23
from unittest import TestCase
34

45
from redash.utils import (build_url, collect_parameters_from_request,
5-
collect_query_parameters, filter_none)
6+
collect_query_parameters, filter_none,
7+
json_dumps)
68

79
DummyRequest = namedtuple('DummyRequest', ['host', 'scheme'])
810

@@ -61,3 +63,8 @@ def test_skips_nones(self):
6163
}
6264

6365
self.assertDictEqual(filter_none(d), {'a': 1})
66+
67+
68+
class TestJsonDumps(TestCase):
69+
def test_handles_binary(self):
70+
self.assertEqual(json_dumps(buffer("test")), '"74657374"')

0 commit comments

Comments
 (0)