
    ie                        d dl mZ d dlZd dlZd dlmZ ej        rddlmZ ddl	m
Z
 ddlmZ  G d	 d
          Z G d de          ZdS )    )annotationsN)RLock   )HTTPResponse)HttpVersion   )ExtensionFromHTTPc                      e Zd Z	 	 	 	 ddd
Zedd            Zedd            Zedd            Zedd            ZddZ	ddZ
dS )ServerSentEventNevent
str | Nonedataidretry
int | NonereturnNonec                V    |sd}|d}|d}|| _         || _        || _        || _        d S )Nmessage )_event_data_id_retry)selfr   r   r   r   s        c/root/projects/butler/venv/lib/python3.11/site-packages/urllib3_future/contrib/webextensions/sse.py__init__zServerSentEvent.__init__   sE      	E<D:B
    strc                    | j         S N)r   r   s    r   r   zServerSentEvent.event$   
    {r   c                    | j         S r!   )r   r"   s    r   r   zServerSentEvent.data(   s
    zr   c                    | j         S r!   )r   r"   s    r   r   zServerSentEvent.id,   s	    xr   c                    | j         S r!   )r   r"   s    r   r   zServerSentEvent.retry0   r#   r   
typing.Anyc                4    t          j        | j                  S r!   )jsonloadsr   r"   s    r   r)   zServerSentEvent.json4   s    z$)$$$r   c                2   d| j         g}| j        dk    r|                    d| j                   | j        dk    r|                    d| j                   | j        |                    d| j                   dd                    |           dS )	Nzevent=r   zdata=zid=zretry=zServerSentEvent(z, ))r   r   appendr   r   join)r   piecess     r   __repr__zServerSentEvent.__repr__7   s    )4:))*9??MM/$)//0007b==MM+++,,,:!MM14:112226$))F"3"36666r   )NNNN)
r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r   r'   )__name__
__module____qualname__r   propertyr   r   r   r   r)   r0    r   r   r   r      s         !     *    X    X    X    X% % % %7 7 7 7 7 7r   r   c                  2    e Zd Zd' fdZed(d            Zed)d            Zed*d	            Zed+d            Z	d'dZ
d, fdZd-dZej        ddd.d            Zej        ddd/d            Zddd0dZd1d"Zed2d$            Zed3d&            Z xZS )4 ServerSideEventExtensionFromHTTPr   r   c                    t                                                       d | _        d| _        t	                      | _        d | _        d S )Nr   )superr   _last_event_id_bufferr   _lock_stream)r   	__class__s    r   r   z)ServerSideEventExtensionFromHTTP.__init__C   s>    *.WW
CGr   set[HttpVersion]c                 H    t           j        t           j        t           j        hS r!   )r   h11h2h3r6   r   r   supported_svnz.ServerSideEventExtensionFromHTTP.supported_svnK   s    @@r   r   c                     dS )Nnativer6   r6   r   r   implementationz/ServerSideEventExtensionFromHTTP.implementationO   s    xr   dict[str, typing.Any]c                
    ddiS )Npreload_contentFr6   r"   s    r   urlopen_kwargsz/ServerSideEventExtensionFromHTTP.urlopen_kwargsS   s    !5))r   boolc                    | j         d u S r!   )r>   r"   s    r   closedz'ServerSideEventExtensionFromHTTP.closedW   s    |t##r   c                   | j         | j        | j                                          | j        j        v| j        ot          | j        j        d          rU| j                            | j                  5  | j        j                                         d d d            n# 1 swxY w Y   d | _         d | _        d | _        d S d S d S )Nabort)r>   	_responseclose_fp_police_officerhasattrborrowrQ   r"   s    r   rS   z&ServerSideEventExtensionFromHTTP.close[   s   <#(BL   ".(4DN.88 5 )00@@ / /N&,,.../ / / / / / / / / / / / / / /DL!DN#'D    $#(B(Bs   4BB#&B#responser   c                    t                                          |           |                    dd          | _        d S )NT)decode_content)r:   startstreamr>   )r   rX   r?   s     r   r\   z&ServerSideEventExtensionFromHTTP.starti   s4    hr$??r   http_versionr   dict[str, str]c                    dddS )Nztext/event-streamzno-store)acceptzcache-controlr6   )r   r^   s     r   headersz(ServerSideEventExtensionFromHTTP.headersn   s    -
KKKr   Trawrd   typing.Literal[True]r   c                   d S r!   r6   r   rd   s     r   next_payloadz-ServerSideEventExtensionFromHTTP.next_payloadq   s    ORsr   Ftyping.Literal[False]ServerSentEvent | Nonec                   d S r!   r6   rg   s     r   rh   z-ServerSideEventExtensionFromHTTP.next_payloadt   s	     "%r   ServerSentEvent | str | Nonec               h   | j         | j        t          d          | j        5  	 t	          | j                                      d          }n## t          $ r d| _        Y ddd           dS w xY w| j        r| j        |z   }d| _        i }d}|                                D ]}|sd} n||	                    d          \  }}}|dvr&|
                    d	          r
|d
d         }|dk    rd|v rP|dk    r(	 t          |          }n# t          t          f$ r Y zw xY w|||<   |du r)|| _        |                     |          cddd           S d|vr| j        
| j        |d<   t!          di |}	|	j        r|	j        | _        |du r|cddd           S |	cddd           S # 1 swxY w Y   dS )z5Unpack the next received message/payload from remote.Nz-The HTTP extension is closed or uninitializedzutf-8r   FT:>   r   r   r   r    r   r    r   rc   r6   )rR   r>   OSErrorr=   nextdecodeStopIterationr<   
splitlines	partition
startswithint
ValueError	TypeErrorrh   r;   r   r   )
r   rd   raw_payloadkwargseotlinekey_valuer   s
             r   rh   z-ServerSideEventExtensionFromHTTP.next_payloady   s   >!T\%9IJJJZ 0	 0	#'#5#5#<#<W#E#E    #0	 0	 0	 0	 0	 0	 0	 0	 | ""l[8!,.FC#..00 $ $ CE $s 3 3Q>>>##C(( &!!""IE$;;5(( '>>! #E

&	2 ! ! ! !#se||*((S(11G0	 0	 0	 0	 0	 0	 0	 0	J 6!!d&9&E#2t#--f--Ex /&+h#d{{"]0	 0	 0	 0	 0	 0	 0	 0	` a0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	se   F''AF'A/ F'.A//B	F'9D	F'	DF'D)F'9F'F''F+.F+bufstr | bytesc                     t          d          )zDispatch a buffer to remote.z*SSE is only one-way. Sending is forbidden.)NotImplementedError)r   r   s     r   send_payloadz-ServerSideEventExtensionFromHTTP.send_payload   s    !"NOOOr   set[str]c                 
    ddhS )Nssepsser6   r6   r   r   supported_schemesz2ServerSideEventExtensionFromHTTP.supported_schemes   s    vr   schemec                    ddd|          S )Nhttpshttp)r   r   r6   )r   s    r   scheme_to_http_schemez6ServerSideEventExtensionFromHTTP.scheme_to_http_scheme   s    //77r   )r   r   )r   r@   r1   )r   rI   )r   rM   )rX   r   r   r   )r^   r   r   r_   )rd   re   r   r   )rd   ri   r   rj   )rd   rM   r   rl   )r   r   r   r   )r   r   )r   r   r   r   )r2   r3   r4   r   staticmethodrE   rH   r5   rL   rO   rS   r\   rb   typingoverloadrh   r   r   r   __classcell__)r?   s   @r   r8   r8   B   s       H H H H H H A A A \A    \ * * * X* $ $ $ X$( ( ( (@ @ @ @ @ @
L L L L _:>RRRRR _R_.3% % % % % _% +0 4 4 4 4 4 4lP P P P    \ 8 8 8 \8 8 8 8 8r   r8   )
__future__r   r)   r   	threadingr   TYPE_CHECKINGrX   r   backendr   protocolr	   r   r8   r6   r   r   <module>r      s    " " " " " "        	 )(((((( " " " " " " ' ' ' ' ' '17 17 17 17 17 17 17 17hw8 w8 w8 w8 w8'8 w8 w8 w8 w8 w8r   