
    df/                         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y)    N)OptionalTuple)WWWScope	transportreturnc                 l   | j                  d      }|?	 |j                         }t        |t              rt	        |d         t        |d         fS d S | j                  d      }|@t        |t        t        f      r*t        |      dk(  rt	        |d         t        |d         fS y # t        $ r Y y w xY w)Nsocketr      peername   )	get_extra_infogetpeername
isinstancetuplestrintOSErrorlistlenr   socket_infoinfos      P/home/api-vastappli/venv/lib/python3.12/site-packages/uvicorn/protocols/utils.pyget_remote_addrr      s    **84K	**,D3=dE3JCQL#d1g,/TPTT ##J/DJtdE];D	QDGc$q'l++  	 	s   ;B' B' '	B32B3c                 L   | j                  d      }|>|j                         }t        |t              rt	        |d         t        |d         fS d S | j                  d      }|@t        |t        t        f      r*t        |      dk(  rt	        |d         t        |d         fS y )Nr	   r   r
   socknamer   )r   getsocknamer   r   r   r   r   r   r   s      r   get_local_addrr      s    **84K&&(/9$/FDGc$q'l+PDP##J/DJtdE];D	QDGc$q'l++    c                 6    t        | j                  d            S )N
sslcontext)boolr   )r   s    r   is_sslr#   %   s    	((677r   scoper   c                 4    | j                  d      }|syd|z  S )Nclient z%s:%d)get)r$   r&   s     r   get_client_addrr)   )   s!    YYx FVr   c                     t         j                  j                  | d         }| d   r$dj                  || d   j	                  d            }|S )Npathquery_stringz{}?{}ascii)urllibparsequoteformatdecode)r$   path_with_query_strings     r   get_path_with_query_stringr4   0   sO    #\\//f>^!("E.$9$@$@$I"
 "!r   )asynciourllib.parser.   typingr   r   uvicorn._typesr   	Transportr   r   r   r   r"   r#   r)   r4    r   r   <module>r;      s      " #w00 XeCHo5N "	g// 	HU38_4M 	8g'' 8D 8: # "j "S "r   