
    @OOfR                         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  G d	 d
e      ZdedefdZ G d d      Zy)    N)Sequence)
NamedTuple)ctx)
exceptions)
flowfilter)http)
parse_specc                   @    e Zd ZU ej                  ed<   eed<   eed<   y)MapRemoteSpecmatchessubjectreplacementN)__name__
__module____qualname__r   TFilter__annotations__str     [/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/addons/mapremote.pyr   r      s    Lr   r   optionreturnc                     t        t        |        }	 t        j                  |j                         |S # t        j
                  $ r!}t        d|j                  d| d      d }~ww xY w)NzInvalid regular expression z ())r   r	   recompiler   error
ValueError)r   speces      r   parse_map_remote_specr"      sf    *V,-DO


4<<  K 88 O6t||6Fb1MNNOs   4 A(A##A(c                   D    e Zd ZddZd Zd Zdej                  ddfdZy)		MapRemoter   Nc                     g | _         y N)replacements)selfs    r   __init__zMapRemote.__init__   s
    13r   c                 B    |j                  dt        t           g d       y )N
map_remotez
            Map remote resources to another remote URL using a pattern of the form
            "[/flow-filter]/url-regex/replacement", where the separator can
            be any character.
            )
add_optionr   r   )r(   loaders     r   loadzMapRemote.load!   s"    SM			
r   c                    d|v rNg | _         t        j                  j                  D ])  }	 t	        |      }| j                   j                  |       + y y # t
        $ r!}t        j                  d| d|       |d }~ww xY w)Nr+   zCannot parse map_remote option z: )	r'   r   optionsr+   r"   r   r   OptionsErrorappend)r(   updatedr   r    r!   s        r   	configurezMapRemote.configure-   s    7" "D++00 /08D !!((./ #
 " $119&A3Gs   A	A>A99A>flowc                 D   |j                   s|j                  s|j                  sy | j                  D ]l  }|j	                  |      s|j
                  j                  }t        j                  |j                  |j                  |      }||k7  s\||j
                  _        n y r&   )responser   liver'   r   request
pretty_urlr   subr   r   url)r(   r5   r    r<   new_urls        r   r9   zMapRemote.request:   sy    ==DJJdii%% 	/D||D!ll--&&t/?/?E '>'.DLL$	/r   )r   N)	r   r   r   r)   r.   r4   r   HTTPFlowr9   r   r   r   r$   r$      s(    4

/
/DMM 
/d 
/r   r$   )r   collections.abcr   typingr   	mitmproxyr   r   r   r   mitmproxy.utils.specr	   r   r   r"   r$   r   r   r   <module>rC      sF    	 $        +J # - '/ '/r   