o
    +if                     @   s   d Z ddlZddlZddlZddlZddlZzddlmZ W n
   ddlmZ Y ddlm	Z	 e
eZdd Zdd	 Zdd
dZdS )zPThis module wraps Cloud Shell's IMDS-like interface inside an OAuth2-like helper    N)urlparse   )decode_partc                   C   s   t jdddS )NAZUREPS_HOST_ENVIRONMENT zcloud-shell)osenvironget
startswith r   r   H/var/www/html/corbot_env/lib/python3.10/site-packages/msal/cloudshell.py_is_running_in_cloud_shell   s   r   c                 C   sF   ddg}|D ]}|  |r|  S qt| }|jr!d|j|jS | S )Nz(https://analysis.windows.net/powerbi/apiz4https://pas.windows.net/CheckMyAccess/Linux/.defaultz{}://{})r
   r   schemeformatnetloc)scopecloud_shell_supported_audiencesaur   r   r   _scope_to_resource   s   
r   c              	   C   s  | j dt|pi dtt|dddid}|jdkr>td|j t	
|jd	i }d
d |d|dd D S t	
|j}d}|d t|d |d|d}|pYi d|}	|d |	krldd|	dS |d d}
ddd}t }d}dd||d ||d|d< t|
dkrz5t	
t|
d }|d d|d!dd}|d" |d# ||d$ |d% |d&p|d'p|d|d< W n ty   td(|
d  Y nw tt	|d)d)|d*< |d+ |d d!< |d,r|d, |d,< |S )-Nz#http://localhost:50342/oauth2/token )resourceMetadatatrue)dataheadersi,  zCloud Shell IMDS error: %serrorc                 S   s   i | ]	\}}|r||qS r   r   ).0kvr   r   r   
<dictcomp>3   s    z!_obtain_token.<locals>.<dictcomp>codemessage)r   error_descriptionBeareraccess_token
expires_in
token_type)r%   r&   r'   broker_errorz>token_type {} is not supported by this version of Azure Portal.user
cloudshell)uidutidzcurrentuser@cloudshelli  )isssubaudexpiatpreferred_usernameid_token_claims   r   oidtidr.   r/   r1   r2   r3   unique_namez Unable to decode jwt payload: %szutf-8client_infor-   refresh_token)postdictjoinmapr   status_codeloggerdebugtextjsonloadsr	   itemsintr   splittimelenr   
ValueErrorbase64	b64encodedumpsencodedecode)http_clientscopes	client_idr   respcs_errorimds_payloadBEARERoauth2_responseexpected_token_typepartsr9   nowr3   jwt_payloadr   r   r   _obtain_token(   s   



	




r\   )NN)__doc__rK   rC   loggingr   rH   r   urllib.parseoauth2cli.oidcr   	getLogger__name__r@   r   r   r\   r   r   r   r   <module>   s   
