Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2256d6d

Browse files
committed
add new get activity API endpoint
1 parent 66ca299 commit 2256d6d

File tree

2 files changed

+602
-553
lines changed

2 files changed

+602
-553
lines changed

stream/client.py

+30-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import jwt
77
import requests
88
from requests.adapters import HTTPAdapter
9+
from stream.serializer import _datetime_encoder
10+
911
from stream import exceptions, serializer
1012
from stream.httpsig.requests_auth import HTTPSignatureAuth
1113
from stream.signing import sign
@@ -304,9 +306,7 @@ def update_activities(self, activities):
304306
raise TypeError('Activities parameter should be of type list')
305307

306308
auth_token = self.create_jwt_token('activities', '*', feed_id='*')
307-
308309
data = dict(activities=activities)
309-
310310
return self.post('activities/', auth_token, data=data)
311311

312312
def update_activity(self, activity):
@@ -315,6 +315,34 @@ def update_activity(self, activity):
315315
'''
316316
return self.update_activities([activity])
317317

318+
def get_activities(self, ids=None, foreign_id_time=None):
319+
'''
320+
Retrieves activities by their ID or foreign_id + time combination
321+
322+
ids: list of activity IDs
323+
foreign_id_time: list of tuples (foreign_id, time)
324+
'''
325+
auth_token = self.create_jwt_token('activities', '*', feed_id='*')
326+
327+
if ids is None and foreign_id_time is None:
328+
raise TypeError('One the parameters ids or foreign_id_time must be provided and not None')
329+
330+
if ids is not None and foreign_id_time is not None:
331+
raise TypeError('At most one of the parameters ids or foreign_id_time must be provided')
332+
333+
query_params = {}
334+
335+
if ids is not None:
336+
query_params['ids'] = ','.join(ids)
337+
338+
if foreign_id_time is not None:
339+
foreign_ids, timestamps = zip(*foreign_id_time)
340+
timestamps = map(_datetime_encoder, timestamps)
341+
query_params['foreign_ids'] = ','.join(foreign_ids)
342+
query_params['timestamps'] = ','.join(timestamps)
343+
344+
return self.get('activities/', auth_token, params=query_params)
345+
318346
def create_redirect_url(self, target_url, user_id, events):
319347
'''
320348
Creates a redirect url for tracking the given events in the context

0 commit comments

Comments
 (0)