
    <g$                         d dl Z d dlmZmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZ e G d d	e
j(                               Z G d
 de
j(                        Zy)    N)	dataclassfields)CallableOptionalUnioncast)serializable)encoding)Headersassemble_content_typeparse_content_type)	typecheckstrutilsc                       e Zd ZU eed<   eed<   ee   ed<   ee   ed<   eed<   ee   ed<   	 d Zd Z	d	 Z
ed
        Zy)MessageDatahttp_versionheaderscontenttrailerstimestamp_starttimestamp_endc                     t        |       D ]C  }t        | |j                        }t        j                  |j                  ||j
                         E y N)r   getattrnamer   check_option_typetype)selffieldvals      f/var/www/html/myenv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/net/http/message.py__post_init__zMessageData.__post_init__   sA     IdEJJ/++EJJUZZHI    c                     |j                         D ]-  \  }}|dv r|t        j                  |      }t        | ||       / y )N)r   r   )itemsr   
from_statesetattr)r   statekvs       r!   	set_statezMessageData.set_state   sD    KKM 	 DAq++&&q)D!Q	 r#   c                     t        |       j                         }|d   j                         |d<   |d   |d   j                         |d<   |S )Nr   r   )varscopy	get_stater   r(   s     r!   r/   zMessageData.get_state!   sR    T
! +557i( %j 1 ; ; =E*r#   c                     t        j                  |d         |d<   |d   t        j                  |d         |d<    | di |S )Nr   r    )r   r&   clsr(   s     r!   r&   zMessageData.from_state(   sM    "--eI.>?i( ' 2 253D EE*|U|r#   N)__name__
__module____qualname__bytes__annotations__r   r   floatr"   r+   r/   classmethodr&   r2   r#   r!   r   r      s\    e_wE?" 	I
   r#   r   c                      e Zd ZU ed        Zd Zd Zeed<   dZ	e
eef   ed<   edefd       Zej                   d	e
eef   dd
fd       Zedefd       Zedefd       Zedefd       Zedefd       Zej                   dedd
fd       Zedee   fd       Zej                   dee   dd
fd       Zedee   fd       Zej                   dee   dd
fd       Zd)dedee   fdZdee   dd
fdZ eee      Zedefd       Zej                   dedd
fd       Zedee   fd       Zej                   dee   fd        Zdee   fd!Z d*dedefd"Z!d)dedee   fd#Z"d$ee   dd
fd%Z# ee"e#      Z$d)dedd
fd&Z%d'edd
fd(Z&y
)+Messagec                      | di |S )Nr2   r2   r3   s     r!   r&   zMessage.from_state1   s    |U|r#   c                 6    | j                   j                         S r   )datar/   r   s    r!   r/   zMessage.get_state5   s    yy""$$r#   c                 :    | j                   j                  |       y r   )r@   r+   r0   s     r!   r+   zMessage.set_state8   s    		E"r#   r@   Fstreamreturnc                 N    | j                   j                  j                  dd      S )z1
        Version string, e.g. "HTTP/1.1"
        utf-8surrogateescape)r@   r   decoderA   s    r!   r   zMessage.http_version>   s"    
 yy%%,,W6GHHr#   r   Nc                 P    t        j                  |dd      | j                  _        y )NrF   rG   )r   always_bytesr@   r   )r   r   s     r!   r   zMessage.http_versionE   s    !)!6!6|WN_!`		r#   c                 4    | j                   j                  dk(  S )Ns   HTTP/1.0r@   r   rA   s    r!   	is_http10zMessage.is_http10I       yy%%44r#   c                 4    | j                   j                  dk(  S )Ns   HTTP/1.1rL   rA   s    r!   	is_http11zMessage.is_http11M   rN   r#   c                 4    | j                   j                  dk(  S )Ns   HTTP/2.0rL   rA   s    r!   is_http2zMessage.is_http2Q   rN   r#   c                 .    | j                   j                  S )z#
        The HTTP headers.
        r@   r   rA   s    r!   r   zMessage.headersU   s    
 yy   r#   hc                 &    || j                   _        y r   rT   r   rU   s     r!   r   zMessage.headers\   s    		r#   c                 .    | j                   j                  S )z$
        The HTTP trailers.
        r@   r   rA   s    r!   r   zMessage.trailers`   s    
 yy!!!r#   c                 &    || j                   _        y r   rY   rW   s     r!   r   zMessage.trailersg   s    		r#   c                 .    | j                   j                  S )z
        The raw (potentially compressed) HTTP message body as bytes.

        See also: :py:attr:`content`, :py:class:`text`
        r@   r   rA   s    r!   raw_contentzMessage.raw_contentk   s     yy   r#   r   c                 &    || j                   _        y r   r\   )r   r   s     r!   r]   zMessage.raw_contentt   s    #		r#   strictc                 D   | j                   y| j                  j                  d      }|rM	 t        j                  | j                   |      }t        |t              rt        dj                  |            |S | j                   S # t        $ r |r | j                   cY S w xY w)z
        The uncompressed HTTP message body as bytes.

        Raises:
            ValueError, when the HTTP content-encoding is invalid and strict is True.

        See also: :py:class:`raw_content`, :py:attr:`text`
        Ncontent-encodingzInvalid Content-Encoding: {})	r]   r   getr
   rH   
isinstancestr
ValueErrorformat)r   r_   cer   s       r!   get_contentzMessage.get_contentx   s     #\\01	("//$*:*:B?gs+$%C%J%J2%NOO ###  ('''(s   AB BBvaluec                    |d | _         y t        |t              s"t        dt	        |      j
                   d      | j                  j                  d      }	 t        j                  ||xs d      | _         t        t        | j                               | j                  d<   y # t        $ r | j                  d= || _         Y Kw xY w)Nz#Message content must be bytes, not z/. Please use .text if you want to assign a str.ra   identityzcontent-length)r]   rc   r8   	TypeErrorr   r5   r   rb   r
   encodere   rd   len)r   ri   rg   s      r!   set_contentzMessage.set_content   s    =#D%'5d5k6J6J5K L@ @  \\01	%'ub6FJGD *-S1A1A-B)C%&  	% /0$D		%s   B$ $CCc                 .    | j                   j                  S )z&
        First byte timestamp
        r@   r   rA   s    r!   r   zMessage.timestamp_start   s    
 yy(((r#   r   c                 &    || j                   _        y r   rq   )r   r   s     r!   r   zMessage.timestamp_start   s    $3		!r#   c                 .    | j                   j                  S )z%
        Last byte timestamp
        r@   r   rA   s    r!   r   zMessage.timestamp_end   s    
 yy&&&r#   r   c                 &    || j                   _        y r   rt   )r   r   s     r!   r   zMessage.timestamp_end   s    "/		r#   c                 z    t        | j                  j                  dd            }|r|d   j                  d      S y )Ncontent-type    charset)r   r   rb   )r   cts     r!   _get_content_type_charsetz!Message._get_content_type_charset   s6     0 0 DEa599Y''r#   c                    | j                         }|s d| j                  j                  dd      v rd}|s9t        j                  d|      }|r!|j                  d      j                  dd      }|sWd	| j                  j                  dd      v r9t        j                  d
|      }|r!|j                  d      j                  dd      }|sd}|j                         dv rd}|S )Njsonrw   rx   utf8s    <meta[^>]+charset=['"]?([^'">]+)   asciiignoreztext/csss   @charset "([^"]+)";zlatin-1)gb2312gbkgb18030)	r|   r   rb   researchgrouprH   matchlower)r   r   encmeta_charsetcss_charsets        r!   _guess_encodingzMessage._guess_encoding   s    ,,.))."==99%MwWL"((+227HET\\--nbAA hh'BGL%++A.55gxHCC99;++C
r#   c                     | j                  |      }|y| j                  |      }	 t        t        t	        j
                  ||            S # t        $ r |r |j                  dd      cY S w xY w)z
        The uncompressed and decoded HTTP message body as text.

        Raises:
            ValueError, when either content-encoding or charset is invalid and strict is True.

        See also: :py:attr:`content`, :py:class:`raw_content`
        Nr   rG   )rh   r   r   rd   r
   rH   re   )r   r_   r   r   s       r!   get_textzMessage.get_text   sp     ""6*?""7+	=X__Wc:;; 	=>>&*;<<	=s   #A A,+A,textc                 R   |d | _         y | j                         }	 t        j                  ||      | _         y # t        $ re t        | j                  j                  dd            xs ddi f}d|d   d<   t        | | j                  d<   d}|j                  |d	      | _         Y y w xY w)
Nrw   rx   r   plainrF   ry   rz   r   rG   )	r   r   r
   rm   re   r   r   rb   r   )r   r   r   r{   s       r!   set_textzMessage.set_text   s    <DL""$	?#??45DL 	?#DLL$4$4^R$HIbfV]_aMbB&BqE)+@"+EDLL(C;;s,=>DL	?s   8 A+B&%B&c                 l    | j                  |      }| j                  j                  dd       || _        y)a  
        Decodes body based on the current Content-Encoding header, then
        removes the header. If there is no Content-Encoding header, no
        action is taken.

        Raises:
            ValueError, when the content-encoding is invalid and strict is True.
        ra   N)rh   r   popr   )r   r_   decodeds      r!   rH   zMessage.decode   s0     ""6*+T2r#   ec                     || j                   d<   | j                  | _        d| j                   vr#t        dj	                  t        |                  y)a.  
        Encodes body with the encoding e, where e is "gzip", "deflate", "identity", "br", or "zstd".
        Any existing content-encodings are overwritten,
        the content is not decoded beforehand.

        Raises:
            ValueError, when the specified content-encoding is invalid.
        ra   zInvalid content encoding {}N)r   r]   r   re   rf   repr)r   r   s     r!   rm   zMessage.encode  sL     ,-'(''T\\1:AA$q'JKK 2r#   )T)r#   )'r5   r6   r7   r;   r&   r/   r+   r   r9   rC   r   r   boolpropertyrd   r   setterr8   rM   rP   rR   r   r   r   r   r]   rh   ro   r   r:   r   r   r|   r   r   r   r   rH   rm   r2   r#   r!   r=   r=   0   s    %# $)FE(D.!)Ic I I asEz): at a a 54 5 5 54 5 5 5$ 5 5 ! ! ! ^^ T   "(7+ " " __(7+    !Xe_ ! ! $8E? $t $ $$$ $(5/ $4D% DT D& {K0G) ) ) 4u 4 4 4 'x ' ' 08E? 0 08C= u s .=t =x} =(?Xc] ?t ?  Hh'DT T L L Lr#   r=   )r   dataclassesr   r   typingr   r   r   r   +seleniumwire.thirdparty.mitmproxy.coretypesr	   *seleniumwire.thirdparty.mitmproxy.net.httpr
   2seleniumwire.thirdparty.mitmproxy.net.http.headersr   r   r   'seleniumwire.thirdparty.mitmproxy.utilsr   r   Serializabler   r=   r2   r#   r!   <module>r      sX    	 ) 2 2 D ? q q G !,++ ! !HiLl'' iLr#   