
    kjf                     x   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d fZdededefdZdedeedz  ef   fdZdedefdZ dedefdZ!deeeef      de"eee#e   z  f   fdZ$deeeef      deeeef      fdZ%y)    N)Iterable)Path)Any)YAML   )ctx)http)
DNSMessage)Flow)
TCPMessage)
UDPMessage)strutils)WebSocketMessage   )MetadataContentviewMessagec                  Z    t         j                  t        z  t        z  t        z  t
        z  S N)r	   Messager   r   r   r
        f/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/mitmproxy/contentviews/_utils.pyr   r      s#    LL:
*-==
Jr   messageflowreturnc                 j   t        |t        j                  j                  r1t	        t        j                  j                        j                         nd       }| xt        j                  d xR\    | |_        | j                  j                  d      x}r)t        j                  |      x}r|d    d|d    |_        |S  xt        d x\    | |_        |S  xt        d x\    | |_        |S  xt"        d x\    | |_        |S  xt&        d x\    | |_        |S  }t+        j,                  |       |S )N)r   protobuf_definitionsr   zcontent-typer   /r   )r   r   optionsr   r   
expanduserr	   r   http_messageheadersgetparse_content_typecontent_typer   tcp_messager   udp_messager   websocket_messager
   dns_messagetypingassert_never)r   r   metadatactypectothers         r   make_metadatar0      s3    ;;++ "#++"B"BCNNP	H T\\^$+H!++N;;u;007727/1!ugQr!ug,>H) O! 
 Z\#*H  O Z\#*H  O )0H& O  Z\#*H  O &Or   c                 N   	 | j                   }t        | t        j                        r=|| j                  k7  r.dj                  | j                  j                  d            }||fS d}||fS # t        $ r0 t        | t        j                        sJ | j                  }d}Y ||fS w xY w)Nz[decoded {}]zcontent-encoding z[cannot decode])	content
isinstancer	   r   raw_contentformatr"   r#   
ValueError)r   r3   encs      r   get_datar9   7   s    
// gt||,G<O<O1O ''(;(;<N(OPC C< CC<   '4<<000%% C< s   A+ +3B$#B$dc                     | syt        j                         }t        dd      j                  | |       |j	                         S )Nr2   rtTtyppure)ioStringIOr   dumpgetvalue)r:   outs     r   
yaml_dumpsrE   J   s6    
++-CT""1c*<<>r   yamlc                 :    t        dd      j                  |       S )NsafeTr=   )r   load)rF   s    r   
yaml_loadsrJ   R   s    F&++D11r   itemsc                     i }| D ]G  \  }}|j                  |      x}r*t        |t              r|j                  |       ;||g||<   C|||<   I |S )zN
    Helper function that takes a list of pairs and merges repeated keys.
    )r#   r4   listappend)rK   retkeyvalueexistings        r   merge_repeated_keysrS   V   sc     ')C 
Uwws|#8#(D)&$e,CCH Jr   c              #   x   K   | D ]1  \  }}t        j                  |      t        j                  |      f 3 y wr   )r   bytes_to_escaped_str)rK   rP   rQ   s      r   byte_pairs_to_str_pairsrV   f   s?       Y
U,,S183P3PQV3WXXYs   8:)&r@   r*   collections.abcr   pathlibr   r   ruamel.yamlr   r2   r   r	   dnsr
   r   r   tcpr   udpr   utilsr   	websocketr   _apir   r   r0   tuplebytesstrr9   rE   rJ   dictrM   rS   rV   r   r   r   <module>rd      s   	  $           ( 

 >
54<&# # 2S 2S 2xc3h8 T#sTRUYBV=W  YE%,'(YeCHoYr   