From c3141413724aa1110a99e5a263e3d7cc31c1293d Mon Sep 17 00:00:00 2001 From: John Zeller Date: Tue, 30 Mar 2021 16:08:03 -0700 Subject: [PATCH 1/2] Add filter to get all transactions methods --- synapsepy/client.py | 4 ++-- synapsepy/user.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/synapsepy/client.py b/synapsepy/client.py index bac1d34..89f2765 100644 --- a/synapsepy/client.py +++ b/synapsepy/client.py @@ -280,7 +280,7 @@ def get_all_users(self, query=None, page=None, per_page=None, show_refresh_token ) return Users(response, self.http) - def get_all_trans(self, page=None, per_page=None): + def get_all_trans(self, page=None, per_page=None, filter=None): '''Gets all client transactions Args: page (int): (opt) Page number @@ -292,7 +292,7 @@ def get_all_trans(self, page=None, per_page=None): path = paths['trans'] response = self.http.get( - path, page=page, per_page=per_page + path, page=page, per_page=per_page, filter=filter, ) return Transactions(response) diff --git a/synapsepy/user.py b/synapsepy/user.py index a478151..bd1ca4b 100644 --- a/synapsepy/user.py +++ b/synapsepy/user.py @@ -704,7 +704,7 @@ def get_all_nodes(self, page=None, per_page=None, type=None): ) return Nodes(response) - def get_all_node_trans(self, node_id, page=None, per_page=None): + def get_all_node_trans(self, node_id, page=None, per_page=None, filter=filter): '''Retrieves all Transactions for a Node Args: node_id (str): ID of the Node @@ -724,11 +724,11 @@ def get_all_node_trans(self, node_id, page=None, per_page=None): + paths['trans'] ) response = self._do_request( - self.http.get,path, page=page, per_page=per_page + self.http.get,path, page=page, per_page=per_page, filter=filter, ) return Transactions(response) - def get_all_trans(self, page=None, per_page=None): + def get_all_trans(self, page=None, per_page=None, filter=filter): '''Retrieves all Transactions for a User Args: page (int): (opt) Page number @@ -739,7 +739,7 @@ def get_all_trans(self, page=None, per_page=None): self.logger.debug("Retrieving all Transactions for User") path = paths['users'] + '/' + self.id + paths['trans'] response = self._do_request( - self.http.get, path, page=page, per_page=per_page + self.http.get, path, page=page, per_page=per_page, filter=filter ) return Transactions(response) From edd7fbecc1761c39af9f7bffc725b2bcc079263e Mon Sep 17 00:00:00 2001 From: John Zeller Date: Tue, 27 Apr 2021 18:02:34 -0700 Subject: [PATCH 2/2] confirm json serializable --- synapsepy/client.py | 5 ++++- synapsepy/helpers.py | 15 +++++++++++++++ synapsepy/user.py | 7 +++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 synapsepy/helpers.py diff --git a/synapsepy/client.py b/synapsepy/client.py index 89f2765..4ab4a35 100644 --- a/synapsepy/client.py +++ b/synapsepy/client.py @@ -1,4 +1,5 @@ +from .helpers import json_serialize from .http_client import HttpClient from .user import User, Users @@ -289,7 +290,9 @@ def get_all_trans(self, page=None, per_page=None, filter=None): (Transactions): object containing pagination info and list of Transaction objects ''' self.logger.debug("getting all transactions") - + + filter = json_serialize(filter) + path = paths['trans'] response = self.http.get( path, page=page, per_page=per_page, filter=filter, diff --git a/synapsepy/helpers.py b/synapsepy/helpers.py new file mode 100644 index 0000000..8b0082a --- /dev/null +++ b/synapsepy/helpers.py @@ -0,0 +1,15 @@ +import json + +def json_serialize(obj): + if obj is None: + pass # No obj, don’t serialize. + elif isinstance(obj, str): + try: + _ = json.loads(obj) # All good, a valid JSON string. + except json.decoder.JSONDecodeError as e: + raise ValueError("obj is not a valid JSON string") from e + else: + try: + obj = json.dumps(obj) # All good, a JSON serializable object. + except TypeError as e: + raise ValueError("obj is not JSON serializable") from e diff --git a/synapsepy/user.py b/synapsepy/user.py index bd1ca4b..0263993 100644 --- a/synapsepy/user.py +++ b/synapsepy/user.py @@ -1,4 +1,5 @@ +from .helpers import json_serialize from .endpoints import paths from .node import Node, Nodes @@ -714,6 +715,9 @@ def get_all_node_trans(self, node_id, page=None, per_page=None, filter=filter): Transactions: Transactions object containing paginated info and Trans records ''' self.logger.debug("Retrieving all Transactions for Node") + + filter = json_serialize(filter) + path = ( paths['users'] + '/' @@ -737,6 +741,9 @@ def get_all_trans(self, page=None, per_page=None, filter=filter): Transactions: Transactions object containing paginated info and Trans records ''' self.logger.debug("Retrieving all Transactions for User") + + filter = json_serialize(filter) + path = paths['users'] + '/' + self.id + paths['trans'] response = self._do_request( self.http.get, path, page=page, per_page=per_page, filter=filter