@@ -96,17 +96,12 @@ def _renew_access_token(self):
96
96
def _extract_expiration (self , access_token ):
97
97
expiration_date = 0
98
98
try :
99
- token_parts = access_token .split ('.' )
100
- payload_bytes = bytes (token_parts [1 ], 'utf-8' )
101
-
102
- # Padding required for the base64 library
103
- decoded_payload_bytes = base64 .urlsafe_b64decode (payload_bytes + b'==' )
104
- payload_string = decoded_payload_bytes .decode ('utf-8' )
105
- decoded_payload_dict = json .loads (payload_string )
99
+ decoded_payload_dict = self ._decode_payload (access_token )
106
100
107
101
if 'exp' in decoded_payload_dict .keys ():
108
102
expiration_date = decoded_payload_dict ['exp' ]
109
- self .logger .debug ('Token expiration: {}' .format (expiration_date ))
103
+ self .logger .debug ('Token expiration: {}'
104
+ .format (expiration_date ))
110
105
except Exception as err :
111
106
# If an Exception is raised, log and continue. expiration_date will
112
107
# either be 0 or set to the value in the JWT.
@@ -115,6 +110,15 @@ def _extract_expiration(self, access_token):
115
110
'{}: {}' .format (type (err ).__name__ , err ))
116
111
return expiration_date
117
112
113
+ def _decode_payload (self , access_token ):
114
+ token_parts = access_token .split ('.' )
115
+
116
+ # Padding required for the base64 library
117
+ payload_bytes = bytes (token_parts [1 ], 'utf-8' ) + b'=='
118
+ decoded_payload_bytes = base64 .urlsafe_b64decode (payload_bytes )
119
+ payload_string = decoded_payload_bytes .decode ('utf-8' )
120
+ return json .loads (payload_string )
121
+
118
122
def dump_response (self , response ):
119
123
data = dump .dump_all (response )
120
124
return str (data .decode ('utf-8' ))
0 commit comments