@@ -100,19 +100,6 @@ def __init__(
100100 pass
101101 pass
102102
103- cleanup_shared_keys ()
104-
105- self .auth = get_auth_provider (
106- client_id = APP_REGISTRATION [env ]["CLIENT_ID" ],
107- authority = f"{ AUTHORITY_HOST_URI } /{ TENANT_ID } " ,
108- resource_id = APP_REGISTRATION [env ]["RESOURCE_ID" ],
109- interactive = interactive ,
110- refresh_token = refresh_token ,
111- access_token = access_token ,
112- devicecode = devicecode ,
113- case_uuid = case_uuid ,
114- )
115-
116103 if env == "prod" :
117104 self .base_url = "https://api.sumo.equinor.com/api/v1"
118105 elif env == "localhost" :
@@ -121,6 +108,41 @@ def __init__(
121108 self .base_url = (
122109 f"https://main-sumo-core-{ env } .c3.radix.equinor.com/api/v1"
123110 )
111+ cleanup_shared_keys ()
112+
113+ def _get_auth_provider ():
114+ return get_auth_provider (
115+ client_id = APP_REGISTRATION [env ]["CLIENT_ID" ],
116+ authority = f"{ AUTHORITY_HOST_URI } /{ TENANT_ID } " ,
117+ resource_id = APP_REGISTRATION [env ]["RESOURCE_ID" ],
118+ interactive = interactive ,
119+ refresh_token = refresh_token ,
120+ access_token = access_token ,
121+ devicecode = devicecode ,
122+ case_uuid = case_uuid ,
123+ )
124+
125+ def _try_setup_auth_provider ():
126+ self .auth = _get_auth_provider ()
127+ response = httpx .get (
128+ url = self .base_url + "/userpermissions" ,
129+ headers = self .auth .get_authorization (),
130+ )
131+ if response .is_success :
132+ return True , False
133+
134+ elif response .status_code == 401 :
135+ return False , self .auth .delete_token ()
136+
137+ else :
138+ raise httpx .HTTPStatusError
139+
140+ ok , retry = _try_setup_auth_provider ()
141+ if retry :
142+ ok , retry = _try_setup_auth_provider ()
143+ if retry :
144+ ok , retry = _try_setup_auth_provider ()
145+
124146 return
125147
126148 def __enter__ (self ):
0 commit comments