a
    [ŠÝg9  ã                   @  sŒ   d dl mZ d dlZd dlZd dlmZ G dd„ deƒZdddœd	d
„Z	dddœdd„Z
dddœdd„Zdddœdd„Zdddœdd„ZdS )é    )ÚannotationsN)ÚWWWScopec                   @  s   e Zd ZdS )ÚClientDisconnectedN)Ú__name__Ú
__module__Ú__qualname__© r   r   úe/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/uvicorn/protocols/utils.pyr   	   ó    r   zasyncio.Transportztuple[str, int] | None)Ú	transportÚreturnc                 C  s    |   d¡}|d urXz0| ¡ }t|tƒr>t|d ƒt|d ƒfnd W S  tyV   Y d S 0 |   d¡}|d urœt|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   Zsocket_infoÚinfor   r   r	   Ú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r„t|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   r   r   r	   Úget_local_addr   s    
&
"r   Úboolc                 C  s   t |  d¡ƒS )NÚ
sslcontext)r    r   )r   r   r   r	   Úis_ssl)   s    r"   r   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_string4   s    r/   )Ú
__future__r   ÚasyncioÚurllib.parser*   Zuvicorn._typesr   r   r   r   r   r"   r'   r/   r   r   r   r	   Ú<module>   s   