o
    ˷e                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlmZ dZdZ	dZ
dZdZd	Zd
ZdZdd Zdd Zdd Zdd ZdddZdS )z9Helpers for reading the Google Cloud SDK's configuration.    N)environment_vars)
exceptionsgcloudAPPDATAz$application_default_credentials.jsonz
gcloud.cmd)configzconfig-helperz--formatjson)authzprint-access-tokenzH764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.comc                  C   s   zt jtj W S  ty   Y nw t jdkr"t jt jddt	S zt jt jt
 t	W S  tyE   t jdd} t j| dt	 Y S w )zReturns the absolute path the the Cloud SDK's configuration directory.

    Returns:
        str: The Cloud SDK config path.
    nt~z.configSystemDrivezC:\)osenvironr   CLOUD_SDK_CONFIG_DIRKeyErrornamepathjoin
expanduser_CONFIG_DIRECTORY_WINDOWS_CONFIG_ROOT_ENV_VARget)drive r   M/var/www/ideatree/venv/lib/python3.10/site-packages/google/auth/_cloud_sdk.pyget_config_path/   s   

r   c                  C   s   t  } tj| tS )zGets the path to the application default credentials file.

    The path may or may not exist.

    Returns:
        str: The full path to application default credentials.
    )r   r   r   r   _CREDENTIALS_FILENAME)config_pathr   r   r   (get_application_default_credentials_pathK   s   r   c                 C   s@   t tjd}tj| |d}W d   |S 1 sw   Y  |S )zJ Return subprocess.check_output with the given command and ignores stderr.wstderrN)openr   devnull
subprocesscheck_output)commandr#   outputr   r   r   _run_subprocess_ignore_stderrW   s   
r(   c               
   C   s   t jdkrt} nt} z	t| ft }W n tjtt	fy!   Y dS w z
t
|d}W n
 ty6   Y dS w z|d d d d W S  tyL   Y dS w )zaGets the project ID from the Cloud SDK.

    Returns:
        Optional[str]: The project ID.
    r	   Nutf-8configuration
propertiescoreproject)r   r   _CLOUD_SDK_WINDOWS_COMMAND_CLOUD_SDK_POSIX_COMMANDr(   _CLOUD_SDK_CONFIG_COMMANDr$   CalledProcessErrorOSErrorIOErrorr   loadsdecode
ValueErrorr   )r&   r'   r*   r   r   r   get_project_id^   s$   
r7   c              
   C   s   t jdkrt}nt}z"| r|ft d|  f }n|ft }tj|tjd}|d	 W S  tj
ttfyO } ztd|}t|| W Y d}~dS d}~ww )a  Load user access token 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.

    Returns:
        str: The user access token.

    Raises:
        google.auth.exceptions.UserAccessTokenError: if failed to get access
            token from gcloud.
    r	   z
--account=r    r)   zFailed to obtain access tokenN)r   r   r.   r/   $_CLOUD_SDK_USER_ACCESS_TOKEN_COMMANDr$   r%   STDOUTr5   stripr1   r2   r3   r   UserAccessTokenErrorsix
raise_from)accountr&   access_token
caught_excnew_excr   r   r   get_auth_access_token{   s*   

rB   )N)__doc__r   r   r$   r<   google.authr   r   r   r   r   r/   r.   r0   r8   CLOUD_SDK_CLIENT_IDr   r   r(   r7   rB   r   r   r   r   <module>   s*   