
    @OOf                        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	 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 d dlmZ d dlmZ  G d d      Z G d d      Z G d d      Zdeej0                     fdZy)    N)Iterable)BufferedReader)Any)BinaryIO)cast)Union)
exceptions)flow)
flowfilter)compat)
tnetstring)request_to_flowc                   6    e Zd Zd Zdej
                  ddfdZy)
FlowWriterc                     || _         y Nfoselfr   s     P/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/io/io.py__init__zFlowWriter.__init__   	        freturnNc                 d    |j                         }t        j                  || j                         y r   )	get_stater   dumpr   r   r   ds      r   addzFlowWriter.add   s    KKM477#r   __name__
__module____qualname__r   r
   Flowr"    r   r   r   r      s    $TYY $4 $r   r   c                   Z    e Zd ZU eed<   defdZdedefdZde	e
j                     fdZy)
FlowReaderr   c                     || _         y r   r   r   s     r   r   zFlowReader.__init__   r   r   nr   c                    	 t        t        | j                        j                  |      S # t        $ rU | j                  j                         }| j                  j                  |      }| j                  j                  |       |cY S w xY wr   )r   r   r   peekAttributeErrortellreadseek)r   r,   posrets       r   r.   zFlowReader.peek!   sg    	055a88 	'',,.C'',,q/CGGLLJ	s   (+ AB	B	c              #     K   | j                  d      j                  d      rX	 t        j                  | j                  j                         j                  d            }|d   d   D ]  }t        |        y	 	 t        t        t        t        t        f   t         f   t#        j$                  | j                              }	 t&        j(                  j+                  t-        j.                  |             }# t        $ r t        j                  d      w xY w# t0        $ r}t        j                  |      |d}~ww xY w# t0        t2        t4        f$ r.}t        |      dk(  rY d}~yt        j                  d	      |d}~ww xY ww)
z4
        Yields Flow objects from the dump.
              {zutf-8logentriesz8Unable to read HAR file. Please provide a valid HAR fileNznot a tnetstring: empty filezInvalid data format.)r.   
startswithjsonloadsr   r1   decoder   	Exceptionr	   FlowReadExceptionr   dictr   bytesstrr   r   loadr
   r'   
from_stater   migrate_flow
ValueError	TypeError
IndexError)r   har_filerequest_jsonloadedes        r   streamzFlowReader.stream+   sV    
 99Q<""4(	::dgglln&;&;G&DE$,UOI$> 8L),778R!U5#:.34"0FE"ii2263F3Fv3NOO    22N  & E(::1=1DE	:6 Rq6;; 223IJPQQRsl   !FAC: :F<AE 4D 9E :DF	E %D;;E  E FF %F*F  FFN)r$   r%   r&   r   __annotations__r   intrA   r.   r   r
   r'   rM   r(   r   r   r*   r*      s=    L8 c e  R+  Rr   r*   c                   6    e Zd Zd Zdej
                  ddfdZy)FilteredFlowWriterc                      || _         || _        y r   )r   flt)r   r   rS   s      r   r   zFilteredFlowWriter.__init__O   s    r   r   r   Nc                     | j                   r!t        j                  | j                   |      sy |j                         }t	        j
                  || j                         y r   )rS   r   matchr   r   r   r   r    s      r   r"   zFilteredFlowWriter.addS   s<    88J,,TXXq9KKM477#r   r#   r(   r   r   rQ   rQ   N   s    $TYY $4 $r   rQ   r   c                 L   	 g }| D ]^  }t         j                  j                  |      }t        |d      5 }|j	                  t        |      j                                ddd       ` 	 |S # 1 sw Y   mxY w# t        $ r$}t        j                  |j                        d}~ww xY w)a+  
    Given a list of filepaths, read all flows and return a list of them.
    From a performance perspective, streaming would be advisable -
    however, if there's an error with one of the files, we want it to be raised immediately.

    Raises:
        FlowReadException, if any error occurs.
    rbN)ospath
expanduseropenextendr*   rM   OSErrorr	   r?   strerror)pathsflowsrY   r   rL   s        r   read_flows_from_pathsra   Z   s    7!# 	5D77%%d+DdD! 5QZ]11345 5	5 L	5 5 7**1::667s.   2A6 )A*
A6 *A3	/A6 6	B#?BB#)r;   rX   collections.abcr   ior   typingr   r   r   r   	mitmproxyr	   r
   r   mitmproxy.ior   r   mitmproxy.io.harr   r   r*   rQ   listr'   ra   r(   r   r   <module>ri      sd     	 $            # ,$ $0R 0Rf	$ 	$DO r   