@@ -112,6 +112,7 @@ def __init__(
112
112
feature_groups = [],
113
113
rsa_key = None ,
114
114
session = None ,
115
+ bearer_token = None ,
115
116
):
116
117
# Initialize environment args used for computing routes
117
118
self .env_args = dict ()
@@ -132,7 +133,7 @@ def __init__(
132
133
133
134
# NB: These many setattr calls update self.session.headers
134
135
# cookie authentication is mutually exclusive from token authentication
135
- if cookie is not None :
136
+ if cookie :
136
137
if email is not None or token is not None :
137
138
warnings .warn (
138
139
"Cookie and token authentication is mutually "
@@ -143,9 +144,17 @@ def __init__(
143
144
self .cookie = cookie
144
145
self .update_session_auth (use_signature = False )
145
146
else :
147
+ if cookie is not None :
148
+ warnings .warn (
149
+ "Cookie and token authentication is mutually "
150
+ "exclusive. Ignoring cookie"
151
+ )
146
152
self .session .headers ["Cookie" ] = None
147
153
self .email = email
148
- self .token = token
154
+ if token is not None :
155
+ self .token = token
156
+ if bearer_token is not None :
157
+ self .bearer_token = bearer_token
149
158
self .update_session_auth ()
150
159
151
160
# Initialize feature groups
@@ -236,6 +245,20 @@ def email(self, value):
236
245
self .update_headers (** {"X-User-Email" : value })
237
246
self .update_session_auth ()
238
247
248
+ @property
249
+ def bearer_token (self ):
250
+ try :
251
+ return self .session .headers ["Authorization" ]
252
+ except (NameError , KeyError ):
253
+ raise ValueError ("Bearer token is not set." )
254
+
255
+ @bearer_token .setter
256
+ def bearer_token (self , value ):
257
+ if is_valid_jwt_token (value ):
258
+ self .update_headers (** {"Authorization" : value })
259
+ else :
260
+ raise ValueError ("Malformed JWT Bearer Token" )
261
+
239
262
@property
240
263
def token (self ):
241
264
try :
@@ -244,23 +267,14 @@ def token(self):
244
267
raise ValueError ("token is not set." )
245
268
246
269
@token .setter
247
- def token (self , value : str ):
270
+ def token (self , value ):
248
271
if self .cookie is not None :
249
272
warnings .warn (
250
273
"Cookie and token authentication is mutually "
251
274
"exclusive. Clearing cookie from headers"
252
275
)
253
276
self .update_headers (** {"Cookie" : None })
254
-
255
- if value is not None :
256
- is_bearer_auth = value .startswith ("Bearer" )
257
- if is_bearer_auth :
258
- if is_valid_jwt_token (value ):
259
- self .update_headers (** {"Authorization" : value })
260
- else :
261
- raise ValueError ("Malformed JWT Bearer Token" )
262
- else :
263
- self .update_headers (** {"X-User-Token" : value })
277
+ self .update_headers (** {"X-User-Token" : value })
264
278
265
279
@property
266
280
def cookie (self ):
@@ -1088,9 +1102,7 @@ def get_route(self, method, **kwargs):
1088
1102
raise Exception (
1089
1103
f"For route: { method } , argument { arg } needs " f"to be provided."
1090
1104
)
1091
- return route_method ( # pylint: disable=no-value-for-parameter
1092
- * tuple (input_args )
1093
- )
1105
+ return route_method (* tuple (input_args ))
1094
1106
1095
1107
def get (self , route , ** kwargs ):
1096
1108
return self ._call ("get" , route , ** kwargs )
0 commit comments