
    Eg                     P    d dl mZ d dlmZ d dlmZ  G d dej                  ZdS )    )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                 X    t                                          |           || _        d S N)super__init__mode)selfctxr   	__class__s      l/var/www/sysmax/venv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/server/protocol/http1.pyr   zHttp1Layer.__init__   s&    			    c                 >    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'=>>>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   sH    5g>>"T[0@AA
 
 	
r   c                 D    d|j         v r|                     dd           d S )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YYtr   c                     t          j        |          }| j        j                            |           | j        j                                         d S r	   )r   assemble_request_headserver_connwfilewriteflush)r   r   r&   s      r   send_request_headerszHttp1Layer.send_request_headers   sJ    -g66$$W---$$&&&&&r   c                     t          j        |j        ||j                  D ]?}| j        j                            |           | j        j                                         @d S r	   )r   assemble_bodyr&   trailersr,   r-   r.   r/   )r   r   chunkschunks       r   send_request_bodyzHttp1Layer.send_request_body"   sd    (&'BRSS 	+ 	+E"((///"((****	+ 	+r   c                     d S r	    r(   s     r   send_request_trailersz Http1Layer.send_request_trailers'       r   c                     | j         j                            t          j        |                     | j         j                                         d S r	   )r,   r-   r.   r   assemble_requestr/   r(   s     r   send_requestzHttp1Layer.send_request+   sE    $$U%;G%D%DEEE$$&&&&&r   c                 >    t          j        | j        j                  S r	   )r   read_response_headr,   r   )r   s    r   read_response_headersz Http1Layer.read_response_headers/   s    '(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   sJ    5gxHH"T[0@AA
 
 	
r   c                 D    d|j         v r|                     dd           d S )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QQtr   c                     t          j        |          }| j        j                            |           | j        j                                         d S r	   )r   assemble_response_headr   r-   r.   r/   )r   rB   raws      r   send_response_headersz Http1Layer.send_response_headersA   sJ    *844$$S)))$$&&&&&r   c                     t          j        |j        ||j                  D ]?}| j        j                            |           | j        j                                         @d S r	   )r   r2   r&   r3   r   r-   r.   r/   )r   rB   r4   r5   s       r   send_response_bodyzHttp1Layer.send_response_bodyF   se    ()968CTUU 	+ 	+E"((///"((****	+ 	+r   c                     d S 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    }|p|p|}|j        j        dk    r|j        j        dk    rdS |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    .L%L 
 
 /M&M!
 
 6t|T]SSWYY(LNLn<)[88T]=VZ]=]=]
 5r   c                 N    t          j        | | j                  } |             d S r	   )httpbase	HttpLayerr   )r   layers     r   __call__zHttp1Layer.__call__b   s%    "43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      s           ? ? ?
 
 
  ' ' '
+ + +
  ' ' '@ @ @
 
 
  ' ' '
+ + +
       &      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 N N N N N 9 9 9 9 9 9^ ^ ^ ^ ^0 ^ ^ ^ ^ ^r   