@@ -41,8 +41,9 @@ <h1>Source code for gen3.auth</h1><div class="highlight"><pre>
4141< span class ="kn "> import</ span > < span class ="nn "> time</ span >
4242< span class ="kn "> import</ span > < span class ="nn "> logging</ span >
4343< span class ="kn "> from</ span > < span class ="nn "> urllib.parse</ span > < span class ="kn "> import</ span > < span class ="n "> urlparse</ span >
44+ < span class ="kn "> import</ span > < span class ="nn "> backoff</ span >
4445
45- < span class ="kn "> from</ span > < span class ="nn "> gen3.utils</ span > < span class ="kn "> import</ span > < span class ="n "> raise_for_status</ span >
46+ < span class ="kn "> from</ span > < span class ="nn "> gen3.utils</ span > < span class ="kn "> import</ span > < span class ="n "> DEFAULT_BACKOFF_SETTINGS </ span > < span class =" p " > , </ span > < span class =" n " > raise_for_status</ span >
4647
4748
4849< span class ="k "> class</ span > < span class ="nc "> Gen3AuthError</ span > < span class ="p "> (</ span > < span class ="ne "> Exception</ span > < span class ="p "> ):</ span >
@@ -289,7 +290,7 @@ <h1>Source code for gen3.auth</h1><div class="highlight"><pre>
289290 < span class ="k "> return</ span > < span class ="n "> _response</ span >
290291
291292< div class ="viewcode-block " id ="Gen3Auth.refresh_access_token "> < a class ="viewcode-back " href ="../../auth.html#gen3.auth.Gen3Auth.refresh_access_token "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> refresh_access_token</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
292- < span class ="sd "> """ Get a new access token """</ span >
293+ < span class ="sd "> """Get a new access token"""</ span >
293294 < span class ="k "> if</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _use_wts</ span > < span class ="p "> :</ span >
294295 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > < span class ="o "> =</ span > < span class ="n "> get_access_token_from_wts</ span > < span class ="p "> (</ span >
295296 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _wts_namespace</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _wts_idp</ span >
@@ -300,21 +301,37 @@ <h1>Source code for gen3.auth</h1><div class="highlight"><pre>
300301 < span class ="n "> cache_file</ span > < span class ="o "> =</ span > < span class ="n "> token_cache_file</ span > < span class ="p "> (</ span >
301302 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _refresh_token</ span > < span class ="ow "> and</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _refresh_token</ span > < span class ="p "> [</ span > < span class ="s2 "> "api_key"</ span > < span class ="p "> ]</ span > < span class ="ow "> or</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _wts_idp</ span >
302303 < span class ="p "> )</ span >
304+
305+ < span class ="k "> try</ span > < span class ="p "> :</ span >
306+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _write_to_file</ span > < span class ="p "> (</ span > < span class ="n "> cache_file</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > < span class ="p "> )</ span >
307+ < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
308+ < span class ="n "> logging</ span > < span class ="o "> .</ span > < span class ="n "> warning</ span > < span class ="p "> (</ span >
309+ < span class ="sa "> f</ span > < span class ="s2 "> "Exceeded number of retries, unable to write to cache file."</ span >
310+ < span class ="p "> )</ span >
311+
312+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > </ div >
313+
314+ < span class ="nd "> @backoff</ span > < span class ="o "> .</ span > < span class ="n "> on_exception</ span > < span class ="p "> (</ span >
315+ < span class ="n "> wait_gen</ span > < span class ="o "> =</ span > < span class ="n "> backoff</ span > < span class ="o "> .</ span > < span class ="n "> expo</ span > < span class ="p "> ,</ span > < span class ="n "> exception</ span > < span class ="o "> =</ span > < span class ="ne "> Exception</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> DEFAULT_BACKOFF_SETTINGS</ span >
316+ < span class ="p "> )</ span >
317+ < span class ="k "> def</ span > < span class ="nf "> _write_to_file</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> cache_file</ span > < span class ="p "> ,</ span > < span class ="n "> content</ span > < span class ="p "> ):</ span >
303318 < span class ="c1 "> # write a temp file, then rename - to avoid</ span >
304319 < span class ="c1 "> # simultaneous writes to same file race condition</ span >
305320 < span class ="n "> temp</ span > < span class ="o "> =</ span > < span class ="n "> cache_file</ span > < span class ="o "> +</ span > < span class ="p "> (</ span >
306321 < span class ="s2 "> ".tmp_eraseme_</ span > < span class ="si "> %d</ span > < span class ="s2 "> _</ span > < span class ="si "> %d</ span > < span class ="s2 "> "</ span > < span class ="o "> %</ span > < span class ="p "> (</ span > < span class ="n "> random</ span > < span class ="o "> .</ span > < span class ="n "> randrange</ span > < span class ="p "> (</ span > < span class ="mi "> 100000</ span > < span class ="p "> ),</ span > < span class ="n "> time</ span > < span class ="o "> .</ span > < span class ="n "> time</ span > < span class ="p "> ())</ span >
307322 < span class ="p "> )</ span >
308323 < span class ="k "> try</ span > < span class ="p "> :</ span >
309324 < span class ="k "> with</ span > < span class ="nb "> open</ span > < span class ="p "> (</ span > < span class ="n "> temp</ span > < span class ="p "> ,</ span > < span class ="s2 "> "w"</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> f</ span > < span class ="p "> :</ span >
310- < span class ="n "> f</ span > < span class ="o "> .</ span > < span class ="n "> write</ span > < span class ="p "> (</ span > < span class ="bp " > self </ span > < span class =" o " > . </ span > < span class =" n "> _access_token </ span > < span class ="p "> )</ span >
325+ < span class ="n "> f</ span > < span class ="o "> .</ span > < span class ="n "> write</ span > < span class ="p "> (</ span > < span class ="n "> content </ span > < span class ="p "> )</ span >
311326 < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> rename</ span > < span class ="p "> (</ span > < span class ="n "> temp</ span > < span class ="p "> ,</ span > < span class ="n "> cache_file</ span > < span class ="p "> )</ span >
312- < span class ="k "> except</ span > < span class ="p "> :</ span >
327+ < span class ="k "> return</ span > < span class ="kc "> True</ span >
328+ < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
313329 < span class ="n "> logging</ span > < span class ="o "> .</ span > < span class ="n "> warning</ span > < span class ="p "> (</ span > < span class ="s2 "> "failed to write token cache file: "</ span > < span class ="o "> +</ span > < span class ="n "> cache_file</ span > < span class ="p "> )</ span >
314- < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > </ div >
330+ < span class ="n "> logging</ span > < span class ="o "> .</ span > < span class ="n "> warning</ span > < span class ="p "> (</ span > < span class ="nb "> str</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ))</ span >
331+ < span class ="k "> raise</ span > < span class ="n "> e</ span >
315332
316333< div class ="viewcode-block " id ="Gen3Auth.get_access_token "> < a class ="viewcode-back " href ="../../auth.html#gen3.auth.Gen3Auth.get_access_token "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> get_access_token</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
317- < span class ="sd "> """ Get the access token - auto refresh if within 5 minutes of expiration """</ span >
334+ < span class ="sd "> """Get the access token - auto refresh if within 5 minutes of expiration"""</ span >
318335 < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > < span class ="p "> :</ span >
319336 < span class ="n "> cache_file</ span > < span class ="o "> =</ span > < span class ="n "> token_cache_file</ span > < span class ="p "> (</ span >
320337 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _refresh_token</ span > < span class ="ow "> and</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _refresh_token</ span > < span class ="p "> [</ span > < span class ="s2 "> "api_key"</ span > < span class ="p "> ]</ span > < span class ="ow "> or</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _wts_idp</ span >
@@ -324,10 +341,12 @@ <h1>Source code for gen3.auth</h1><div class="highlight"><pre>
324341 < span class ="k "> with</ span > < span class ="nb "> open</ span > < span class ="p "> (</ span > < span class ="n "> cache_file</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> f</ span > < span class ="p "> :</ span >
325342 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > < span class ="o "> =</ span > < span class ="n "> f</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> ()</ span >
326343 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token_info</ span > < span class ="o "> =</ span > < span class ="n "> decode_token</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > < span class ="p "> )</ span >
327- < span class ="k "> except</ span > < span class ="p "> :</ span >
344+ < span class ="k "> except</ span > < span class =" ne " > Exception </ span > < span class =" k " > as </ span > < span class =" n " > e </ span > < span class ="p "> :</ span >
328345 < span class ="n "> logging</ span > < span class ="o "> .</ span > < span class ="n "> warning</ span > < span class ="p "> (</ span > < span class ="s2 "> "ignoring invalid token cache: "</ span > < span class ="o "> +</ span > < span class ="n "> cache_file</ span > < span class ="p "> )</ span >
329346 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
330347 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token_info</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
348+ < span class ="n "> logging</ span > < span class ="o "> .</ span > < span class ="n "> warning</ span > < span class ="p "> (</ span > < span class ="nb "> str</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ))</ span >
349+
331350 < span class ="n "> need_new_token</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
332351 < span class ="ow "> not</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token</ span >
333352 < span class ="ow "> or</ span > < span class ="ow "> not</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _access_token_info</ span >
0 commit comments