
    @OOf7                        d dl Z d dlZd dl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 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      j/                         j0                  Zdej*                  ddfdZdej*                  ddfdZdej*                  ddfdZdej*                  deej:                     ddfdZdej*                  deej:                     ddfdZ G d d      Z y)    N)Iterable)Optional)contentviews)ctx)flow)
flowfilter)http)ioversion)flow_to_jsonpathreturnc                    | dz  j                         r!t        j                  t        | dz               t        j                  t        t
        dz        t        | dz               t        j                  t        t
        dz  dz        t        | dz               t        t        | dz  dz        d      5 }|j                  d       ddd       y# 1 sw Y   yxY w)z1
    Save the files for the static web view.
    static	templatesz
index.htmlz	static.jswzMITMWEB_STATIC = true;N)	existsshutilrmtreestrcopytreeweb_dircopyfileopenwriter   fs     b/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/tools/web/static_viewer.pysave_staticr       s    
 	x!c$/*+
OOC(*+S-AB
OOC+-<=s4,CV?WX	c$/K/0#	6 *!	()* * *s   7CCc                     t        t        | dz        d      5 }t        j                  t	        t
        j                        |       d d d        y # 1 sw Y   y xY w)Nzfilter-help.jsonr   )commands)r   r   jsondumpdictr   helpr   s     r   save_filter_helpr'   $   sE    	c$++,c	2 5a		$
0!45 5 5   /AAc                     t        t        | dz        d      5 }t        j                  t	        t
        j                        |       d d d        y # 1 sw Y   y xY w)Nzsettings.jsonr   r   )r   r   r#   r$   r%   r   VERSIONr   s     r   save_settingsr+   )   sD    	c$()3	/ 41		$w/34 4 4r(   flowsc           	          t        t        | dz        d      5 }t        j                  |D cg c]  }t	        |       c}       d d d        y c c}w # 1 sw Y   y xY w)Nz
flows.jsonr   )r   r   r#   r$   r   )r   r,   r   s      r   
save_flowsr.   .   sR    	c$%&	, 7		E2q<?2A67 727 7s   AA
AAAc                    |D ]  }t        |t        j                        sJ dD ]~  }t        ||      }| dz  |j                  z  |z  }t        j                  t        |dz        d       t        t        |dz        d      5 }|r|j                  |j                         n|j                  d       d d d        t        j                         }|rt        j                  d	||      \  }}	}
nd
g }	}t        j                         |z
  dkD  rIt        j                  d|j!                          dt#        t        j                         |z
  d       d       t        t        |dz  dz        d      5 }t%        j&                  t)        t+        |	      |      |       d d d          y # 1 sw Y   xY w# 1 sw Y   xY w)N)requestresponser,   contentT)exist_okzcontent.datawbs   No content.AutozNo content.g?zSlow content view: z took    sz	Auto.jsonr   )linesdescription)
isinstancer	   HTTPFlowgetattridosmakedirsr   r   r   r2   timer   get_message_content_viewlogginginfostriproundr#   r$   r%   list)r   r,   r   mmessagemessage_pathcontent_filetr9   r8   errorcontent_view_files               r   save_flows_contentrN   3   s    !T]]+++( 	AamG'>ADD014LKKL945Ec,78$? 7< &&w7 &&~67 		A,8,Q,QGQ-)UE &3BUyy{Q$)+*;*;*=)>fU499;YZ?\]E^D__`a L9,{:;S "		tE{DFW 1	7 7& s   0F+1+F7+F47Gc                   Z    e Zd Zd Zd Zdej                  deej                     ddfdZ
y)StaticViewerc                 B    |j                  dt        t           dd       y )Nweb_static_viewer z#The path to output a static viewer.)
add_optionr   r   )selfloaders     r   loadzStaticViewer.loadX   s     SM1		
    c                 :   d|v rt         j                  j                  r|t        j                  t         j                  j
                  g      }t        j                  t         j                  j                        j                         }| j                  ||       y y y )NrR   )
r   optionsrR   r
   read_flows_from_pathsrfilepathlibPath
expanduserexport)rU   updatedr,   ps       r   	configurezStaticViewer.configure`   sk    ')ckk.K.K,,ckk.?.?-@AES[[::;FFHAKK5! /L)rX   r   r,   r   Nc                 `    t        |       t        |       t        ||       t        ||       y )N)r    r'   r.   rN   )rU   r   r,   s      r   r`   zStaticViewer.exportf   s&    D44'rX   )__name__
__module____qualname__rW   rc   r]   r^   r   r   Flowr`    rX   r   rP   rP   V   s3    
"(7<< (0C ( (rX   rP   )!r#   rB   os.pathr>   r]   r   r@   collections.abcr   typingr   	mitmproxyr   r   r   r   r	   r
   r   mitmproxy.tools.web.appr   r^   __file__absoluteparentr   r    r'   r+   rh   r.   rN   rP   ri   rX   r   <module>rr      s          $  "        0
',,x
 
)
)
+
2
2*gll *t *57<< 5D 5
4 4 4
7W\\ 7(499*= 7$ 7
 W\\  (4992E  $  F( (rX   