B
    d                 @   s   d dl Z d dlZd dlZd dlmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ eeZG dd de dd	ejZG d
d deZG dd dejZG dd deZejee ejdddZdS )    N)CallableOptionalType)_common)cygrpc)MetadataTypec               @   s   e Zd ZdS )_AuthMetadataContextN)__name__
__module____qualname__ r   r   G/var/www/html/venv/lib/python3.7/site-packages/grpc/_plugin_wrapping.pyr      s   r   AuthMetadataContext)service_urlmethod_namec               @   s   e Zd Zdd ZdS )_CallbackStatec             C   s   t  | _d| _d | _d S )NF)	threadingLocklockcalled	exception)selfr   r   r   __init__&   s    
z_CallbackState.__init__N)r	   r
   r   r   r   r   r   r   r   $   s   r   c               @   sF   e Zd ZU eed< eed< eedddZeee	e
  dddZd	S )
_AuthMetadataPluginCallback_state	_callback)statecallbackc             C   s   || _ || _d S )N)r   r   )r   r   r   r   r   r   r   0   s    z$_AuthMetadataPluginCallback.__init__)metadataerrorc          	   C   s   | j j@ | j jd kr2| j jr(tdqDd| j _ntd| j jW d Q R X |d krj| |tjj	d  n| d tjj
tt| d S )Nz2AuthMetadataPluginCallback invoked more than once!Tz1AuthMetadataPluginCallback raised exception "{}"!)r   r   r   r   RuntimeErrorformatr   r   
StatusCodeokinternalr   encodestr)r   r   r   r   r   r   __call__4   s    

z$_AuthMetadataPluginCallback.__call__N)r	   r
   r   r   __annotations__r   r   r   r   r   BaseExceptionr'   r   r   r   r   r   ,   s
   
r   c               @   s:   e Zd ZU ejed< ejdddZeeedddZ	dS )	_Plugin_metadata_plugin)metadata_pluginc             C   s<   || _ d | _ydd l}| | _W n tk
r6   Y nX d S )Nr   )r+   Z_stored_ctxcontextvarscopy_contextImportError)r   r,   r-   r   r   r   r   K   s    z_Plugin.__init__)r   r   r   c             C   s   t t|t|}t }y| |t|| W nl tk
r } zNtd| j |j	 ||_|j
rjd S W d Q R X |d tjjtt| W d d }~X Y nX d S )Nz1AuthMetadataPluginCallback "%s" raised exception!)r   r   decoder   r+   r   	Exception_LOGGERr   r   r   r   r"   r$   r%   r&   )r   r   r   r   contextZcallback_stater   r   r   r   r'   Z   s     

z_Plugin.__call__N)
r	   r
   r   grpcAuthMetadataPluginr(   r   r&   r   r'   r   r   r   r   r*   H   s   

r*   )r,   namereturnc             C   sR   |d kr2y
| j }W q6 tk
r.   | jj }Y q6X n|}ttt| t	|S )N)
r	   AttributeError	__class__r4   CallCredentialsr   ZMetadataPluginCallCredentialsr*   r   r%   )r,   r6   Zeffective_namer   r   r    metadata_plugin_call_credentialsm   s    

r;   )collectionsloggingr   typingr   r   r   r4   r   Zgrpc._cythonr   Zgrpc._typingr   	getLoggerr	   r2   
namedtupler   r   objectr   ZAuthMetadataPluginCallbackr   r*   r5   r&   r:   r;   r   r   r   r   <module>   s"   

&