@@ -18,8 +18,7 @@ def __init__(self, token_manager: TokenManager):
1818 self .logger = logging .getLogger (__name__ )
1919
2020 def get_auth_string (self ) -> str :
21- if self .token is None :
22- self .fetch_token ()
21+ self .fetch_token ()
2322 return f"Bearer { self .token } "
2423
2524 def requires_authentication (self ) -> bool :
@@ -28,15 +27,23 @@ def requires_authentication(self) -> bool:
2827 def fetch_token (self ):
2928 self .logger .info ("New token fetched for accessing organization API" )
3029 if self .token is None or self .token == "" or self .is_token_expired (self .token ):
31- with self .lock :
30+ with self .lock :
3231 if self .token is None or self .token == "" or self .is_token_expired (self .token ):
3332 self .token = self .token_manager .fetch_access_token ()
3433
3534 def is_token_expired (self , token ):
36- print (f'token is { token } ' )
37- decoded_jwt = jwt .decode (token , options = {"verify_signature" : True }, algorithms = ["RS256" ])
38- expires_at = decoded_jwt .get ("exp" )
39- # Add a buffer of 30 seconds
40- buffer_seconds = 30
41- buffer_expires_at = expires_at - buffer_seconds
42- return buffer_expires_at < datetime .datetime .now ().timestamp ()
35+ try :
36+ decoded = jwt .decode (token , options = {"verify_signature" : False })
37+ exp = decoded .get ('exp' )
38+
39+ if exp is None :
40+ return True # No expiration time present, consider it expired
41+
42+ # Check if the expiration time has passed
43+ return datetime .fromtimestamp (exp ) < datetime .utcnow ()
44+
45+ except jwt .DecodeError :
46+ return True # Token is invalid
47+ except Exception as e :
48+ print (f"An error occurred: { e } " )
49+ return True
0 commit comments