U
    &%e/  ã                   @   sž   d dl Z d dlZd dlmZmZ d dlmZ e jeee	e
f  dœdd„Ze jeee	e
f  dœdd„Ze jedœd	d
„Zde	dœdd„Zde	dœdd„ZdS )é    N)ÚOptionalÚTuple)ÚWWWScope)Ú	transportÚreturnc                 C   s¢   |   d¡}|d k	rZz0| ¡ }t|tƒr>t|d ƒt|d ƒfnd W S  tk
rX   Y d S X |   d¡}|d k	ržt|ttfƒržt|ƒdkržt|d ƒt|d ƒfS d S )NÚsocketr   é   Úpeernameé   )	Úget_extra_infoÚgetpeernameÚ
isinstanceÚtupleÚstrÚintÚOSErrorÚlistÚlen©r   Zsocket_infoÚinfo© r   úV/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/uvicorn/protocols/utils.pyÚget_remote_addr   s    
(
"r   c                 C   sˆ   |   d¡}|d k	r@| ¡ }t|tƒr<t|d ƒt|d ƒfS d S |   d¡}|d k	r„t|ttfƒr„t|ƒdkr„t|d ƒt|d ƒfS d S )Nr   r   r   Úsocknamer
   )r   Úgetsocknamer   r   r   r   r   r   r   r   r   r   Úget_local_addr   s    
&
"r   c                 C   s   t |  d¡ƒS )NÚ
sslcontext)Úboolr   )r   r   r   r   Úis_ssl%   s    r   r   )Úscoper   c                 C   s   |   d¡}|sdS d| S )NÚclientÚ z%s:%d)Úget)r   r    r   r   r   Úget_client_addr)   s    
r#   c                 C   s2   t j | d ¡}| d r.d || d  d¡¡}|S )NÚpathZquery_stringz{}?{}Úascii)ÚurllibÚparseÚquoteÚformatÚdecode)r   Zpath_with_query_stringr   r   r   Úget_path_with_query_string0   s     ÿr+   )ÚasyncioÚurllib.parser&   Útypingr   r   Zuvicorn._typesr   Ú	Transportr   r   r   r   r   r   r#   r+   r   r   r   r   Ú<module>   s   