
     @g/                         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Zde j        deee	e
f                  fdZde j        defdZd	d
de	fdZd	d
de	fdZdS )    N)OptionalTuple)WWWScope	transportreturnc                    |                      d          }|g	 |                                }t          |t                    r*t	          |d                   t          |d                   fnd S # t          $ r Y d S w xY w|                      d          }|Yt          |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   socket_infoinfos      K/var/www/piapp/venv/lib/python3.11/site-packages/uvicorn/protocols/utils.pyget_remote_addrr      s    **844K	**,,D3=dE3J3JTCQLL#d1g,,//PTT 	 	 	 44	
 ##J//DJtdE];;D		QDGc$q'll++4s   AA. .
A<;A<c                    |                      d          }|U|                                }t          |t                    r*t	          |d                   t          |d                   fnd S |                      d          }|Yt          |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   s      r   get_local_addrr      s    **844K&&((/9$/F/FPDGc$q'll++DP##J//DJtdE];;D		QDGc$q'll++4    c                 F    t          |                     d                    S )N
sslcontext)boolr   )r   s    r   is_sslr#   %   s    	((66777r   scoper   c                 >    |                      d          }|sdS d|z  S )Nclient z%s:%d)get)r$   r&   s     r   get_client_addrr)   )   s+    YYx  F rVr   c                     t           j                            | d                   }| d         r/d                    || d                             d                    }|S )Npathquery_stringz{}?{}ascii)urllibparsequoteformatdecode)r$   path_with_query_strings     r   get_path_with_query_stringr4   0   s]    #\//f>>^ 
!("E.$9$@$@$I$I"
 "
 "!r   )asynciourllib.parser.   typingr   r   uvicorn._typesr   	Transportr   r   r   r   r"   r#   r)   r4    r   r   <module>r;      s        " " " " " " " " # # # # # #w0 XeCHo5N    "	g/ 	HU38_4M 	 	 	 	8g' 8D 8 8 8 8: #    "j "S " " " " " "r   