
    hg	                     |    d Z ddlZddlZddlZddlmZ ddlmZ dZdZ	ddZ
ddZd	 Zd
 Zd Zd Zd Zd Zd ZdS )zh
Collection of WebSocket protocol utility functions (RFC6455)
Spec: https://tools.ietf.org/html/rfc6455
    N)http)strutilss$   258EAFA5-E914-47DA-95CA-C5AB0DC85B1113c                     | t           } |9t          j        t          j        d                                        d          }t          j        dd| |          }|||d<   |||d<   |S )	z
        Create the headers for a valid HTTP upgrade request. If Key is not
        specified, it is generated, and can be found in sec-websocket-key in
        the returned header set.

        Returns an instance of http.Headers
    N   asciiupgrade	websocket)
connectionr	   sec_websocket_versionsec_websocket_keysec-websocket-protocolsec-websocket-extensions)VERSIONbase64	b64encodeosurandomdecoder   Headers)versionkeyprotocol
extensionshs        o/var/www/fb-scrape/myenv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/net/websockets/utils.pyclient_handshake_headersr      s     
{rz"~~..55g>>%		 	 	A &.
"#(2
$%H    c                 j    t          j        ddt          |                     }|||d<   |||d<   |S )zh
      The server response is a valid HTTP 101 response.

      Returns an instance of http.Headers
    r	   r
   )r   r	   sec_websocket_acceptNr   r   )r   r   create_server_nonce)
client_keyr   r   r   s       r   server_handshake_headersr#   +   sT     	0<<	 	 	A
 &.
"#(2
$%Hr   c                 
   d|                      dd                                          v oY|                      dd                                          dk    o-|                      d          d up|                      d          d uS )Nr	   r    r
   sec-websocket-keysec-websocket-accept)getlowerheaderss    r   check_handshaker,   =   s    W[[r2288::: 	jIr""((**k9	j	(	)	)	5	hE[9\9\dh9hr   c                     t          j        t          j        t	          j        |           t          z                                                       S )N)r   r   hashlibsha1r   always_bytesMAGICdigest)client_nonces    r   r!   r!   E   s9    GL)>|)L)Lu)TUU\\^^___r   c                 @    |                      dd          t          k    S )Nzsec-websocket-versionr%   )r(   r   r*   s    r   check_client_versionr5   I   s    ;;.33w>>r   c                 .    |                      dd           S )Nr   r(   r*   s    r   get_extensionsr8   M   s    ;;14888r   c                 .    |                      dd           S )Nr   r7   r*   s    r   get_protocolr:   Q   s    ;;/666r   c                 .    |                      dd           S )Nr&   r7   r*   s    r   get_client_keyr<   U   s    ;;*D111r   c                 .    |                      dd           S )Nr'   r7   r*   s    r   get_server_acceptr>   Y   s    ;;-t444r   )NNNN)NN)__doc__r   r.   r   %seleniumwire.thirdparty.mitmproxy.netr   'seleniumwire.thirdparty.mitmproxy.utilsr   r1   r   r   r#   r,   r!   r5   r8   r:   r<   r>    r   r   <module>rC      s       				 6 6 6 6 6 6 < < < < < </
   2   $  ` ` `? ? ?9 9 97 7 72 2 25 5 5 5 5r   