1- # Copyright (c) Microsoft Corporation.
2- # Licensed under the MIT License.
3-
4- from azure .identity import DefaultAzureCredential
5- from datetime import datetime , timedelta
6-
7- class AccessTokenManager :
8- def __init__ (self , scope : str , refresh_buffer : int = 60 ):
9- self .scope = scope
10- self .refresh_buffer = refresh_buffer
11- self .credential = DefaultAzureCredential ()
12- self .token = None
13- self .expiry_time = None
14-
15- def get_access_token (self ) -> str :
16- if self .token is None or self .is_token_expired ():
17- self .refresh_token ()
18- return self .token
19-
20- def is_token_expired (self ) -> bool :
21- if self .expiry_time is None :
22- return True
23- return datetime .utcnow () >= (self .expiry_time - timedelta (seconds = self .refresh_buffer ))
24-
25- def refresh_token (self ):
26- new_token = self .credential .get_token (self .scope )
27- self .token = f"Bearer { new_token .token } "
28- self .expiry_time = datetime .utcnow () + timedelta (seconds = new_token .expires_on - int (datetime .utcnow ().timestamp ()))
1+ # Copyright (c) Microsoft Corporation.
2+ # Licensed under the MIT License.
3+
4+ from azure .identity import DefaultAzureCredential
5+ from datetime import datetime , timedelta
6+
7+ class AccessTokenManager :
8+ def __init__ (self , scope : str , refresh_buffer : int = 60 ):
9+ self .scope = scope
10+ self .refresh_buffer = refresh_buffer
11+ self .credential = DefaultAzureCredential ()
12+ self .token = None
13+ self .expiry_time = None
14+
15+ def get_access_token (self ) -> str :
16+ if self .token is None or self .is_token_expired ():
17+ self .refresh_token ()
18+ return self .token
19+
20+ def is_token_expired (self ) -> bool :
21+ if self .expiry_time is None :
22+ return True
23+ return datetime .utcnow () >= (self .expiry_time - timedelta (seconds = self .refresh_buffer ))
24+
25+ def refresh_token (self ):
26+ new_token = self .credential .get_token (self .scope )
27+ self .token = f"Bearer { new_token .token } "
28+ self .expiry_time = datetime .utcnow () + timedelta (seconds = new_token .expires_on - int (datetime .utcnow ().timestamp ()))
2929 print (f"Token refreshed. Expires at: { self .expiry_time } " )
0 commit comments