a
    !fn                     @   s   d Z ddlZddlZddlZddlm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)_helpers)environment_vars)
exceptionsZgcloudAPPDATAz$application_default_credentials.jsonz
gcloud.cmd)configgetproject)authzprint-access-tokenzH764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.comc                  C   s   zt jtj W S  ty    Y n0 t jdkrDt jt jddt	S zt jt jt
 t	W S  ty   t jdd} t j| dt	 Y S 0 dS )zReturns the absolute path the the Cloud SDK's configuration directory.

    Returns:
        str: The Cloud SDK config path.
    nt~z.configZSystemDrivezC:\N)osenvironr   ZCLOUD_SDK_CONFIG_DIRKeyErrornamepathjoin
expanduser_CONFIG_DIRECTORY_WINDOWS_CONFIG_ROOT_ENV_VARr   )drive r   W/var/www/html/python-backend/venv/lib/python3.9/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)Zconfig_pathr   r   r   (get_application_default_credentials_pathK   s    r   c                 C   s>   t tjd}tj| |d}W d   n1 s00    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 }t| }|r:|ndW S  t	j
ttfyZ   Y dS 0 dS )zaGets the project ID from the Cloud SDK.

    Returns:
        Optional[str]: The project ID.
    r
   N)r   r   _CLOUD_SDK_WINDOWS_COMMAND_CLOUD_SDK_POSIX_COMMANDr%   %_CLOUD_SDK_CONFIG_GET_PROJECT_COMMANDr   
from_bytesstripr!   CalledProcessErrorOSErrorIOError)r#   r   r   r   r   get_project_id^   s    
r.   c              
   C   s   t jdkrt}nt}zD| r0|ft d|  f }n
|ft }tj|tjd}|d	 W S  tj
ttfy } z$td|}t|| W Y d}~n
d}~0 0 dS )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   zutf-8zFailed to obtain access tokenN)r   r   r&   r'   $_CLOUD_SDK_USER_ACCESS_TOKEN_COMMANDr!   r"   STDOUTdecoder*   r+   r,   r-   r   ZUserAccessTokenErrorsix
raise_from)accountr#   Zaccess_tokenZ
caught_excnew_excr   r   r   get_auth_access_tokenw   s&    

r6   )N)__doc__r   r!   r2   Zgoogle.authr   r   r   r   r   r   r'   r&   r(   r/   ZCLOUD_SDK_CLIENT_IDr   r   r%   r.   r6   r   r   r   r   <module>   s(   