U
    ~fh                     @  sB   d Z ddlmZ ddlZddlmZmZ ddddd	d
ddZdS )zAzure helpers.    )annotationsN)AnyOptional   strzOptional[str]floatzdict[str, Any])resource	client_idtimeoutreturnc              
   C  s*  ddl m}m} d}|d7 }|d|  7 }|r<|d| 7 }ddd	}|||d
}z0|||d}|j}	| d}
W 5 Q R X W n4 tk
r } zd| }t|d W 5 d }~X Y nX |	dkrd}t|zt	|
}W n tk
r   tdd Y nX dD ]&}|
|sd}|||
f }t|q|S )Nr   )Requesturlopenz5http://169.254.169.254/metadata/identity/oauth2/tokenz?api-version=2018-02-01z
&resource=z&client_id=truezapplication/json)ZMetadataAccept)headers)r
   utf8z'Failed to acquire IMDS access token: %s   z$Failed to acquire IMDS access token.z+Azure IMDS response must be in JSON format.)Zaccess_tokenZ
expires_inz0Azure IMDS response must contain %s, but was %s.)urllib.requestr   r   statusreaddecode	Exception
ValueErrorjsonloadsget)r   r	   r
   r   r   urlr   requestresponser   bodyemsgdatakey r$   :/tmp/pip-unpacked-wheel-36gvocj8/pymongo/_azure_helpers.py_get_azure_response   s8    


r&   )Nr   )__doc__
__future__r   r   typingr   r   r&   r$   r$   r$   r%   <module>   s      