
     O=dT                         d dl Z d dlZd dlmZmZmZ er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)TYPE_CHECKING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      AD:\Sites\api_v1\venv\Lib\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_stringr5   1   s]    #\//f>>^ 
!("E.$9$@$@$I$I"
 "
 "!r    )asynciourllib.parser/   typingr   r   r   asgiref.typingr   	Transportr   r   r   r   r#   r$   r*   r5    r    r   <module>r<      s)        1 1 1 1 1 1 1 1 1 1 (''''''w0 XeCHo5N    "	g/ 	HU38_4M 	 	 	 	8g' 8D 8 8 8 8: #    "j "S " " " " " "r    