
    <g                     R    d dl mZ d dlmZ d dlmZ  G d dej                        Zy)    )http1)http)humanc                   x     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Z xZS )
Http1Layerc                 2    t         |   |       || _        y N)super__init__mode)selfctxr   	__class__s      k/var/www/html/myenv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http1.pyr   zHttp1Layer.__init__   s    	    c                 T    t        j                  | j                  j                        S r	   )r   read_request_headclient_connrfile)r   flows     r   read_request_headerszHttp1Layer.read_request_headers   s    &&t'7'7'='=>>r   c                     t        j                  |      }t        j                  | j                  j                  |t        j                  | j                  j                  j                              S r	   )
r   expected_http_body_size	read_bodyr   r   r   
parse_sizeconfigoptionsbody_size_limit)r   requestexpected_sizes      r   read_request_bodyzHttp1Layer.read_request_body   sS    55g>""T[[00@@A
 	
r   c                 D    d|j                   v r| j                  dd       y )NTrailerz9HTTP/1.1 request trailer headers are not implemented yet!warnheaderslogr   r   s     r   read_request_trailersz Http1Layer.read_request_trailers   s!    'HHPRXYr   c                     t        j                  |      }| j                  j                  j	                  |       | j                  j                  j                          y r	   )r   assemble_request_headserver_connwfilewriteflush)r   r   r&   s      r   send_request_headerszHttp1Layer.send_request_headers   sD    --g6$$W-$$&r   c                     t        j                  |j                  ||j                        D ]K  }| j                  j
                  j                  |       | j                  j
                  j                          M y r	   )r   assemble_bodyr&   trailersr,   r-   r.   r/   )r   r   chunkschunks       r   send_request_bodyzHttp1Layer.send_request_body"   s\    ((&'BRBRS 	+E""((/""((*	+r   c                      y r	    r(   s     r   send_request_trailersz Http1Layer.send_request_trailers'       r   c                     | j                   j                  j                  t        j                  |             | j                   j                  j                          y r	   )r,   r-   r.   r   assemble_requestr/   r(   s     r   send_requestzHttp1Layer.send_request+   s?    $$U%;%;G%DE$$&r   c                 T    t        j                  | j                  j                        S r	   )r   read_response_headr,   r   )r   s    r   read_response_headersz Http1Layer.read_response_headers/   s    ''(8(8(>(>??r   c                     t        j                  ||      }t        j                  | j                  j                  |t        j                  | j                  j                  j                              S r	   )
r   r   r   r,   r   r   r   r   r   r   )r   r   responser    s       r   read_response_bodyzHttp1Layer.read_response_body2   sU    55gxH""T[[00@@A
 	
r   c                 D    d|j                   v r| j                  dd       y )Nr#   z1HTTP/1.1 trailer headers are not implemented yet!r$   r%   )r   r   rB   s      r   read_response_trailersz!Http1Layer.read_response_trailers:   s"    (((HHH&Qr   c                     t        j                  |      }| j                  j                  j	                  |       | j                  j                  j                          y r	   )r   assemble_response_headr   r-   r.   r/   )r   rB   raws      r   send_response_headersz Http1Layer.send_response_headersA   sD    **84$$S)$$&r   c                     t        j                  |j                  ||j                        D ]K  }| j                  j
                  j                  |       | j                  j
                  j                          M y r	   )r   r2   r&   r3   r   r-   r.   r/   )r   rB   r4   r5   s       r   send_response_bodyzHttp1Layer.send_response_bodyF   s^    (()9)968CTCTU 	+E""((/""((*	+r   c                      y r	   r8   )r   rB   s     r   send_response_trailersz!Http1Layer.send_response_trailersK   r:   r   c                    t        j                  |j                  j                  |j                  j                        }t        j                  |j
                  j                  |j
                  j                        }t        j                  |j                  |j
                        dk(  }|xs |xs |}|j                  j                  dk(  r|j
                  j                  dk(  ry|S )N	authority   F)	r   connection_closer   http_versionr&   rB   r   first_line_formatstatus_code)r   r   request_closeresponse_closeread_until_eofclose_connections         r   check_close_connectionz!Http1Layer.check_close_connectionO   s    ..LL%%LL  
 //MM&&MM!!
 66t||T]]SWYY(LNLn<<))[8T]]=V=VZ]=]
 r   c                 R    t        j                  | | j                        } |        y r	   )httpbase	HttpLayerr   )r   layers     r   __call__zHttp1Layer.__call__b   s    ""43r   )__name__
__module____qualname__r   r   r!   r)   r0   r6   r9   r=   r@   rC   rE   rI   rK   rM   rZ   r_   __classcell__)r   s   @r   r   r      sT    ?
'
+
'@
'
+
 &r   r   N)	*seleniumwire.thirdparty.mitmproxy.net.httpr   1seleniumwire.thirdparty.mitmproxy.server.protocolr   r\   'seleniumwire.thirdparty.mitmproxy.utilsr   _HttpTransmissionLayerr   r8   r   r   <module>rh      s"    < N 9^00 ^r   