88
99from .cache import Cache
1010from common .models .errors import UnhandledResponseError
11+ from common .clients import logger
1112
1213
1314class Service (Enum ):
@@ -37,7 +38,9 @@ def get_service_secrets(self):
3738 return secret_object
3839
3940 def create_jwt (self , now : int ):
41+ logger .info ("create_jwt" )
4042 secret_object = self .get_service_secrets ()
43+ logger .info (f"Secret object: { secret_object } " )
4144 claims = {
4245 "iss" : secret_object ['api_key' ],
4346 "sub" : secret_object ['api_key' ],
@@ -46,17 +49,45 @@ def create_jwt(self, now: int):
4649 "exp" : now + self .expiry ,
4750 "jti" : str (uuid .uuid4 ())
4851 }
49- return jwt .encode (claims , secret_object ['private_key' ], algorithm = 'RS512' ,
50- headers = {"kid" : secret_object ['kid' ]})
52+ logger .info (f"JWT claims: { claims } " )
53+ # ✅ Version-compatible JWT encoding
54+ try :
55+ # PyJWT 2.x
56+ return jwt .encode (
57+ claims ,
58+ secret_object ['private_key' ],
59+ algorithm = 'RS512' ,
60+ headers = {"kid" : secret_object ['kid' ]}
61+ )
62+ except TypeError :
63+ # PyJWT 1.x (older versions return bytes)
64+ token = jwt .encode (
65+ claims ,
66+ secret_object ['private_key' ],
67+ algorithm = 'RS512' ,
68+ headers = {"kid" : secret_object ['kid' ]}
69+ )
70+ # Convert bytes to string if needed
71+ return token .decode ('utf-8' ) if isinstance (token , bytes ) else token
5172
5273 def get_access_token (self ):
74+ logger .info ("get_access_token" )
5375 now = int (time .time ())
76+ logger .info (f"Current time: { now } , Expiry time: { now + self .expiry } " )
77+ # Check if token is cached and not expired
78+ logger .info (f"Cache key: { self .cache_key } " )
79+ logger .info ("Checking cache for access token" )
5480 cached = self .cache .get (self .cache_key )
81+ logger .info (f"Cached token: { cached } " )
5582 if cached and cached ["expires_at" ] > now :
83+ logger .info ("Returning cached access token" )
5684 return cached ["token" ]
5785
86+ logger .info ("No valid cached token found, creating new token" )
5887 _jwt = self .create_jwt (now )
5988
89+ logger .info (f"JWT created: { _jwt } " )
90+
6091 headers = {
6192 'Content-Type' : 'application/x-www-form-urlencoded'
6293 }
0 commit comments