o
    .j                     @  s8   d dl mZ ddlmZ ddlmZ G dd deZdS )	    )annotations   )HttpVersion   )AsyncExtensionFromHTTPc                   @  sp   e Zd ZdZedddZd d	d
Zd!ddZed"ddZed#ddZ	ed$ddZ
d%ddZd&ddZdS )'AsyncRawExtensionFromHTTPzERaw I/O from given HTTP stream after a 101 Switching Protocol Status.returnset[HttpVersion]c                   C  s   t jt jt jhS N)r   h11h2h3 r   r   d/home/thesage/.local/lib/python3.10/site-packages/urllib3_future/contrib/webextensions/_async/raw.pysupported_svn
   s   z'AsyncRawExtensionFromHTTP.supported_svnhttp_versionr   dict[str, str]c                 C  s   i S )zHSpecific HTTP headers required (request) before the 101 status response.r   )selfr   r   r   r   headers      z!AsyncRawExtensionFromHTTP.headersNonec                   sL   | j dur| j  I dH  d| _ | jdur!| j I dH  d| _d| _dS )z"End/Notify close for sub protocol.N)_dsaclose	_response_police_officer)r   r   r   r   r      s   


zAsyncRawExtensionFromHTTP.closestrc                   C  s   dS )Nrawr   r   r   r   r   implementation   r   z(AsyncRawExtensionFromHTTP.implementationset[str]c                   C  s   t  S r
   )setr   r   r   r   supported_schemes    s   z+AsyncRawExtensionFromHTTP.supported_schemesschemec                 C  s   | S r
   r   )r!   r   r   r   scheme_to_http_scheme$   r   z/AsyncRawExtensionFromHTTP.scheme_to_http_schemebytes | Nonec              
     s   | j d u s| jd u rtd| j | j4 I d H 7 |  4 I d H  | jd I d H \}}}W d   I d H  n1 I d H s@w   Y  |W  d   I d H  S 1 I d H sWw   Y  d S Nz-The HTTP extension is closed or uninitialized)r   r   OSErrorborrowr   _read_error_catcherrecv_extended)r   dataeot_r   r   r   next_payload(   s   (0z&AsyncRawExtensionFromHTTP.next_payloadbufstr | bytesc              
     s   | j d u s| jd u rtdt|tr| }| j | j4 I d H 3 |  4 I d H  | j	|I d H  W d   I d H  n1 I d H sFw   Y  W d   I d H  d S 1 I d H s\w   Y  d S r$   )
r   r   r%   
isinstancer   encoder&   r   _write_error_catchersendall)r   r-   r   r   r   send_payload0   s   
*.z&AsyncRawExtensionFromHTTP.send_payloadN)r   r	   )r   r   r   r   )r   r   )r   r   )r   r   )r!   r   r   r   )r   r#   )r-   r.   r   r   )__name__
__module____qualname____doc__staticmethodr   r   r   r   r    r"   r,   r3   r   r   r   r   r      s    



r   N)
__future__r   backendr   protocolr   r   r   r   r   r   <module>   s    