88from stream .serializer import _datetime_encoder
99
1010from stream import exceptions , serializer
11- from stream .signing import sign
1211from stream .users import Users
1312from stream .utils import validate_feed_slug , validate_user_id , validate_foreign_id_time
14- from stream .httpsig .requests_auth import HTTPSignatureAuth
1513from requests import Request
1614from stream .reactions import Reactions
1715from stream .collections import Collections
1816from stream .personalization import Personalization
17+ from stream .feed import Feed
1918
2019try :
2120 from urllib .parse import urlparse
@@ -89,7 +88,6 @@ def __init__(
8988 self .base_analytics_url = "https://analytics.stream-io-api.com/analytics/"
9089
9190 self .session = requests .Session ()
92- self .auth = HTTPSignatureAuth (api_key , secret = api_secret )
9391
9492 token = self .create_jwt_token ("personalization" , "*" , feed_id = "*" , user_id = "*" )
9593 self .personalization = Personalization (self , token )
@@ -110,15 +108,9 @@ def feed(self, feed_slug, user_id):
110108 :param feed_slug: the slug of the feed
111109 :param user_id: the user id
112110 """
113- from stream .feed import Feed
114-
115111 feed_slug = validate_feed_slug (feed_slug )
116112 user_id = validate_user_id (user_id )
117-
118- # generate the token
119- feed_id = "%s%s" % (feed_slug , user_id )
120- token = sign (self .api_secret , feed_id )
121-
113+ token = self .create_jwt_token ("feed" , "*" , feed_id = "*" )
122114 return Feed (self , feed_slug , user_id , token )
123115
124116 def get_default_params (self ):
@@ -177,34 +169,6 @@ def _parse_response(self, response):
177169 self .raise_exception (parsed_result , status_code = response .status_code )
178170 return parsed_result
179171
180- def _make_signed_request (self , method_name , relative_url , params = None , data = None ):
181- params = params or {}
182- data = data or {}
183- serialized = None
184- headers = self .get_default_header ()
185- headers ["X-Api-Key" ] = self .api_key
186- date_header = datetime .utcnow ().strftime ("%a, %d %b %Y %H:%M:%S GMT" )
187- headers ["Date" ] = date_header
188- default_params = self .get_default_params ()
189- default_params .update (params )
190- url = self .get_full_url ("api" , relative_url )
191- serialized = serializer .dumps (data )
192- method = getattr (self .session , method_name )
193- if method_name in ["post" , "put" ]:
194- serialized = serializer .dumps (data )
195- response = method (
196- url ,
197- auth = self .auth ,
198- data = serialized ,
199- headers = headers ,
200- params = default_params ,
201- timeout = self .timeout ,
202- )
203- logger .debug (
204- "stream api call %s, headers %s data %s" , response .url , headers , data
205- )
206- return self ._parse_response (response )
207-
208172 def create_user_session_token (self , user_id , ** extra_data ):
209173 """Setup the payload for the given user_id with optional
210174 extra data (key, value pairs) and encode it using jwt
@@ -286,8 +250,6 @@ def errors_from_fields(exception_fields):
286250 error_message = result ["detail" ]
287251 exception_fields = result .get ("exception_fields" )
288252 if exception_fields is not None :
289- errors = []
290-
291253 if isinstance (exception_fields , list ):
292254 errors = [
293255 errors_from_fields (exception_dict )
@@ -341,7 +303,8 @@ def add_to_many(self, activity, feeds):
341303
342304 """
343305 data = {"activity" : activity , "feeds" : feeds }
344- return self ._make_signed_request ("post" , "feed/add_to_many/" , data = data )
306+ token = self .create_jwt_token ("feed" , "*" , feed_id = "*" )
307+ return self .post ("feed/add_to_many/" , token , data = data )
345308
346309 def follow_many (self , follows , activity_copy_limit = None ):
347310 """
@@ -355,9 +318,9 @@ def follow_many(self, follows, activity_copy_limit=None):
355318
356319 if activity_copy_limit != None :
357320 params = dict (activity_copy_limit = activity_copy_limit )
358-
359- return self ._make_signed_request (
360- "post" , " follow_many/" , params = params , data = follows
321+ token = self . create_jwt_token ( "follower" , "*" , feed_id = "*" )
322+ return self .post (
323+ "follow_many/" , token , params = params , data = follows
361324 )
362325
363326 def update_activities (self , activities ):
0 commit comments