Skip to content

Commit 89f535a

Browse files
author
jyothish6190
committed
json serialization - bug fixed
1 parent a8c1855 commit 89f535a

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

sift/client.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
See: https://siftscience.com/docs/references/events-api
33
"""
44

5+
import decimal
56
import json
67
import requests
78
import requests.auth
89
import sys
910
if sys.version_info[0] < 3:
10-
import urllib.request, urllib.parse, urllib.error
11+
import six.moves.urllib as urllib
1112
_UNICODE_STRING = str
1213
else:
1314
import urllib.parse
@@ -26,6 +27,11 @@ def _quote_path(s):
2627
# optional arg to override this
2728
return urllib.parse.quote(s, '')
2829

30+
class DecimalEncoder(json.JSONEncoder):
31+
def default(self, o):
32+
if isinstance(o, decimal.Decimal):
33+
return (str(o),)
34+
return super(DecimalEncoder, self).default(o)
2935

3036
class Client(object):
3137

@@ -158,7 +164,7 @@ def track(
158164
try:
159165
response = self.session.post(
160166
path,
161-
data=json.dumps(properties),
167+
data=json.dumps(properties, cls=DecimalEncoder),
162168
headers=headers,
163169
timeout=timeout,
164170
params=params)

tests/test_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import datetime
2+
from decimal import Decimal
23
import warnings
34
import json
45
import mock
@@ -7,7 +8,7 @@
78
import sys
89
import requests.exceptions
910
if sys.version_info[0] < 3:
10-
import urllib.request, urllib.parse, urllib.error
11+
import six.moves.urllib as urllib
1112
else:
1213
import urllib.parse
1314

@@ -16,7 +17,7 @@ def valid_transaction_properties():
1617
return {
1718
'$buyer_user_id': '123456',
1819
'$seller_user_id': '654321',
19-
'$amount': 1253200,
20+
'$amount': Decimal('1253200.0'),
2021
'$currency_code': 'USD',
2122
'$time': int(datetime.datetime.now().strftime('%s')),
2223
'$transaction_id': 'my_transaction_id',

tests/test_client_v203.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import datetime
2+
from decimal import Decimal
23
import warnings
34
import json
45
import mock
@@ -7,7 +8,7 @@
78
import sys
89
import requests.exceptions
910
if sys.version_info[0] < 3:
10-
import urllib.request, urllib.parse, urllib.error
11+
import six.moves.urllib as urllib
1112
else:
1213
import urllib.parse
1314

@@ -16,7 +17,7 @@ def valid_transaction_properties():
1617
return {
1718
'$buyer_user_id': '123456',
1819
'$seller_user_id': '654321',
19-
'$amount': 1253200,
20+
'$amount': Decimal('1253200.0'),
2021
'$currency_code': 'USD',
2122
'$time': int(datetime.datetime.now().strftime('%s')),
2223
'$transaction_id': 'my_transaction_id',

0 commit comments

Comments
 (0)