
    ,h9                    j    d dl mZ d dlZd dlZd dlmZ  G d de      ZddZ	ddZ
ddZdd	Zdd
Zy)    )annotationsN)WWWScopec                      e Zd Zy)ClientDisconnectedN)__name__
__module____qualname__     Y/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/uvicorn/protocols/utils.pyr   r   	   s    r   r   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 # t        $ r Y y w xY w)Nsocketr      peername   )	get_extra_infogetpeername
isinstancetuplestrintOSErrorlistlen	transportsocket_infoinfos      r   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++r   c                6    t        | j                  d            S )N
sslcontext)boolr   )r   s    r   is_sslr'   )   s    	((677r   c                4    | j                  d      }|syd|z  S )Nclient z%s:%d)get)scoper)   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_stringr8   4   sL    #\\//f>^!(0FnH]HdHdelHm!n!!r   )r   asyncio.Transportreturnztuple[str, int] | None)r   r9   r:   r&   )r,   r   r:   r   )
__future__r   asynciourllib.parser2   uvicorn._typesr   r   r   r   r#   r'   r-   r8   r
   r   r   <module>r?      s4    "   # ' &"	8"r   