o
    96÷d/  ã                   @   s¨   d dl Z d dlZd dlmZmZ d dlmZ de jdeee	e
f  fdd„Zde jdeee	e
f  fdd	„Zde jdefd
d„Zddde	fdd„Zddde	fdd„ZdS )é    N)ÚOptionalÚTuple)ÚWWWScopeÚ	transportÚreturnc                 C   s¢   |   d¡}|d ur-z| ¡ }t|tƒr t|d ƒt|d ƒfW S d W S  ty,   Y d S w |   d¡}|d urOt|ttfƒrOt|ƒdkrOt|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   únC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\uvicorn/protocols/utils.pyÚget_remote_addr   s   
*ý
"r   c                 C   sˆ   |   d¡}|d ur | ¡ }t|tƒrt|d ƒt|d ƒfS d S |   d¡}|d urBt|ttfƒrBt|ƒdkrBt|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   Ú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      