6
6
import jwt
7
7
import requests
8
8
from requests .adapters import HTTPAdapter
9
+ from stream .serializer import _datetime_encoder
10
+
9
11
from stream import exceptions , serializer
10
12
from stream .httpsig .requests_auth import HTTPSignatureAuth
11
13
from stream .signing import sign
@@ -304,9 +306,7 @@ def update_activities(self, activities):
304
306
raise TypeError ('Activities parameter should be of type list' )
305
307
306
308
auth_token = self .create_jwt_token ('activities' , '*' , feed_id = '*' )
307
-
308
309
data = dict (activities = activities )
309
-
310
310
return self .post ('activities/' , auth_token , data = data )
311
311
312
312
def update_activity (self , activity ):
@@ -315,6 +315,34 @@ def update_activity(self, activity):
315
315
'''
316
316
return self .update_activities ([activity ])
317
317
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
+
318
346
def create_redirect_url (self , target_url , user_id , events ):
319
347
'''
320
348
Creates a redirect url for tracking the given events in the context
0 commit comments