Ë
    ¹2Úiê  ã                  óÌ   — d dl m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ZdZdZdZdZdZdZdZ G d„ d«      Zy)é    )ÚannotationsN)Ú	Awaitable)ÚCallable)ÚSplitResult)Úurlsplit)ÚHttpRequest)ÚHttpResponse)ÚHttpResponseBase)Úpatch_vary_headers)Úconf)Úcheck_request_enabledzaccess-control-allow-originzaccess-control-expose-headersz access-control-allow-credentialszaccess-control-allow-headerszaccess-control-allow-methodszaccess-control-max-agez&access-control-request-private-networkz$access-control-allow-private-networkc                  ó€   — e Zd ZdZdZ	 	 	 	 dd„Z	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 	 	 dd„Z	dd„Z
dd„Zdd	„Zdd
„Zdd„Zy)ÚCorsMiddlewareTc                óž   — || _         t        j                  | j                   «      r t        j                  j                  | _        y d | _        y ©N)Úget_responseÚasyncioÚiscoroutinefunctionÚ
coroutinesÚ_is_coroutine)Úselfr   s     úM/var/www/html/acx/venv/lib/python3.12/site-packages/corsheaders/middleware.pyÚ__init__zCorsMiddleware.__init__    sC   € ð )ˆÔÜ×&Ñ& t×'8Ñ'8Ô9ô ×"Ñ"×0Ñ0ð Õð "&ˆDÕó    c                óÔ   — | j                   r| j                  |«      S | j                  |«      }|€%| j                  |«      }t	        |t
        «      sJ ‚|}| j                  ||«       |S r   )r   Ú	__acall__Úcheck_preflightr   Ú
isinstancer
   Úadd_response_headers©r   ÚrequestÚresponseÚresults       r   Ú__call__zCorsMiddleware.__call__1   sm   € ð ×ÒØ—>‘> 'Ó*Ð*Ø,0×,@Ñ,@ÀÓ,IˆØÐØ×&Ñ& wÓ/ˆFÜ˜fÔ&6Ô7Ð7Ð7ØˆHØ×!Ñ! '¨8Ô4Øˆr   c              ƒ  ó¶   K  — | j                  |«      }|€-| j                  |«      }t        |t        «      rJ ‚|ƒ d {  –—† }| j	                  ||«       |S 7 Œ­wr   )r   r   r   r
   r   r    s       r   r   zCorsMiddleware.__acall__>   s^   è ø€ Ø×'Ñ'¨Ó0ˆØÐØ×&Ñ& wÓ/ˆFÜ! &Ô*:Ô;Ð;Ð;Ø#—|ˆHØ×!Ñ! '¨8Ô4Øˆð $ús   ‚<A¾A¿Ac                óž   — | j                  |«      |_        |j                  r+|j                  dk(  rd|j                  v rt	        ddi¬«      S y)zB
        Generate a response for CORS preflight requests.
        ÚOPTIONSzaccess-control-request-methodzcontent-lengthÚ0)ÚheadersN)Ú
is_enabledÚ_cors_enabledÚmethodr)   r	   ©r   r!   s     r   r   zCorsMiddleware.check_preflightG   sJ   € ð !%§¡°Ó 8ˆÔà×!Ò!Ø—‘ )Ò+Ø/°7·?±?ÑBäÐ)9¸3Ð(?Ô@Ð@Ør   c                óê  — t        |dd«      }|€| j                  |«      }|s|S t        |d«       |j                  j	                  d«      }|s|S 	 t        |«      }t        j                  s%| j                  ||«      s| j                  |«      s|S t        j                  rt        j                  s
d|t        <   n	||t        <   t        j                  r	d|t        <   t        t        j                  «      r&dj!                  t        j                  «      |t"        <   |j$                  dk(  r|dj!                  t        j&                  «      |t(        <   dj!                  t        j*                  «      |t,        <   t        j.                  r t1        t        j.                  «      |t2        <   t        j4                  r+|j                  j	                  t6        «      dk(  r	d|t8        <   |S # t        $ r |cY S w xY w)	z1
        Add the respective CORS headers
        r+   N)Úoriginr/   Ú*Útruez, r'   )Úgetattrr*   r   r)   Úgetr   Ú
ValueErrorr   ÚCORS_ALLOW_ALL_ORIGINSÚorigin_found_in_white_listsÚcheck_signalÚCORS_ALLOW_CREDENTIALSÚACCESS_CONTROL_ALLOW_ORIGINÚ ACCESS_CONTROL_ALLOW_CREDENTIALSÚlenÚCORS_EXPOSE_HEADERSÚjoinÚACCESS_CONTROL_EXPOSE_HEADERSr,   ÚCORS_ALLOW_HEADERSÚACCESS_CONTROL_ALLOW_HEADERSÚCORS_ALLOW_METHODSÚACCESS_CONTROL_ALLOW_METHODSÚCORS_PREFLIGHT_MAX_AGEÚstrÚACCESS_CONTROL_MAX_AGEÚCORS_ALLOW_PRIVATE_NETWORKÚ&ACCESS_CONTROL_REQUEST_PRIVATE_NETWORKÚ$ACCESS_CONTROL_ALLOW_PRIVATE_NETWORK)r   r!   r"   Úenabledr/   Úurls         r   r   z#CorsMiddleware.add_response_headersT   s¡  € ô ˜' ?°DÓ9ˆØˆ?Ø—o‘o gÓ.ˆGáØˆOä˜8 [Ô1à—‘×$Ñ$ XÓ.ˆÙØˆOð	Ü˜6Ó"ˆCô
 ×+Ò+Ø×4Ñ4°V¸SÔAØ×%Ñ% gÔ.àˆOä×&Ò&¬t×/JÒ/JØ47ˆHÔ0Ò1à4:ˆHÔ0Ñ1ä×&Ò&Ø9?ˆHÔ5Ñ6äŒt×'Ñ'Ô(Ø6:·i±iÜ×(Ñ(ó7ˆHÔ2Ñ3ð �>‰>˜YÒ&Ø59·Y±Y¼t×?VÑ?VÓ5WˆHÔ1Ñ2Ø59·Y±Y¼t×?VÑ?VÓ5WˆHÔ1Ñ2Ü×*Ò*Ü36´t×7RÑ7RÓ3S�Ô/Ñ0ô ×+Ò+Ø—‘×#Ñ#Ô$JÓKÈvÒUà=CˆHÔ9Ñ:àˆøôG ò 	ØŠOð	ús   ÁG$ Ç$G2Ç1G2c                ó€   — |dk(  xr |t         j                  v xs$ | j                  |«      xs | j                  |«      S )NÚnull)r   ÚCORS_ALLOWED_ORIGINSÚ_url_in_whitelistÚregex_domain_match)r   r/   rJ   s      r   r6   z*CorsMiddleware.origin_found_in_white_listsŽ   sE   € à�vÑÒE &¬D×,EÑ,EÐ"Eò /Ø×%Ñ% cÓ*ò/à×&Ñ& vÓ.ð	
r   c                óH   ‡— t        ˆfd„t        j                  D «       «      S )Nc              3  óJ   •K  — | ]  }t        j                  |‰«      –— Œ y ­wr   )ÚreÚmatch)Ú.0Údomain_patternr/   s     €r   ú	<genexpr>z4CorsMiddleware.regex_domain_match.<locals>.<genexpr>–   s$   øè ø€ ò 
àô �H‰H�^ V×,ñ
ùs   ƒ #)Úanyr   ÚCORS_ALLOWED_ORIGIN_REGEXES)r   r/   s    `r   rO   z!CorsMiddleware.regex_domain_match•   s#   ø€ Üó 
ä"&×"BÑ"Bô
ó 
ð 	
r   c                ó–   — t        t        j                  t        j                  |j
                  «      «      xs | j                  |«      S r   )ÚboolrR   rS   r   ÚCORS_URLS_REGEXÚ	path_infor7   r-   s     r   r*   zCorsMiddleware.is_enabled›   s<   € ÜÜ�H‰H”T×)Ñ)¨7×+<Ñ+<Ó=ó
ò (à×Ñ˜wÓ'ð	(r   c                óT   — t        j                  d |¬«      }t        d„ |D «       «      S )N)Úsenderr!   c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr   © )rT   ÚfunctionÚreturn_values      r   rV   z.CorsMiddleware.check_signal.<locals>.<genexpr>¢   s   è ø€ ÒOÑ$: H¨l”<ÑOùs   ‚)r   ÚsendrW   )r   r!   Úsignal_responsess      r   r7   zCorsMiddleware.check_signal    s'   € Ü0×5Ñ5¸TÈ7ÔSÐÜÑOÐ>NÔOÓOÐOr   c                ó‚   ‡— t         j                  D �cg c]  }t        |«      ‘Œ }}t        ˆfd„|D «       «      S c c}w )Nc              3  ó†   •K  — | ]8  }|j                   ‰j                   k(  xr |j                  ‰j                  k(  –— Œ: y ­wr   )ÚschemeÚnetloc)rT   r/   rJ   s     €r   rV   z3CorsMiddleware._url_in_whitelist.<locals>.<genexpr>¦   s;   øè ø€ ò 
àð �M‰M˜SŸZ™ZÑ'ÒG¨F¯M©M¸S¿Z¹ZÑ,GÓGñ
ùs   ƒ>A)r   rM   r   rW   )r   rJ   ÚoÚoriginss    `  r   rN   z CorsMiddleware._url_in_whitelist¤   s@   ø€ Ü(,×(AÑ(AÖB 1”8˜A•;ÐBˆÐBÜó 
à!ô
ó 
ð 	
ùò Cs   ”<N)r   z`Callable[[HttpRequest], HttpResponseBase] | Callable[[HttpRequest], Awaitable[HttpResponseBase]]ÚreturnÚNone)r!   r   rk   z.HttpResponseBase | Awaitable[HttpResponseBase])r!   r   rk   r
   )r!   r   rk   zHttpResponseBase | None)r!   r   r"   r
   rk   r
   )r/   rD   rJ   r   rk   rZ   )r/   rD   rk   rZ   )r!   r   rk   rZ   )rJ   r   rk   rZ   )Ú__name__Ú
__module__Ú__qualname__Úsync_capableÚasync_capabler   r$   r   r   r   r6   rO   r*   r7   rN   r`   r   r   r   r      s}   „ Ø€LØ€Mð&ðCð&ð 
ó&ð"Ø"ðà	7óóóð8Ø"ð8Ø.>ð8à	ó8ót
ó
ó(ó
Pô
r   r   )Ú
__future__r   r   rR   Útypingr   r   Úurllib.parser   r   Údjango.httpr   r	   Údjango.http.responser
   Údjango.utils.cacher   Úcorsheaders.confr   Úcorsheaders.signalsr   r9   r>   r:   r@   rB   rE   rG   rH   r   r`   r   r   ú<module>rz      sh   ðÝ "ã Û 	Ý Ý Ý $Ý !å #Ý $Ý 1Ý 1å !Ý 5à;Ð Ø ?Ð Ø#EÐ  Ø=Ð Ø=Ð Ø1Ð Ø)QÐ &Ø'MÐ $÷M
ò M
r   