
    pge}                         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dS )    N)	timedelta)total_seconds)ClientErrorTokenRetrievalError)DeferredRefreshableTokenFrozenAuthTokenSSOTokenProviderTokenProviderChain_utc_nowc                 B    t          |           g}t          |          S )N)	providers)AioSSOTokenProviderr
   )sessionr   s     2lib/python3.11/site-packages/aiobotocore/tokens.pycreate_token_resolverr      s'    G$$I 	2222    c                   *    e Zd ZefdZd Zd Zd ZdS )AioDeferredRefreshableTokenc                 |    || _         || _        || _        t          j                    | _        d | _        d | _        d S N)_time_fetcher_refresh_usingmethodasyncioLock_refresh_lock_frozen_token_next_refresh)selfr   refresh_usingtime_fetchers       r   __init__z$AioDeferredRefreshableToken.__init__   sA     *+ %\^^!!r   c                 H   K   |                                   d {V  | j        S r   )_refreshr   r   s    r   get_frozen_tokenz,AioDeferredRefreshableToken.get_frozen_token'   s/      mmoo!!r   c                   K   |                                  }|sd S |dk    }|s| j                                        sN| j        4 d {V  |                                  d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S d S )N	mandatory)_should_refreshr   locked_protected_refresh)r   refresh_typeblock_for_refreshs      r   r$   z$AioDeferredRefreshableToken._refresh+   sD     ++-- 	4 )K7 	0D$6$=$=$?$? 	0) 0 0 0 0 0 0 0 0--/////////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   	A77
BBc                   K   |                                  }|sd S 	 |                                 }|t          | j                  z   | _        |                                  d {V | _        n4# t          $ r' t          	                    d|d           |dk    r Y nw xY w| 
                                rt          | j        d          d S )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      ++-- 	4	$$&&C!$y9N'O'O'O!OD'+':':'<'<!<!<!<!<!<!<D 	 	 	NNG    
 {** +*	  	%@   	 	s   AA- -.BBN)__name__
__module____qualname__r   r"   r&   r$   r+    r   r   r   r      sX        2:
" 
" 
" 
"" " "
0 
0 
0    r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )r   c                   K   | j         4 d {V }|                    | j        |d         |d         |d                    d {V }d d d           d {V  n# 1 d {V swxY w Y   t          |d                   }| j        d         | j        d         |d	         |                                 |z   |d         |d         |d
         d}d|v r|d         |d<   t                              d           |S )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clientresponse
expires_in	new_tokens         r   _attempt_create_tokenz)AioSSOTokenProvider._attempt_create_tokenU   s     < 	 	 	 	 	 	 	6#00*z*">2">2	 1        H	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 x'<===
(9&|4#M2z1j)!.1%*+B%C	
 	
	 X%%(0(@In%1222s   7A
A#&A#c                   K   d}fd|D             }|r!d| }t                               |           d S t          j                            d                   }t          ||                                 z
            dk    rt                               d|            d S 	 |                                d {V S # t          $ r  t           	                    dd	           Y d S w xY w)
N)rC   rA   rB   rI   c                     g | ]}|v|	S r>   r>   ).0krS   s     r   
<listcomp>z=AioSSOTokenProvider._refresh_access_token.<locals>.<listcomp>t   s    :::a1E>>>>>r   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   rX   r   r8   )r   rS   keysmissing_keysmsgexpirys    `    r   _refresh_access_tokenz)AioSSOTokenProvider._refresh_access_tokenm   s     
 ;:::4::: 	NNNCKK4&&u-D'EFF$))++-..!33KKEVEEFFF4	33E::::::::: 	 	 	NN=NMMM44	s   $B? ?&C)(C)c                 :  K   | j         d         }| j         d         }t                              d|            |                     ||          }t          j                            |d                   }t                              d|            t          || 	                                z
            }|| j
        k     rD|                     |           d {V }|'|}|d         }| j                            |||           t          |d         |          S )	NrF   session_namezLoading cached SSO token for )rg   rL   zCached SSO token expires at rH   )
expiration)rP   r7   rR   _token_loaderr^   r_   r`   debugr   rQ   _REFRESH_WINDOWre   
save_tokenr   )r   	start_urlrg   
token_dictrh   	remainingnew_token_dicts          r   
_refresherzAioSSOTokenProvider._refresher   s4     $_5	'7BLBBCCC''	'MM
_**:k+BCC
@J@@AAA!*tyy{{":;;	t+++#'#=#=j#I#IIIIIIIN)+
'4
"--z .    }%*
 
 
 	
r   c                 V    | j         d S t          | j        | j        | j                  S )N)r!   )rP   r   METHODrq   rQ   r%   s    r   
load_tokenzAioSSOTokenProvider.load_token   s4    #4*Kty
 
 
 	
r   N)r;   r<   r=   rX   re   rq   rt   r>   r   r   r   r   T   sP          0  0
 
 
,
 
 
 
 
r   r   )r   loggingdatetimer   dateutil.parserr^   botocore.compatr   botocore.exceptionsr   r   botocore.tokensr   r   r	   r
   r   	getLoggerr;   r7   r   r   r   r>   r   r   <module>r|      s3               ) ) ) ) ) ) @ @ @ @ @ @ @ @              
	8	$	$3 3 37 7 7 7 7": 7 7 7tM
 M
 M
 M
 M
* M
 M
 M
 M
 M
r   