
    BTh&              	          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m	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ  ej@                  e!      Z" G d dejF                  ejH                        Z% G d de      Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-de.dee.ee.e/e0f   f   defdZ1d Z2y)zStubs for aiohttp HTTP clients    N)Mapping)CookieErrorMorselSimpleCookie)Union)ClientConnectionErrorClientResponse	CookieJarRequestInfohdrsstreams)strip_auth_from_url)CIMultiDictCIMultiDictProxy	MultiDict)URL)(CannotOverwriteExistingCassetteException)Requestc                       e Zd Zy)
MockStreamN)__name__
__module____qualname__     i/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/vcr/stubs/aiohttp_stubs.pyr   r      s    r   r   c                   f     e Zd Zd	 fd	Zdej
                  ddZd
dZd Zd Ze	d        Z
 xZS )MockClientResponsec                 Z    t         |   ||d d d |d t        j                         d 	       y )N)	methodurlwritercontinue100timerrequest_infotracesloopsession)super__init__asyncioget_event_loop)selfr    r!   r%   	__class__s       r   r*   zMockClientResponse.__init__   s9    %'') 	 
	
r   utf-8)encodingloadsc                r   K   | j                   j                         }|sy  ||j                  |            S wN)_bodystripdecode)r-   r0   r1   kwargsstrippeds        r   jsonzMockClientResponse.json(   s2     ::##%X__X.//s   57c                 D   K   | j                   j                  ||      S w)N)errors)r4   r6   )r-   r0   r;   s      r   textzMockClientResponse.text/   s      zz  & 99s    c                 "   K   | j                   S wr3   )r4   r-   s    r   readzMockClientResponse.read2   s     zzs   c                      y r3   r   r>   s    r   releasezMockClientResponse.release5   s    r   c                 p    t               }|j                  | j                         |j                          |S r3   )r   	feed_datar4   feed_eof)r-   ss     r   contentzMockClientResponse.content8   s'    L	DJJ	

r   r3   )r/   strict)r   r   r   r*   r9   r1   r<   r?   rA   propertyrF   __classcell__)r.   s   @r   r   r      s;    
 &-DJJ 0:  r   r   c                    t        t        | j                        | j                  t	        | j
                        t        | j                              }t        | j                  t        | j                        |      }|d   d   |_        |d   j                  dd      |_	        |d   d   |_
        t	        |d	         |_        t        |      |_        |j
                  j                  t        j                   d
      D ]  }	 t#        |      }|j%                         D ]|  \  }}|j                  dd      j'                         }	|	rt(        j+                  d||	       d|d<   |j,                  j/                  |j1                  d      j'                                ~  |j7                          |S # t2        $ r }
t(        j5                  d|
       Y d }
~
d }
~
ww xY w)N)r!   r    headersreal_url)r%   statuscodebodystringr   messagerK   r   expires z!Ignoring expiration date: %s="%s")headerz!Can not load response cookies: %s)r   r   r!   r    _deserialize_headersrK   r   rM   getr4   reason_headerstuple_historygetallr   
SET_COOKIEr   itemsr5   logdebugcookiesloadoutputr   warningclose)vcr_requestvcr_responsehistoryr%   responsehdrr`   cookie_namecookierR   excs              r   build_responserm   @   s    !!$[%8%89[__%	L "+"4"4c+//6JYefH"8,V4HO!&)--h<HN"8,Y7HO,\)-DEHgH&&t; 
B		B"3'G'.}} H#V **Y399;IIA;PWX$&y!  %%fmm2m&>&D&D&FGH
B NNO	  	BKK;SAA	Bs   BF11	G:GGc                     i }| j                         D ]/  \  }}|j                  t        |      g       j                  |       1 |S )zSerialize CIMultiDictProxy to a pickle-able dict because proxy
    objects forbid pickling:

    https://github.com/aio-libs/multidict/issues/340
    )r]   
setdefaultstrappend)rK   serialized_headerskvs       r   _serialize_headersru   ^   sJ      <1%%c!fb188;< r   c                     t               }| j                         D ]A  \  }}t        |t              r|D ]  }|j	                  ||        0|j	                  ||       C t        |      S r3   )r   r]   
isinstancelistaddr   )rK   deserialized_headersrs   vsrt   s        r   rU   rU   m   sl    &= ,2b$ /$((A./ !$$Q+, 011r   c                    g }|j                  dd      }| j                  |      }t        |||      }|rd|j                  cxk  rdk  rn |S d|j                  vr	 |S t        |j                        j                  t        |j                  d               }t        dt        |      d t        |j                  j                              }| j                  |      }|D ]  ^}}	| j                  |      s n |j                  |       | j                  |      }t        |||      }|rd|j                  cxk  rdk  r|S  |S )Nallow_redirectsTi,  i  locationGET)rV   play_responserm   rM   rK   r   r!   joinr   rp   ru   r%   find_requests_with_most_matchescan_play_response_forrq   )
cassettere   r7   rg   r}   rf   rh   next_urlvcr_requests_s
             r   play_responsesr   y   sG   Gjj!2D9O))+6Lk<AH cX__;;, O+ X---( O% x||$))#h.>.>z.J*KL eS]D:LXMbMbMjMj:kl??L+ 	OK!--k:	 	x --k:!+|WE) cX__;;, O- <, Or   c                    K   	 d|j                          d{   i}|j                  |j                  dt	        |j
                        |d}| j                  ||       y7 H# t        $ r i }Y Rw xY ww)z4Record a VCR request-response chain to the cassette.rP   N)rN   rQ   )rM   rK   rO   )r?   r   rM   rW   ru   rK   rq   )r   re   rh   rO   rf   s        r   record_responser      sr     02 $??xG%h&6&67L OOK. 1 ! s8   A4A# A!A# AA4!A# #A1.A40A11A4c           	        K   t        |j                        D ]r  \  }}|j                  }t        |j                  t        |j                        |rdn|j                  t        |j                              }t        | ||       d{    t |j                  rJ|j                  }t        |j                  t        |j                        dt        |j                              }t        | ||       d{    y7 r7 w)zBecause aiohttp follows redirects by default, we must support
    them by default. This method is used to write individual
    request-response chains that were implicitly followed to get
    to the final destination.
    N)	enumeraterg   r%   r   r    rp   r!   rO   ru   rK   r   )r   re   rh   ipast_responseaiohttp_requestpast_requests          r   record_responsesr      s      &h&6&67 
E='44""##$D;++667
 hmDDD
E "//""##$667	
 (K
::: 	E ;s%   BC=C9A,C=3C;4C=;C=c                 l   t        |      \  }}| j                  j                  |      }|?t               }|j	                  |       |j                  |      }|r|j                  |       |s|sy t               }|r|j                  |       |j                         D ]u  \  }	}
t        |
t              r[|
j                  |
j                  t                     }|j                  |
j                  |
j                  |
j                         |||	<   q|
||	<   w |j                  dd      j!                         S )NrS   ;)rT   sep)r   _cookie_jarfilter_cookiesr
   update_cookiesra   r   r]   rw   r   rV   keysetvaluecoded_valuerb   r5   )r(   r`   cookie_headerr!   r   all_cookiestmp_cookie_jarreq_cookiescnamer   mrsl_vals               r   _build_cookie_headerr      s
    %FC%%44S9K"%%g.$33C8[)}A	}"((* eeV$yyFH5HLLEKK1B1BCAdGAdG 88238'--//r   url_strparamsreturnc                     t        |       }t        |j                        }|j                  |      }|j	                  |j                         |j                  |      S r3   )r   r   query
with_queryextend)r   r   r!   qurl2s        r   _build_url_with_paramsr      sH     g,C#))A>>&!DHHTZZ>>!r   c                 F     t        j                         fd       }|S )Nc                 J  K   |j                  d      }|j                  d      }| j                  |      }|j                  d|j                  d            }|j                  d      }|j                  d      }||j                         |d<   |st        |      nt	        ||      }	|j                  t        j                  d       }
t        | ||
|	      }|r||t        j                  <   t        |t        |	      |t        |            }j                  |      rt        j                  d| d	       t        ||      }|j                   D ]2  }| j"                  j%                  |j&                  |j(                         4 | j"                  j%                  |j&                  |j(                         |S j*                  rj-                  |      rt/        |
      t        j                  d|        | ||fi | d {   }t1        ||       d {    |S 7 7 w)NrK   authdatar9   r   r`   AUTHORIZATIONzPlaying response for z from cassette)r   failed_requestz*%s not in cassette, sending to real server)rV   _prepare_headersencoder   r   popr   COOKIEr   r   rp   ru   r   r^   infor   rg   r   r   r`   r!   write_protectedfilter_requestr   r   )r-   r    r!   r7   rK   r   r   r   r`   request_urlc_headerr   re   rh   redirectr   real_requests                  r   new_requestz vcr_request.<locals>.new_request   s    **Y'zz&!''0zz&&**V"45H%**Y''+{{}GO$&,c#h2Hf2U;;t{{D1,T7HkR#0GDKK fc+&6>PQX>YZ))+6HH,[MHI%hVDH$,, P  //0@0@(,,OP++H,<,<hllKO##(?(?(L:H]hii={K%dFCB6BBxh??? C?s$   H H#HH#H!H#!H#)	functoolswraps)r   r   r   s   `` r   re   re      s'    __\"" #"H r   )3__doc__r+   r   r9   loggingcollections.abcr   http.cookiesr   r   r   typingr   aiohttpr   r	   r
   r   r   r   aiohttp.helpersr   	multidictr   r   r   yarlr   
vcr.errorsr   vcr.requestr   	getLoggerr   r^   StreamReaderAsyncStreamReaderMixinr   r   rm   ru   rU   r   r   r   r   rp   intfloatr   re   r   r   r   <module>r      s    $     # : :  ` ` / > >  ? g!	%%w'E'E 	# #L<	2B/&;B06C eCeO>T9T1U Z] &r   