
    2Bf6                     J    d dl Z d dlmZ d\  ZZZZZZ	Z
g dZ G d de      Zy)    N)json)r                     )CONNECT
DISCONNECTEVENTACKCONNECT_ERRORBINARY_EVENT
BINARY_ACKc                   ^    e Zd ZdZeZedddddfdZd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zy)PacketzSocket.IO packet.Nc                 b   || _         || _        || _        || _        |s|d| j	                  | j                        rI| j                   t
        k(  rt        | _         n*| j                   t        k(  rt        | _         nt        d      d| _
        g | _        |r| j                  |      xs d| _
        y y )Nz'Packet does not support binary payload.r   )packet_typedata	namespaceid_data_is_binaryr   r   r   r   
ValueErrorattachment_countattachmentsdecode)selfr   r   r   r   binaryencoded_packets          O/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/socketio/packet.py__init__zPacket.__init__   s    &	"fn)=)=dii)H5(#/ !!S(#-  !JKK !$(KK$?$D1D!     c                     t        | j                        }| j                  t        k(  s| j                  t        k(  r9| j	                  | j
                        \  }}|t        t        |            dz   z  }n| j
                  }d}| j                  !| j                  dk7  r|| j                  dz   z  }| j                  |t        | j                        z  }| || j                  j                  |d      z  }||g|z   }|S )a  Encode the packet for transmission.

        If the packet contains binary elements, this function returns a list
        of packets where the first is the original packet with placeholders for
        the binary components and the remaining ones the binary attachments.
        -N/,)r&   :)
separators)strr   r   r   _deconstruct_binaryr   lenr   r   r   dumps)r   r   r   r   s       r    encodezPacket.encode*   s     T--.|+t/?/?:/M $ 8 8 CD+c#k"23c99N99DK>>%$..C*?dnns22N77c$''l*NdiioodzoJJN",-;Nr"   c                 n   |}	 t        |dd       | _        d| _        d| _        |dd }|j                  d      }d}|dkD  r9|d| j                         r&|dkD  rt        d      t        |d|       }||dz   d }|rn|dd dk(  rf|j                  d	      }|d
k(  r
|| _        d}n|d| | _        ||dz   d }| j                  j                  d      }|d
k7  r| j                  d| | _        |r|d   j                         rzd}t        |      }||k  r$||   j                         r|dk\  rn|dz  }||k  r$t        |d|       | _	        ||d }t        |      dkD  r|d   j                         rt        d      |r | j                  j                  |      | _        |S # t        $ r || _        d}Y w xY w)zDecode a transmitted package.

        The return value indicates how many binary attachment packets are
        necessary to fully decode the packet.
        r   r    Nr$   
   ztoo many attachmentsr%   r&   ?d   zid field is too long)intr   	TypeErrorr   r   findisdigitr   r+   r   r   loads)	r   r   epdashr   sepqiends	            r    r   zPacket.decodeB   s    	"2a7|D 	Vwws|!81T
**,by !788"2a:D1HIB"Qq'S.''#,Cby!#!#Aca\##C(ABw!%!!4"Q%--/Ab'Cc'!u}}!s(Q c' "Ra&kDGABB2w{r!u}} !788		+DIK  	!DB	s   F F43F4c                    | j                   t        | j                        k  rt        d      | j                  j	                  |       | j                   t        | j                        k(  r| j                  | j                         yy)NzUnexpected binary attachmentTF)r   r+   r   r   appendreconstruct_binary)r   
attachments     r    add_attachmentzPacket.add_attachmentr   sn      C(8(8$99;<<
+  C(8(8$99##D$4$45r"   c                 Z    | j                  | j                  | j                        | _        y)zYReconstruct a decoded packet using the given list of binary
        attachments.
        N)_reconstruct_binary_internalr   r   )r   r   s     r    rA   zPacket.reconstruct_binary{   s&     55dii6:6F6FH	r"   c           	      >   t        |t              r |D cg c]  }| j                  ||       c}S t        |t              rQ|j	                  d      rd|v r||d      S |j                         D ci c]  \  }}|| j                  ||       c}}S |S c c}w c c}}w )N_placeholdernum)
isinstancelistrE   dictgetitemsr   r   r   itemkeyvalues         r    rE   z#Packet._reconstruct_binary_internal   s    dD! $& 55dKH & &d#xx'ETM"4;// +/**,8&C T>>u?JL L 8 8 K&8s   B1Bc                 2    g }| j                  ||      }||fS )z(Extract binary components in the packet.)_deconstruct_binary_internal)r   r   r   s      r    r*   zPacket._deconstruct_binary   s$    00{C[  r"   c           	      h   t        |t              r"|j                  |       dt        |      dz
  dS t        |t              r |D cg c]  }| j                  ||       c}S t        |t              r4|j                         D ci c]  \  }}|| j                  ||       c}}S |S c c}w c c}}w )NTr   )rG   rH   )rI   bytesr@   r+   rJ   rS   rK   rM   rN   s         r    rS   z#Packet._deconstruct_binary_internal   s    dE"t$$([1AA1EFFd# $& 55dKH & &d#&*jjl4"U ::5+NN 4 4 K&4s   B)B.c           	      j   t        |t              ryt        |t              r5t        j                  d |D cg c]  }| j                  |       c}d      S t        |t              rCt        j                  d |j                         D cg c]  }| j                  |       c}d      S yc c}w c c}w )z-Check if the data contains binary components.Tc                     | xs |S N abs     r    <lambda>z(Packet._data_is_binary.<locals>.<lambda>   
    QV! r"   Fc                     | xs |S rX   rY   rZ   s     r    r]   z(Packet._data_is_binary.<locals>.<lambda>   r^   r"   )rI   rU   rJ   	functoolsreducer   rK   values)r   r   rO   s      r    r   zPacket._data_is_binary   s    dE"d####26&8*. '+&:&:4&@ &89>@ @ d####26++-&A*. '+&:&:4&@ &A 
 &8&As   B+

B0
c                     | j                   | j                  | j                  d}| j                  r| j                  |d<   |S )N)typer   nspr   )r   r   r   r   )r   ds     r    _to_dictzPacket._to_dict   s;    $$II>>

 77ggAdGr"   )__name__
__module____qualname____doc___jsonr   r   r!   r-   r   rC   rA   rE   r*   rS   r   rg   rY   r"   r    r   r   
   sO     D#(ttTE$0. `H! r"   r   )r`   engineior   rl   r
   r   r   r   r   r   r   packet_namesobjectr   rY   r"   r    <module>rp      s9     "  K*eS-z.qV qr"   