o
    iL                     @   sx   d dl mZmZmZmZ d dlZd dlmZ d dlm	Z	 dZ
G dd deZG dd	 d	Zed
edZG dd dZdS )    )DictTypeTypeVarOptionalN)Message)urlparsetwirpc                   @   s   e Zd Zdddedededeeeef  ddf
dd	Zedefd
dZ	edefddZ
edefddZedeeef fddZdefddZdS )
TwirpErrorN)metadatacodemsgstatusr
   returnc                C   s    || _ || _|| _|pi | _d S N)_code_msg_status	_metadata)selfr   r   r   r
    r   Z/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/api/twirp_client.py__init__   s   zTwirpError.__init__c                 C      | j S r   )r   r   r   r   r   r   &      zTwirpError.codec                 C   r   r   )r   r   r   r   r   message*   r   zTwirpError.messagec                 C   r   )zHTTP status code)r   r   r   r   r   r   .      zTwirpError.statusc                 C   r   )zTwirp metadata)r   r   r   r   r   r
   3   r   zTwirpError.metadatac                 C   s>   d| j  d| j d| j }| jr|d| j 7 }|d7 }|S )NzTwirpError(code=z
, message=z	, status=z, metadata=))r   r   r   r
   )r   resultr   r   r   __str__8   s
   zTwirpError.__str__)__name__
__module____qualname__strintr   r   r   propertyr   r   r   r
   r   r   r   r   r   r	      s,    
r	   c                   @   sT   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdS )TwirpErrorCodecanceledunknowninvalid_argument	malformeddeadline_exceeded	not_found	bad_routealready_existspermission_deniedunauthenticatedresource_exhaustedfailed_preconditionabortedout_of_rangeunimplementedinternalunavailabledatalossN)r    r!   r"   CANCELEDUNKNOWNINVALID_ARGUMENT	MALFORMEDDEADLINE_EXCEEDED	NOT_FOUND	BAD_ROUTEALREADY_EXISTSPERMISSION_DENIEDUNAUTHENTICATEDRESOURCE_EXHAUSTEDFAILED_PRECONDITIONABORTEDOUT_OF_RANGEUNIMPLEMENTEDINTERNALUNAVAILABLE	DATA_LOSSr   r   r   r   r&   @   s&    r&   T)boundc                   @   sn   e Zd Zefdejdedededdf
ddZdd	d
ededede	eef de
e deej defddZdS )TwirpClientsessionhostpkgprefixr   Nc                 C   s^   t |}|j}|dr|dd}| d|j d|j }|d| _|| _|| _	|| _
d S )Nwshttpz:///)r   scheme
startswithreplacenetlocpathrstriprO   rP   rQ   _session)r   rN   rO   rP   rQ   	parse_resrU   r   r   r   r   Y   s   

zTwirpClient.__init__)timeoutservicemethoddataheadersresponse_classr]   c             	      s   | j  d| j d| j d| d| 	}d|d< | }| jj||||d4 I d H 5}	|	jdkrD||	 I d H W  d   I d H  S |		 I d H }
t
|
dd|
d	d
|	j|
dd1 I d H sew   Y  d S )NrT   .zapplication/protobufzContent-Type)ra   r`   r]      r   r(   r    meta)r   r
   )rO   rQ   rP   SerializeToStringr[   postr   
FromStringreadjsonr	   get)r   r^   r_   r`   ra   rb   r]   urlserialized_dataresp
error_datar   r   r   requestk   s&   &



zTwirpClient.request)r    r!   r"   DEFAULT_PREFIXaiohttpClientSessionr#   r   r   r   r   rK   r   ClientTimeoutrq   r   r   r   r   rM   X   s:    

	rM   )typingr   r   r   r   rs   google.protobuf.messager   urllib.parser   rr   	Exceptionr	   r&   rK   rM   r   r   r   r   <module>   s   (