
    0j                         d Z ddlZddlZddlZddlZddlZ	 ddlmZ n#  ddlmZ Y nxY wddlm	Z	  ej
        e          Zd Zd Zd	dZdS )
zPThis module wraps Cloud Shell's IMDS-like interface inside an OAuth2-like helper    N)urlparse   )decode_partc                  h    t           j                            dd                              d          S )NAZUREPS_HOST_ENVIRONMENT zcloud-shell)osenvironget
startswith     W/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/msal/cloudshell.py_is_running_in_cloud_shellr      s'    :>>4b99DD]SSSr   c                 P   ddg}|D ]}|                      |          r|c S 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)scopecloud_shell_supported_audiencesautrailers        r   _scope_to_resourcer      s    2>'
# -  A 	HHH	A8 $AH $v||C  ##x ?6$$T**2CC 	!!!(AHg>>>Lr   c                 R   |                      dt          |pi d                    t          t          |                              ddi          }|j        dk    rt                              d|j                   t          j
        |j                                      d	i           }d
 |                    d          |                    d          d                                D             S t          j
        |j                  }d}|d         t          |d                   |                    d|          d}|pi                     d|          }	|d         |	k    rdd                    |	          dS |d                             d          }
ddd}t!          j                    }d}dd||dz   ||d|d<   t#          |
          dk    r	 t          j
        t%          |
d                             }|                    dd          |                    d d          d}|d!         |d"         ||d#         |d$         |                    d%          p|                    d&          p|d|d<   n1# t&          $ r$ t                              d'|
d                    Y nw xY wt)          j        t          j        |                              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                     i | ]
\  }}|||S r   r   ).0kvs      r   
<dictcomp>z!_obtain_token.<locals>.<dictcomp>7   s4       A 1   r   codemessage)r%   error_descriptionBeareraccess_token
expires_in
token_type)r/   r0   r1   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tidr8   r9   r;   r<   r=   unique_namez Unable to decode jwt payload: %szutf-8client_infor7   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_clientscopes	client_idr#   respcs_errorimds_payloadBEARERoauth2_responseexpected_token_typepartsrC   nowr=   jwt_payloads                  r   _obtain_tokenre   ,   s   -JBXXc"4f==>>@ @ @ V$  
 
D 3149===:di((,,Wb99 \\&))!)i!8!8" " egg   	 :di((LF$^4,|455"&&|V<<
 
O
  :2**<@@|$(;;;#!a!h!h#"% "%  	
 (..s33E 
 
K )++C1Tz0*
 *
O%& 5zzQ	G*[q%:%:;;K #uf55#|<<	 K #5)"5) "5)"5)&1oo6J&K&K '*"}55'*)	2 	2O-..  	G 	G 	GLL;U1XFFFFF	G%+%5
;&&w//&1 &117 M" 1<F0CO%&u- (( I+7+H(s   B"I6 6+J$#J$)NN)__doc__rT   rM   loggingr	   rQ   r   urllib.parseoauth2cli.oidcr   	getLogger__name__rJ   r   r   re   r   r   r   <module>rl      s    W V    				 &!!!!!!!&%%%%%%%% ' ' ' ' ' ' 
	8	$	$T T T  $Q Q Q Q Q Qs    )