Ë
    _§1h²  ã                   óÂ  — 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dl	m
Z
 ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ g d¢ZdZej.                  ej0                  ej2                  ej4                  ej6                  fZeej:                  fz   Z e
«       Z G d„ d«      Z de!de!de"de!de f
d„Z#de!de!fd„Z$de!de!de!de"de%de&fd„Z'efde&de&fd„Z(dddœZ)de!de&fd„Z*de!fd „Z+y)!ad  
_handshake.py
websocket - WebSocket client library for Python

Copyright 2024 engn33r

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
é    N)Úencodebytes)Ú
HTTPStatusé   )ÚSimpleCookieJar)ÚWebSocketExceptionÚWebSocketBadStatusException)Úread_headers)ÚdumpÚerror)Úsend)Úhandshake_responseÚ	handshakeÚSUPPORTED_REDIRECT_STATUSESé   c                   ó   — e Zd Zdedefd„Zy)r   ÚstatusÚheadersc                 óv   — || _         || _        || _        t        j	                  |j                  d«      «       y )Nz
set-cookie)r   r   ÚsubprotocolÚ	CookieJarÚaddÚget)Úselfr   r   r   s       úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/websocket/_handshake.pyÚ__init__zhandshake_response.__init__1   s-   € ØˆŒØˆŒØ&ˆÔÜ�‰�g—k‘k ,Ó/Õ0ó    N)Ú__name__Ú
__module__Ú__qualname__ÚintÚdictr   © r   r   r   r   0   s   „ ð1˜sð 1¨Tô 1r   r   ÚurlÚhostnameÚportÚresourceÚreturnc                 ó0  — t        |||||«      \  }}dj                  |«      }t        | |«       t        d|«       t	        | «      \  }	}
|	t
        v rt        |	|
d «      S t        |
||j                  d«      «      \  }}|st        d«      ‚t        |	|
|«      S )Nz
zrequest headerÚsubprotocolszInvalid WebSocket Header)
Ú_get_handshake_headersÚjoinr   r
   Ú_get_resp_headersr   r   Ú	_validater   r   )Úsockr#   r$   r%   r&   Úoptionsr   ÚkeyÚ
header_strr   ÚrespÚsuccessÚsubprotos                r   r   r   8   s�   € ô *¨(°C¸À4ÈÓQ�L€GˆSà—‘˜WÓ%€JÜˆˆzÔÜÐ	˜:Ô&ä$ TÓ*�L€FˆDØÔ,Ñ,Ü! &¨$°Ó5Ð5Ü! $¨¨W¯[©[¸Ó-HÓIÑ€GˆXÙÜ Ð!;Ó<Ð<ä˜f d¨HÓ5Ð5r   c                 ó   — d| v rd| › d�S | S )Nú:ú[ú]r"   )r$   s    r   Ú_pack_hostnamer9   K   s   € à
ˆh�Ø�8�*˜AˆÐØ€Or   Úhostr/   c                 ó,  — d| › d�dg}|dv rt        |«      }nt        |«      › d|› �}|j                  d«      r|j                  d|d   › �«       n|j                  d|› �«       |j                  dd«      \  }}|j                  d	«      sOd
|v r|d
   �|j                  d|d
   › �«       n.|dk(  r|j                  d|› �«       n|j                  d|› �«       t	        «       }|j                  d«      rd|d   vr|j                  d|› �«       n|d   d   }|j                  d«      rd|d   vr|j                  dt
        › �«       |j                  d«      s|j                  d«       n|j                  |d   «       |j                  d«      x}	r#|j                  ddj                  |	«      › �«       |j                  d«      x}
rWt        |
t        «      r6|
j                  «       D ��cg c]  \  }}|€Œ	dj                  ||g«      ‘Œ }
}}|j                  |
«       t        j                  |«      }|j                  dd «      }dj                  t        d ||g«      «      x}r|j                  d|› �«       |j                  d«       ||fS c c}}w )NzGET z	 HTTP/1.1zUpgrade: websocket)éP   i»  r6   r:   zHost: r   Úsuppress_originÚoriginzOrigin: ÚwsszOrigin: https://zOrigin: http://ÚheaderzSec-WebSocket-KeyzSec-WebSocket-Key: zSec-WebSocket-VersionzSec-WebSocket-Version: Ú
connectionzConnection: Upgrader)   zSec-WebSocket-Protocol: ú,z: Úcookiez; zCookie: )Ú rD   )r9   r   ÚappendÚsplitÚ_create_sec_websocket_keyÚVERSIONr+   Ú
isinstancer!   ÚitemsÚextendr   Úfilter)r&   r#   r:   r%   r/   r   ÚhostportÚschemer0   r)   r@   ÚkÚvÚserver_cookieÚclient_cookierC   s                   r   r*   r*   R   sˆ  € ð �h�Z˜yÐ)Ð+?Ð@€GØˆyÑÜ! $Ó'‰ä$ TÓ*Ð+¨1¨T¨FÐ3ˆØ‡{�{�6ÔØ�‰˜ ¨¡Ð0Ð1Õ2à�‰˜ ˜zÐ*Ô+ð —)‘)˜C Ó#�K€FˆCØ�;‰;Ð(Ô)Ø�wÑ 7¨8Ñ#4Ð#@Ø�N‰N˜X g¨hÑ&7Ð%8Ð9Õ:Ø�uŠ_Ø�N‰NÐ-¨h¨ZÐ8Õ9à�N‰N˜_¨X¨JÐ7Ô8ä
#Ó
%€Cð �;‰;�xÔ Ð$7¸wÀxÑ?PÑ$PØ�‰Ð,¨S¨EÐ2Õ3à�hÑÐ 3Ñ4ˆà�;‰;�xÔ Ð$;À7È8ÑCTÑ$TØ�‰Ð0´°	Ð:Ô;à�;‰;�|Ô$Ø�‰Ð,Õ-à�‰�w˜|Ñ,Ô-à—{‘{ >Ó2Ð2€|Ð2Ø�‰Ð1°#·(±(¸<Ó2HÐ1IÐJÔKà—‘˜XÓ&Ð&€vÐ&Ü�fœdÔ#Ø4:·L±L³N×T©D¨A¨qÀaÁm�d—i‘i  A Õ'ÐTˆFÑTØ�‰�vÔä—M‘M $Ó'€MØ—K‘K ¨$Ó/€Mà—‘œ6 $¨¸Ð(FÓGÓHÐH€vÐHØ�‰˜ & Ð*Ô+à‡N�N�8ÔØ�Cˆ<Ðùó Us   Ç-
JÇ8JÚsuccess_statusesc           
      óÆ   — t        | «      \  }}}||vrK|j                  d«      }|r| j                  t        |«      «      }nd }t	        d|› d|› d|› d|› �||||«      ‚||fS )Nzcontent-lengthzHandshake status ú z -+-+- )r	   r   Úrecvr    r   )r.   rS   r   Úresp_headersÚstatus_messageÚcontent_lenÚresponse_bodys          r   r,   r,   Œ   s’   € Ü+7¸Ó+=Ñ(€FˆL˜.ØÐ%Ñ%Ø"×&Ñ&Ð'7Ó8ˆÙØ ŸI™IÜ�KÓ ó‰Mð !ˆMÜ)Ø ˜x q¨Ð(8¸À¸~ÈWÐUbÐTcÐdØØØØó
ð 	
ð �<ÐÐr   Ú	websocketÚupgrade)r\   rA   r0   c                 ó>  — d }t         j                  «       D ][  \  }}| j                  |d «      }|s y|j                  d«      D �cg c]   }|j	                  «       j                  «       ‘Œ" }}||vsŒ[ y |ra| j                  dd «      }|r.|j                  «       |D �cg c]  }|j                  «       ‘Œ c}vrt        d|› �«       y|j                  «       }| j                  dd «      }	|	sy|	j                  «       }	t        |	t        «      r|	j                  d«      }	|› d�j                  d«      }
t        t        j                  |
«      j                  «       «      j	                  «       j                  «       }t        j                  ||	«      rd|fS yc c}w c c}w )	N)FNrB   zsec-websocket-protocolzInvalid subprotocol: zsec-websocket-acceptúutf-8z$258EAFA5-E914-47DA-95CA-C5AB0DC85B11T)Ú_HEADERS_TO_CHECKrJ   r   rF   ÚstripÚlowerr   rI   ÚstrÚencodeÚbase64encodeÚhashlibÚsha1ÚdigestÚhmacÚcompare_digest)r   r0   r)   r4   rO   rP   ÚrÚxÚsÚresultÚvalueÚhasheds               r   r-   r-   ¦   sj  € Ø€HÜ!×'Ñ'Ó)ò ‰ˆˆ1Ø�K‰K˜˜4Ó ˆÙÙØ()¯©°«Ö5 1ˆQ�W‰W‹Y�_‰_ÕÐ5ˆÐ5Ø�AŠ:Ùðñ Ø—;‘;Ð7¸Ó>ˆÙ˜8Ÿ>™>Ó+À|Ö3TÀ!°A·G±GµIÒ3TÑTÜÐ)¨,¨Ð8Ô9ØØ—>‘>Ó#ˆà�[‰[Ð/°Ó6€FÙØØ�\‰\‹^€Fä�&œ#ÔØ—‘˜wÓ'ˆàˆeÐ7Ð8×?Ñ?ÀÓH€EÜœ'Ÿ,™, uÓ-×4Ñ4Ó6Ó7×=Ñ=Ó?×EÑEÓG€Fä×Ñ˜6 6Ô*Ø�Xˆ~Ðàùò3 6ùò 4Us   Á%FÂFc                  ó|   — t        j                  d«      } t        | «      j                  d«      j	                  «       S )Né   r^   )ÚosÚurandomrd   Údecoder`   )Ú
randomnesss    r   rG   rG   È   s.   € Ü—‘˜B“€JÜ˜
Ó#×*Ñ*¨7Ó3×9Ñ9Ó;Ð;r   ),Ú__doc__re   rh   rr   Úbase64r   rd   Úhttpr   Ú
_cookiejarr   Ú_exceptionsr   r   Ú_httpr	   Ú_loggingr
   r   Ú_socketr   Ú__all__rH   ÚMOVED_PERMANENTLYÚFOUNDÚ	SEE_OTHERÚTEMPORARY_REDIRECTÚPERMANENT_REDIRECTr   ÚSWITCHING_PROTOCOLSÚSUCCESS_STATUSESr   r   rb   r    r   r9   r!   Útupler*   r,   r_   r-   rG   r"   r   r   ú<module>r‡      sT  ðñó$ Û Û 	Ý .Ý å 'ß HÝ ß !Ý â
L€ð €ð × Ñ Ø×ÑØ×ÑØ×!Ñ!Ø×!Ñ!ðÐ ð /°*×2PÑ2PÐ1RÑRÐ áÓ€	÷1ñ 1ð6Øð6Ø!ð6Ø),ð6Ø8;ð6àó6ð&˜Sð  Só ð7Øð7Øð7Ø#&ð7Ø.1ð7Ø<@ð7à
ó7ðt 7Gñ  ¨eð  È5ó  ð* ØñÐ ð˜Cð °%ó ðD< 3ô <r   