
    @OOf                         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 ddl	m
Z
  ej                  e      Zdeeeef      eeeef      z  d	ej$                  fd
Zded	ej(                  fdZy)z!Reads HAR files into flow objects    N)datetime)
connection)
exceptions)http)infer_content_encodingrequest_headersreturnc                 H   g }| D ]W  }t        |t              r|d   }|d   }n	 |d   }|d   }|j                  |j                         |j                         f       Y t        j                  |      S # t        $ r$}t        j                  t        |            |d}~ww xY w)zGConverts provided headers into (b"header-name", b"header-value") tuplesnamevaluer      N)

isinstancedict
IndexErrorr   OptionsErrorstrappendencoder   Headers)r   flow_headersheaderkeyr   es         Q/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/io/har.pyfix_headersr      s     /1L! <fd#.C7OE
=Qiq	 	SZZ\5<<>:;<  <<%%	  = --c!f51<=s   
A44	B!=BB!request_jsonc           
      <   t        j                  | d   j                  dd            j                         }|| d   z   }| d   d   }| d   d   }| j	                  dd	      }t        | d   d
         }| d   d   }| d   d   }d}	|j                  d      rd}
nd}
t        j                  ddt        j                               }|rt        j                  ||
f      }nt        j                  d	      }t        j                  ||      }d| d   v r| d   d   d   }	t        j                  j                  |||	|      |_        | d   d   }| d   d   j	                  dd      }| d   d   j	                  dd	      }t        | d   d
         }|dk(  rt!        j"                  |      }nNt%        |t&              r>	 t        j(                  j+                  ||xs t-        |j	                  dd                  }t        j(                  j+                  ||j	                  d      xs d      }t        j0                  d |t        j2                  j4                  j	                  |d      j+                         ||d	||      |_        ||j                  _        ||j                  _        ||j<                  _        ||j<                  _        |xd!k(  r d"|j                  _        n@xd"k(  r d"|j                  _        n(d#k(  rd#|j                  _        n	 d$|j                  _        |xd!k(  r d"|j6                  _        |S xd"k(  r d"|j6                  _        |S d#k(  rd#|j6                  _        |S 	 d$|j6                  _        |S # t.        $ r |j+                  dd      }Y w xY w)%zB
    Creates a HTTPFlow object from a given entry in HAR file
    startedDateTimeZz+00:00timerequestmethodurlserverIPAddressNheadershttpVersionresponse zhttp://P   i  )z	127.0.0.1r   )peernamesocknametimestamp_start)addresspostDatatextstatuscontentencodingbase64zcontent-typezutf-8surrogateescape)errorszcontent-encodingidentitys   HTTP/1.1zhttp/2.0zHTTP/2zHTTP/3zHTTP/1.1) r   fromisoformatreplace	timestampgetr   
startswithr   Clientr    Serverr   HTTPFlowRequestmaker!   r3   	b64decoder   r   r2   r   r   
ValueErrorResponsestatus_codes	RESPONSESr'   r,   timestamp_endclient_connhttp_version)r   r,   rF   request_methodrequest_urlserver_addressr   http_version_reqhttp_version_resprequest_contentportrG   server_connnew_flowresponse_coderesponse_contentcontent_encodingresponse_headerss                     r   request_to_flowrV   (   s   
 ,,&'//X>ik  $l6&::M!),X6Ny)%0K!%%&7>N!,y"9)"DEO#I.}=$Z0?Oi(##!!			K  ''0FG ''5}}[+6H\),,&y1*=fE||((_oH !,X6M $J/	:>>vrJ#J/	:>>z4P"<
#;I#FG8#!++,<=	$c	*	#}}33 $ X-.>.B.B>SU.VW	  }}++*../ABPj ##''r:AAC	H (7H$%2H"+:H()6H& ,4H),4H),4H),6H)
-5H* O -5H* O -5H* O -7H*Og  	/66 1  7  	s   9=M; ;NN)__doc__r3   loggingr    r   	mitmproxyr   r   r   mitmproxy.net.http.headersr   	getLogger__name__loggerlistr   r   tupler   r   r>   rV        r   <module>rb      s    '          =			8	$&$sCx.)DsCx,AA&	\\&0s$ s4== sra   