
    
                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlmZ ddl	m
Z
  G d	 d
ej                        Zy)zJImplementation of credentials that refreshes using the iamcredentials API.    )absolute_import)print_function)division)unicode_literalsN)client)IamcredentailsApic                   >     e Zd ZdZ fdZed        Zd Zd Z xZ	S )ImpersonationCredentialsz%Y-%m-%dT%H:%M:%SZc           
      .   || _         t        ||      | _        | j                  j                  ||      }|j                  | _        | j                  |j                        | _        t        t        | /  | j
                  d d d | j                  d d |       y )N)scopes)_service_account_idr   apiGenerateAccessTokenaccessTokenaccess_token_ConvertExpiryTime
expireTimetoken_expirysuperr
   __init__)selfservice_account_idr   credentialsloggerresponse	__class__s         2platform/gsutil/gslib/impersonation_credentials.pyr   z!ImpersonationCredentials.__init__    s    1D 5DHxx++,>GH ,,D//0C0CDD	
"D243D3D373737373D3D3737:@ 3 B    c                     | j                   S N)r   )r   s    r   r   z+ImpersonationCredentials.service_account_id1   s    ###r   c                     | j                   j                  | j                  t        | j                              }|j
                  | _        | j                  |j                        | _	        y r    )
r   r   r   listr   r   r   r   r   r   )r   httpr   s      r   _refreshz!ImpersonationCredentials._refresh5   sS     xx++D,D,D,0,=?H ,,D//0C0CDDr   c                 ^    t         j                   j                  |t        j                        S r    )datetimestrptimer
   _EXPIRY_FORMAT)r   values     r   r   z+ImpersonationCredentials._ConvertExpiryTime=   s(    %%e&>&M&MO Or   )
__name__
__module____qualname__r(   r   propertyr   r$   r   __classcell__)r   s   @r   r
   r
      s.    '.B" $ $EOr   r
   )__doc__
__future__r   r   r   r   r&   oauth2clientr   gslib.iamcredentials_apir   OAuth2Credentialsr
    r   r   <module>r5      s4    Q & %  '   6"Ov77 "Or   