
    &gz                         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mZ	  G d de	j
                  Z
 G d	 d
e	j                  ZdS )a  OAuth 2.0 Async Credentials.

This module provides credentials based on OAuth 2.0 access and refresh tokens.
These credentials usually access resources on behalf of a user (resource
owner).

Specifically, this is intended to use access tokens acquired using the
`Authorization Code grant`_ and can refresh those tokens using a
optional `refresh token`_.

Obtaining the initial access and refresh token is outside of the scope of this
module. Consult `rfc6749 section 4.1`_ for complete details on the
Authorization Code grant flow.

.. _Authorization Code grant: https://tools.ietf.org/html/rfc6749#section-1.3.1
.. _refresh token: https://tools.ietf.org/html/rfc6749#section-6
.. _rfc6749 section 4.1: https://tools.ietf.org/html/rfc6749#section-4.1
    )_credentials_async)_helpers)
exceptions)_reauth_async)credentialsc                       e Zd ZdZ ej        ej                  d             Z ej        ej                  d             Z	dS )Credentialsa  Credentials using OAuth 2.0 access and refresh tokens.

    The credentials are considered immutable. If you want to modify the
    quota project, use :meth:`with_quota_project` or ::

        credentials = credentials.with_quota_project('myproject-123)
    c           
        K   | j         | j        | j        | j        t	          j        d          t          j        || j        | j         | j        | j        | j        | j	        | j
                   d {V \  }}}}}|| _        || _        || _         |                    d          | _        || _	        | j        rd|v r~t          | j                  }t          |d                                                   }||z
  }	|	r>t	          j        d                    d                    |	                              d S d S d S )NzThe credentials do not contain the necessary fields need to refresh the access token. You must specify refresh_token, token_uri, client_id, and client_secret.)scopes
rapt_tokenenable_reauth_refreshid_tokenscopezUNot all requested scopes were granted by the authorization server, missing scopes {}.z, )_refresh_token
_token_uri
_client_id_client_secretr   RefreshErrorreauthrefresh_grant_scopes_rapt_token_enable_reauth_refreshtokenexpiryget	_id_token	frozensetsplitformatjoin)
selfrequestaccess_tokenrefresh_tokenr   grant_responser   requested_scopesgranted_scopes scopes_requested_but_not_granteds
             R/var/www/api/venv/lib/python3.11/site-packages/google/oauth2/_credentials_async.pyrefreshzCredentials.refresh2   s      '&&"*);   &OO<'"&"=	
 	
 	
 	
 	
 	
 	
 	
 	
	
 "
+'++J77%< 
	G~55(66&~g'>'D'D'F'FGGN/?./P,/  -??Ev		"BCC@ @  
	 
	55     c                 x   K   | j         s|                     |           d {V  |                     |           d S )N)validr+   apply)r"   r#   methodurlheaderss        r*   before_requestzCredentials.before_requestc   sL      z 	(,,w'''''''''

7r,   N)
__name__
__module____qualname____doc__r   copy_docstringr   r	   r+   r3    r,   r*   r	   r	   )   sw          X[455. . 65.` X[455  65  r,   r	   c                       e Zd ZdZdS )UserAccessTokenCredentialsa  Access token credentials for user account.

    Obtain the access token for a given user account or the current active
    user account with the ``gcloud auth print-access-token`` command.

    Args:
        account (Optional[str]): Account to get the access token for. If not
            specified, the current active account will be used.
        quota_project_id (Optional[str]): The project ID used for quota
            and billing.

    N)r4   r5   r6   r7   r9   r,   r*   r;   r;   j   s           r,   r;   N)r7   google.authr   r   r   r   google.oauth2r   r   oauth2_credentialsr	   r;   r9   r,   r*   <module>r?      s    & : 9 9 9 9 9             " " " " " " 1 1 1 1 1 1 ; ; ; ; ; ;> > > > >$0 > > >B    !3!N     r,   