
    kj                        U d 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 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) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 dd l4m5Z5 dd!l6m7Z7 dd"l8m9Z9 ddl:Z;dd#l<m=Z= dd$l>m?Z?  ej                  eA      ZBe G d% d&             ZC e       ZDd'eDfd(ed)e=j                  d*eFd+ed,eCf
d-ZGd.eFd(ed)e=j                  d*eFd,eHf
d/ZIeeeee!e#e%e'e)e+e-e/e1e3e5e7gZJeKe
   eLd0<   eJD ]  ZMeDj                  eM        e;j                  j                  D ]L  ZQeQj                  d1      r eSe;j                  eQ      ZT eUeTe
      s2 eUeTeV      r<eDj                  eT       N d2e
eVe
   z  d,dfd3ZWeZ	 g d4ZPy)5a)  
mitmproxy includes a set of content views which can be used to
format/decode/highlight/reencode data. While they are mostly used for HTTP message
bodies, the may be used in other contexts, e.g. to decode WebSocket messages.

See "Custom Contentviews" in the mitmproxy documentation for examples.
    N)	dataclass   )cut_traceback   )Contentview)InteractiveContentview)Metadata)SyntaxHighlight)get)LegacyContentview)remove)ContentviewRegistry)ContentviewMessage)get_data)make_metadata)css)dns)graphql)http3)image)
javascript)	json_view)mqtt)	multipart)query)raw)	socket_io)
urlencoded)wbxml)xml_html)zip)View)flow)strutilsc                   <    e Zd ZU eed<   eed<   edz  ed<   eed<   y)ContentviewResulttextsyntax_highlightN	view_namedescription)__name__
__module____qualname__str__annotations__r
        h/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/mitmproxy/contentviews/__init__.pyr&   r&   3   s    
I%%Tzr1   r&   automessager#   r)   registryreturnc           
      P   t        |       \  }}|t        dddd       S t        | |      }|j                  |||      }	 t        |j	                  ||      |j
                  |j                  |      }t#        j$                  |j&                        |_        |S # t        $ r}	t        j                  d|j                  d|	 d	       |d
k(  rPt        t        j                  ||      t        j
                  t        j                  | d|j                   d      }n{t        j                         \  }
}}t        |d      }||k(  rd }dj                  t        j                   |
||            }t        d|j                   d| d|j                  |      }Y d }	~	-d }	~	ww xY w)NzContent is missing.error )r'   r(   r*   r)   )r'   r(   r)   r*   Contentview z	 failed: T)exc_infor3   z[failed to parse as ]prettify_message)valuetbzCouldn't parse as z:
)r   r&   r   get_viewprettifyr(   name	Exceptionloggerdebugr   sysr;   r   join	tracebackformat_exceptionr$   escape_control_charactersr'   )r4   r#   r)   r5   dataencmetadataviewreteexcr>   r?   tb_cuterrs                  r2   r=   r=   >   s    !ID#| &$	
 	
 Wd+HT8Y7D tX.!22ii	
B 11#((;CHJ9  |DII=	!=M#\\$1!$!5!5(("e#7		{!D	C !\\^NC"2'9:F"'')44S&QRC#)$))Cu=!())	C)s    3B 
F%#C7F  F%
prettifiedc                     t        ||      }t        |j                            }t        |t              st        d|j                   d      |j                  | |      S )Nr:   z is not interactive.)r   r5   lower
isinstancer   
ValueErrorrB   reencode)rT   r4   r#   r)   rM   rN   s         r2   reencode_messagerZ   x   sV     Wd+HIOO%&Dd23<		{2FGHH==X..r1   _views_contentviewc                     t        | t              r:t        j                  d| j                  j
                   dd       t        |       } t        j                  |        y)z
    Register a contentview for use in mitmproxy.

    You may pass a `Contentview` instance or the class itself.
    When passing the class, its constructor will be invoked with no arguments.
    zH`mitmproxy.contentviews.View` is deprecated since mitmproxy 12, migrate z1 to `mitmproxy.contentviews.Contentview` instead.r   )
stacklevelN)	rW   r"   warningswarn	__class__r+   r   r5   register)r]   s    r2   addrd      sW     +t$",,5566gi	

 (4k"r1   )r   r   r
   rd   r	   )X__doc__loggingrF   rH   r`   dataclassesr   addonmanagerr   _apir   r   r	   r
   _compatr   r   r   	_registryr   _utilsr   r   r   	_view_cssr   	_view_dnsr   _view_graphqlr   _view_http3r   _view_imager   _view_javascriptr   
_view_jsonr   
_view_mqttr   _view_multipartr   _view_queryr   	_view_rawr   _view_socketior   _view_urlencodedr   _view_wbxmlr   _view_xml_htmlr    	_view_zipr!   baser"   mitmproxy_rs.contentviewsmitmproxy_rs	mitmproxyr#   mitmproxy.utilsr$   	getLoggerr+   rD   r&   r5   Flowr.   r=   bytesrZ   r[   listr/   rN   rc   contentviews__all__rB   
startswithgetattrcvrW   typerd   r0   r1   r2   <module>r      s    
   ! (  (  !  &  * &  !   "   ( !  &   % (  $      $			8	$      $,	77
))7 7 "	7
 7t
/
/
/ ))
/ 	
/
 
/ 				![ $  Dd%%-- Ds	**D	1B"k":b$+?"#[4#44 # #$ "r1   