
    F2j                        d dl mZ d dl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        i/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/urllib3/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.retry1   r#   r   
typing.Anyc                4    t          j        | j                  S r!   )jsonloadsr   r"   s    r   r)   zServerSentEvent.json5   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__8   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	          j        d                      | _        t                      | _        d | _	        d S )Nr   zutf-8)
superr   _last_event_id_buffercodecsgetincrementaldecoder_decoderr   _lock_stream)r   	__class__s    r   r   z)ServerSideEventExtensionFromHTTP.__init__D   sX    *.=4W==??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_svnM   s    @@r   r   c                     dS )Nnativer6   r6   r   r   implementationz/ServerSideEventExtensionFromHTTP.implementationQ   s    xr   dict[str, typing.Any]c                
    ddiS )Npreload_contentFr6   r"   s    r   urlopen_kwargsz/ServerSideEventExtensionFromHTTP.urlopen_kwargsU   s    !5))r   boolc                    | j         d u S r!   )rA   r"   s    r   closedz'ServerSideEventExtensionFromHTTP.closedY   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)rA   	_responseclose_fp_police_officerhasattrborrowrT   r"   s    r   rV   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streamrA   )r   r[   rB   s     r   r_   z&ServerSideEventExtensionFromHTTP.startk   s4    hr$??r   http_versionr   dict[str, str]c                    dddS )Nztext/event-streamzno-store)acceptzcache-controlr6   )r   ra   s     r   headersz(ServerSideEventExtensionFromHTTP.headersp   s    -
KKKr   T)rawrf   typing.Literal[True]r   c                   d S r!   r6   r   rf   s     r   next_payloadz-ServerSideEventExtensionFromHTTP.next_payloads   s    ORsr   Ftyping.Literal[False]ServerSentEvent | Nonec                   d S r!   r6   ri   s     r   rj   z-ServerSideEventExtensionFromHTTP.next_payloadv   s	     "%r   ServerSentEvent | str | Nonec                  | j         | j        t          d          | j        5  	 d| j        vrd| j        vr	 | xj        | j                            t          | j                            z  c_        nl# t          $ r_ | j                            dd          }|s.d| _        | j        	                                 Y ddd           dS | xj        |z  c_        Y nw xY wd| j        vr	d| j        v| j        
                    d          }| j        
                    d          }|dk    r|dk    s||k     r|d}}n|d}}| j        d|         }| j        |t          |          z   d         | _        i }|                                D ]}	|	s|	                    d	          \  }
}}|
d
vr#|                    d          r
|dd         }|
dk    rd|v rM|
dk    r(	 t          |          }n# t           t"          f$ r Y ww xY w|||
<   |sd|vr| j        
| j        |d<   t'          di |}|j        r|j        | _        |du r||z   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 uninitializedTz

z

r   )finalr]   :>   r   r   r   r    r   r    r   r6   )rU   rA   OSErrorr@   r<   r?   decodenextStopIterationresetfindlen
splitlines	partition
startswithint
ValueError	TypeErrorr;   r   r   )r   rf   
last_chunklfcrlfboundarysep
event_textkwargslinekey_valuer   s                 r   rj   z-ServerSideEventExtensionFromHTTP.next_payload{   s   >!T\%9IJJJZ =	 =	< DL00Zt|5S5S3(<(<T$,=O=O(P(PP( 3 3 3%)]%9%9#T%9%J%J
) (+/DL M//111#'=	 =	 =	 =	 =	 =	 =	 =	 
23 DL00Zt|5S5S \&&v..|((442::288tbyy$(*cHH$&cH!\)8)4
#|Hs3xx,?,A,AB02&1133 ( (D ! $(NN3$7$7MCE"BBB '',, * %abb	d{{#u,,$g~~%$'JJEE *I6 % % %$H%"'F3KK v%%$*=*I#'#6F4L'11&118 3*/(D'$;;%+w=	 =	 =	 =	 =	 =	 =	 =	z {=	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	sm   I':A54I'5AC=I'CI'CD I'G/.I'/H I'HA	I'I''I+.I+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   rC   r1   )r   rL   )r   rP   )r[   r   r   r   )ra   r   r   rb   )rf   rg   r   r   )rf   rk   r   rl   )rf   rP   r   rn   )r   r   r   r   )r   r   )r   r   r   r   )r2   r3   r4   r   staticmethodrH   rK   r5   rO   rR   rV   r_   re   typingoverloadrj   r   r   r   __classcell__)rB   s   @r   r8   r8   C   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 A A A A A AFP P P P    \ 8 8 8 \8 8 8 8 8r   r8   )
__future__r   r=   r)   r   	threadingr   TYPE_CHECKINGr[   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E8 E8 E8 E8 E8'8 E8 E8 E8 E8 E8r   