55import sys
66import time
77from datetime import datetime , timedelta
8+ from urllib .parse import parse_qs
89
910import jwt
1011import msal
@@ -30,20 +31,17 @@ def _maybe_nfs_exception(exception):
3031
3132
3233def get_token_dir ():
33- return os .path .join ( os . path . expanduser ("~" ), " .sumo" )
34+ return os .path .expanduser ("~/ .sumo" )
3435
3536
3637def get_token_path (resource_id , suffix , case_uuid = None ):
3738 if case_uuid is not None :
3839 return os .path .join (
39- os .path .expanduser ("~" ),
40- ".sumo" ,
40+ get_token_dir (),
4141 str (resource_id ) + "+" + str (case_uuid ) + suffix ,
4242 )
4343 else :
44- return os .path .join (
45- os .path .expanduser ("~" ), ".sumo" , str (resource_id ) + suffix
46- )
44+ return os .path .join (get_token_dir (), str (resource_id ) + suffix )
4745
4846
4947class AuthProvider :
@@ -91,6 +89,36 @@ def store_shared_access_key_for_case(self, case_uuid, token):
9189 ) as f :
9290 f .write (token )
9391 protect_token_cache (self ._resource_id , ".sharedkey" , case_uuid )
92+ return
93+
94+ def cleanup_shared_keys (self ):
95+ tokendir = get_token_dir ()
96+ if not os .path .exists (tokendir ):
97+ return
98+ for f in os .listdir (tokendir ):
99+ ff = os .path .join (tokendir , f )
100+ if os .path .isfile (ff ):
101+ (name , ext ) = os .path .splitext (ff )
102+ if ext .lower () == ".sharedkey" :
103+ try :
104+ with open (ff , "r" ) as file :
105+ token = file .read ()
106+ pq = parse_qs (token )
107+ se = pq ["se" ][0 ]
108+ end = datetime .strptime (
109+ se , "%Y-%m-%dT%H:%M:%S.%fZ"
110+ )
111+ now = datetime .utcnow ()
112+ if now > end :
113+ os .unlink (ff )
114+ pass
115+ pass
116+ pass
117+ except Exception :
118+ pass
119+ pass
120+ pass
121+ return
94122
95123 def has_case_token (self , case_uuid ):
96124 return os .path .exists (
0 commit comments