
    vKg                         S r SSKJr  SSKJr  SSKJr  SSKJrJrJ	r	J
r
JrJr  SSKJrJrJrJr   " S S\5      r " S	 S
5      r " S S5      r " S S5      rg)zRHouses the classes used to transfer request and response data between components.     )datetime)
HTTPStatus)HTTPMessage)DictIterableListOptionalTupleUnion)parse_qs	urlencodeurlsplit
urlunsplitc                       \ rS rSrSrS rSrg)HTTPHeaders	   z_A dict-like data-structure to hold HTTP headers.

Note that duplicate key names are permitted.
c                 4    [        U R                  5       5      $ N)repritemsselfs    T/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/seleniumwire/request.py__repr__HTTPHeaders.__repr__   s    DJJL!!     N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r   	   s    
"r   r   c            
          \ rS rSrSrSS.S\S\S\\\\4      S\4S	 jjr	\
S
\4S j5       r\R                  S\4S j5       r\
S
\4S j5       r\R                  S\4S j5       r\
S
\\\\\\   4   4   4S j5       r\R                  S\\\\\\   4   4   4S j5       r\
S
\4S j5       r\
S
\4S j5       r\R                  S\4S j5       r SS\S\\\\4   \\\\4      4   S\4S jjr\R.                  4S\4S jjrS rS rSrg) Request   zRepresents an HTTP request.r   bodymethodurlheadersr(   c                    SU l         Xl        X l        [        5       U l        U H   u  pVU R                  R                  XV5        M"     X@l        SU l        [        R                  " 5       U l
        / U l        0 U l        g)zInitialise a new Request object.

Args:
    method: The request method - GET, POST etc.
    url: The request URL.
    headers: The request headers as an iterable of 2-element tuples.
    body: The request body as bytes.
N)idr)   r*   r   r+   
add_headerr(   responser   nowdatews_messagescert)r   r)   r*   r+   r(   kvs          r   __init__Request.__init__   sf     "&"}DALL##A)  	,0&lln	35	r   returnc                     U R                   $ )z;Get the request body.

Returns: The request body as bytes.
_bodyr   s    r   r(   Request.body-        zzr   bc                     Uc  SU l         g [        U[        5      (       a  UR                  S5      U l         g [        U[        5      (       d  [        S5      eXl         g Nr   utf-8zbody must be of type bytesr;   
isinstancestrencodebytes	TypeErrorr   r>   s     r   r(   r<   5   I    9DJ3'*DJAu%%899Jr   c                 @    [        U R                  5      R                  $ )zCGet the query string from the request.

Returns: The query string.
)r   r*   queryr   s    r   querystringRequest.querystring@   s     !'''r   qsc                 h    [        [        U R                  5      5      nXS'   [        U5      U l        g )N   listr   r*   r   )r   rN   partss      r   rL   rM   H   s(    Xdhh'(ae$r   c                 <   U R                   nU R                  R                  S5      S:X  a+  U R                  (       a  U R                  R	                  SSS9n[        USS9R                  5        VVs0 sH  u  p#U[        U5      S:X  a  US	   OU_M     snn$ s  snnf )
a!  Get the request parameters.

Parameters are returned as a dictionary. Each dictionary entry will have a single
string value, unless a parameter happens to occur more than once in the request,
in which case the value will be a list of strings.

Returns: A dictionary of request parameters.
Content-Type!application/x-www-form-urlencodedrA   replaceerrorsT)keep_blank_values   r   )rL   r+   getr(   decoder   r   len)r   rN   namevals       r   paramsRequest.paramsN   s     <<N+/RRW[W`W`!!')!<BHPQSgkHlHrHrHtuHt94CAc!f36Htuuus   2"Bpc                     [        USS9nU R                  R                  S5      S:X  a  UR                  SSS9U l        g [        [        U R                  5      5      nX#S'   [        U5      U l        g )	NT)doseqrU   rV   rA   rW   rX   rP   )	r   r+   r\   rE   r(   rR   r   r*   r   )r   rc   rN   rS   s       r   ra   rb   _   s`    q%<<N+/RR		')	<DI$((+,E!H!%(DHr   c                 @    [        U R                  5      R                  $ )z2Get the request path.

Returns: The request path.
)r   r*   pathr   s    r   rg   Request.pathj   s     !&&&r   c                 @    [        U R                  5      R                  $ )z2Get the request host.

Returns: The request host.
)r   r*   netlocr   s    r   hostRequest.hostr   s     !(((r   c                 h    [        [        U R                  5      5      nXS'   [        U5      U l        g )N   rQ   )r   rc   rS   s      r   rg   rh   z   s(    Xdhh'(ae$r   status_codec                 >    [         R                  R                  5        Vs0 sH  oDUR                  _M     snU   n[        U[        5      (       a  UR                  5       n[        XX#S9U l        gs  snf ! [         a    [        SR                  U5      5      ef = f)z7Create a response object and attach it to this request.zUnknown status code: {})ro   reasonr+   r(   N)r   __members__valuesphraseKeyError
ValueErrorformatrC   dictr   Responser/   )r   ro   r+   r(   r5   rq   s         r   create_responseRequest.create_response   s    	L+5+A+A+H+H+JK+Jak+JKKXF gt$$mmoG [QXd L 	L6==kJKK	Ls    A7 A2A7 2A7 7%B
error_codec                 "    U R                  US9  g)zdConvenience method for signalling that this request is to be terminated
with a specific error code.
)ro   N)rz   )r   r|   s     r   abortRequest.abort   s     	4r   c                 6    SR                  [        U 5      5      $ )NzLRequest(method={method!r}, url={url!r}, headers={headers!r}, body={_body!r})
format_mapvarsr   s    r   r   Request.__repr__   s    ]hhimnristtr   c                     U R                   $ r   )r*   r   s    r   __str__Request.__str__   s    xxr   )
r;   r(   r3   r1   r+   r-   r)   r/   r*   r2   N)r   r   )r   r   r    r!   r"   rD   r   r
   rF   r6   propertyr(   setterrL   r   r   r   ra   rg   rk   intrz   r   	FORBIDDENr~   r   r   r#   r   r   r   r%   r%      s   %cf # C (5c?:S [` . e   
[[e   (S ( ( %c % %
 vS%T#Y"778 v v  ]])S%T#Y"778 ) ) 'c ' ' )c ) ) 
[[%c % % oree).tCH~xcSVh?X/X)Yefke '1&:&: 5 5ur   r%   c            
           \ rS rSrSrSS.S\S\S\\\\4      S\	4S	 jjr
\S
\	4S j5       r\R                  S\	4S j5       rS rS rSrg)ry      zRepresents an HTTP response.r   r'   ro   rq   r+   r(   c                    Xl         X l        [        5       U l        U H   u  pVU R                  R	                  XV5        M"     X@l        [        R                  " 5       U l        0 U l	        g)zInitialise a new Response object.

Args:
    status_code: The status code.
    reason: The reason message (e.g. "OK" or "Not Found").
    headers: The response headers as an iterable of 2-element tuples.
    body: The response body as bytes.
N)
ro   rq   r   r+   r.   r(   r   r0   r1   r3   )r   ro   rq   r+   r(   r4   r5   s          r   r6   Response.__init__   sQ     '"}DALL##A)  	&lln		r   r8   c                     U R                   $ )z=Get the response body.

Returns: The response body as bytes.
r:   r   s    r   r(   Response.body   r=   r   r>   c                     Uc  SU l         g [        U[        5      (       a  UR                  S5      U l         g [        U[        5      (       d  [        S5      eXl         g r@   rB   rH   s     r   r(   r      rI   r   c                 6    SR                  [        U 5      5      $ )Nz]Response(status_code={status_code!r}, reason={reason!r}, headers={headers!r}, body={_body!r})r   r   s    r   r   Response.__repr__   s    (jd4	
r   c                 N    SR                  U R                  U R                  5      $ )Nz{} {})rw   ro   rq   r   s    r   r   Response.__str__   s    ~~d..<<r   )r;   r(   r3   r1   r+   rq   ro   N)r   r   r    r!   r"   r   rD   r   r
   rF   r6   r   r(   r   r   r   r#   r   r   r   ry   ry      s~    &kn s C (5QTVYQY?B[ ch ( e   
[[e  
=r   ry   c                   D    \ rS rSrSrS\S\\\4   S\	4S jr
S rS rS	rg
)WebSocketMessage   zTRepresents a websocket message transmitted between client and server
or vice versa.
from_clientcontentr1   c                (    Xl         X l        X0l        g)zInitialise a new websocket message.

Args:
    from_client: True if the message was sent by the client.
    content: The text or binary message data.
    date: The datetime the message was sent or received.
N)r   r   r1   )r   r   r   r1   s       r   r6   WebSocketMessage.__init__   s     '	r   c                     [        U R                  [        5      (       a  U R                  $ S[        U R                  5       S3$ )N<z  bytes of binary websocket data>)rC   r   rD   r^   r   s    r   r   WebSocketMessage.__str__   s7    dllC((<<3t||$%%EFFr   c                     [        U[        5      (       d  gXL a  gU R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ )NFT)rC   r   r   r   r1   )r   others     r   __eq__WebSocketMessage.__eq__   s\    %!122]5#4#44r9Vr[_[d[dhmhrhr[rrr   )r   r1   r   N)r   r   r    r!   r"   boolr   rD   rF   r   r6   r   r   r#   r   r   r   r   r      s6    
t 
eCJ6G 
x 
G
sr   r   N)r"   r   httpr   http.clientr   typingr   r   r   r	   r
   r   urllib.parser   r   r   r   r   r%   ry   r   r   r   r   <module>r      sM    X   # ? ? B B"+ "E EP1= 1=hs sr   