o
    i                     @   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 )NZAZUREPS_HOST_ENVIRONMENT zcloud-shell)osenvironget
startswith r
   r
   F/home/app/Keep/.python/lib/python3.10/site-packages/msal/cloudshell.py_is_running_in_cloud_shell   s   r   c                 C   sx   ddg}|D ]}|  |r|  S qt| }|js$|js$|jdd S |jr:|j dr/dnd}d|j|j|S | S )Nz(https://analysis.windows.net/powerbi/apiz4https://pas.windows.net/CheckMyAccess/Linux/.default/r   z//r   z	{}://{}{})r	   r   schemenetlocpathsplitformat)scopeZcloud_shell_supported_audiencesautrailerr
   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 )resourceZ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>7   s    z!_obtain_token.<locals>.<dictcomp>codemessage)r   Zerror_descriptionZBeareraccess_token
expires_in
token_type)r$   r%   r&   Zbroker_errorz>token_type {} is not supported by this version of Azure Portal.userZ
cloudshell)uidutidzcurrentuser@cloudshelli  )isssubZaudexpiatpreferred_usernameZid_token_claims   r   oidtidr+   r,   r-   r.   r/   Zunique_namez Unable to decode jwt payload: %szutf-8client_infor*   Zrefresh_token)postdictjoinmapr   status_codeloggerdebugtextjsonloadsr   itemsintr   r   timelenr   
ValueErrorbase64	b64encodedumpsencodedecode)http_clientZscopesZ	client_idr   respZcs_errorZimds_payloadZBEARERZoauth2_responseZexpected_token_typepartsr3   nowr/   Zjwt_payloadr
   r
   r   _obtain_token,   s   



	




rL   )NN)__doc__rC   r<   loggingr   r@   r   urllib.parseZoauth2cli.oidcr   	getLogger__name__r9   r   r   rL   r
   r
   r
   r   <module>   s   
