
    Dh@                         d dl Z d dlZd dlmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZ  ej"                  e      Zd Z G d de      Z G d	 d
e      Zy)    N)	timedelta)total_seconds)ClientErrorTokenRetrievalError)DeferredRefreshableTokenFrozenAuthTokenSSOTokenProviderTokenProviderChain_utc_nowc                 2    t        |       g}t        |      S )N)	providers)AioSSOTokenProviderr
   )sessionr   s     t/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/aiobotocore/tokens.pycreate_token_resolverr      s    G$I 	22    c                   (    e Zd ZefdZd Zd Zd Zy)AioDeferredRefreshableTokenc                 |    || _         || _        || _        t        j                         | _        d | _        d | _        y N)_time_fetcher_refresh_usingmethodasyncioLock_refresh_lock_frozen_token_next_refresh)selfr   refresh_usingtime_fetchers       r   __init__z$AioDeferredRefreshableToken.__init__   s;     *+ %\\^!!r   c                 V   K   | j                          d {    | j                  S 7 wr   )_refreshr   r   s    r   get_frozen_tokenz,AioDeferredRefreshableToken.get_frozen_token'   s&     mmo!!! 	s   )')c                 &  K   | j                         }|sy |dk(  }|s| j                  j                         s>| j                  4 d {    | j                          d {    d d d       d {    y y 7 .7 7 
# 1 d {  7  sw Y   y xY ww)N	mandatory)_should_refreshr   locked_protected_refresh)r   refresh_typeblock_for_refreshs      r   r$   z$AioDeferredRefreshableToken._refresh+   s     ++- )K7D$6$6$=$=$?)) 0 0--///0 0 0 %@0/0 0 0 0sZ   ABA6BA<A8 A<$B/A:0B8A<:B<BBB
Bc                 v  K   | j                         }|sy 	 | j                         }|t        | j                        z   | _        | j                          d {   | _        | j                         rt        | j                  d      y 7 1# t        $ r! t        j                  d|d       |dk(  r Y Sw xY ww)Nsecondsz5Refreshing token failed during the %s refresh period.Texc_infor(   z$Token has expired and refresh failed)provider	error_msg)r)   r   r   _attempt_timeoutr   r   r   	Exceptionloggerwarning_is_expiredr   r   )r   r,   nows      r   r+   z.AioDeferredRefreshableToken._protected_refresh7   s      ++-	$$&C!$y9N9N'O!OD'+':':'<!<D %@   "= 	NNG  
 {* +	s;   B9AB B
	B "(B9
B 'B63B95B66B9N)__name__
__module____qualname__r   r"   r&   r$   r+    r   r   r   r      s    2:
""
0r   r   c                   $    e Zd Zd Zd Zd Zd Zy)r   c                 h  K   | j                   j                  | j                  |d   |d   |d          d {   }t        |d         }| j                  d   | j                  d   |d	   | j                         |z   |d   |d   |d
   d}d|v r|d   |d<   t        j                  d       |S 7 ww)NclientIdclientSecretrefreshToken)	grantTyperA   rB   rC   	expiresInr/   sso_start_url
sso_regionaccessTokenregistrationExpiresAt)startUrlregionrH   	expiresAtrA   rB   rI   zSSO Token refresh succeeded)_clientcreate_token_GRANT_TYPEr   _sso_config_nowr7   info)r   tokenresponse
expires_in	new_tokens        r   _attempt_create_tokenz)AioSSOTokenProvider._attempt_create_tokenU   s     22&&:&~.~.	 3 
 
 x'<=
((9&&|4#M2z1j)!.1%*+B%C	
	 X%(0(@In%12)
s   6B2B0A8B2c                   K   d}|D cg c]	  }||vs| }}|rd| }t         j                  |       y t        j                  j	                  |d         }t        || j                         z
        dk  rt         j                  d|        y 	 | j                  |       d {   S c c}w 7 	# t        $ r t         j                  dd       Y y w xY ww)	N)rC   rA   rB   rI   z+Unable to refresh SSO token: missing keys: rI   r   z"SSO token registration expired at z SSO token refresh attempt failedTr1   )
r7   rR   dateutilparserparser   rQ   rW   r   r8   )r   rS   keyskmissing_keysmsgexpirys          r   _refresh_access_tokenz)AioSSOTokenProvider._refresh_access_tokenl   s     
 $(:a1E>::?~NCKK&&u-D'EF$))+-.!3KK<VHEF	33E::: ; ; 	NN=NM	sK   C	B*B*A9CB1 %B/&B1 )C/B1 1 CCCCc                 
  K   | j                   d   }| j                   d   }t        j                  d|        | j                  ||      }t        j
                  j                  |d         }t        j                  d|        t        || j                         z
        }|| j                  k  r@| j                  |       d {   }|%|}|d   }| j                  j                  |||       t        |d   |      S 7 ;w)	NrF   session_namezLoading cached SSO token for )rc   rL   zCached SSO token expires at rH   )
expiration)rP   r7   rR   _token_loaderrY   rZ   r[   debugr   rQ   _REFRESH_WINDOWra   
save_tokenr   )r   	start_urlrc   
token_dictrd   	remainingnew_token_dicts          r   
_refresherzAioSSOTokenProvider._refresher   s    $$_5	''73L>BC''	'M
__**:k+BC
3J<@A!*tyy{":;	t+++#'#=#=j#IIN)+
'4
""--z .  }%*
 	
 Js   CDD<Dc                 t    | j                   y t        | j                  | j                  | j                        S )N)r!   )rP   r   METHODrm   rQ   r%   s    r   
load_tokenzAioSSOTokenProvider.load_token   s1    #*KKtyy
 	
r   N)r;   r<   r=   rW   ra   rm   rp   r>   r   r   r   r   T   s    .0
,
r   r   )r   loggingdatetimer   dateutil.parserrY   botocore.compatr   botocore.exceptionsr   r   botocore.tokensr   r   r	   r
   r   	getLoggerr;   r7   r   r   r   r>   r   r   <module>rx      sW        ) @  
		8	$37": 7tL
* L
r   