Skip to content

Commit edd7fbe

Browse files
committed
confirm json serializable
1 parent c314141 commit edd7fbe

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

synapsepy/client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
from .helpers import json_serialize
23
from .http_client import HttpClient
34

45
from .user import User, Users
@@ -289,7 +290,9 @@ def get_all_trans(self, page=None, per_page=None, filter=None):
289290
(Transactions): object containing pagination info and list of Transaction objects
290291
'''
291292
self.logger.debug("getting all transactions")
292-
293+
294+
filter = json_serialize(filter)
295+
293296
path = paths['trans']
294297
response = self.http.get(
295298
path, page=page, per_page=per_page, filter=filter,

synapsepy/helpers.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import json
2+
3+
def json_serialize(obj):
4+
if obj is None:
5+
pass # No obj, don’t serialize.
6+
elif isinstance(obj, str):
7+
try:
8+
_ = json.loads(obj) # All good, a valid JSON string.
9+
except json.decoder.JSONDecodeError as e:
10+
raise ValueError("obj is not a valid JSON string") from e
11+
else:
12+
try:
13+
obj = json.dumps(obj) # All good, a JSON serializable object.
14+
except TypeError as e:
15+
raise ValueError("obj is not JSON serializable") from e

synapsepy/user.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
from .helpers import json_serialize
23
from .endpoints import paths
34

45
from .node import Node, Nodes
@@ -714,6 +715,9 @@ def get_all_node_trans(self, node_id, page=None, per_page=None, filter=filter):
714715
Transactions: Transactions object containing paginated info and Trans records
715716
'''
716717
self.logger.debug("Retrieving all Transactions for Node")
718+
719+
filter = json_serialize(filter)
720+
717721
path = (
718722
paths['users']
719723
+ '/'
@@ -737,6 +741,9 @@ def get_all_trans(self, page=None, per_page=None, filter=filter):
737741
Transactions: Transactions object containing paginated info and Trans records
738742
'''
739743
self.logger.debug("Retrieving all Transactions for User")
744+
745+
filter = json_serialize(filter)
746+
740747
path = paths['users'] + '/' + self.id + paths['trans']
741748
response = self._do_request(
742749
self.http.get, path, page=page, per_page=per_page, filter=filter

0 commit comments

Comments
 (0)