Ë
    ûûàgÔ  ã                  óÜ   — d dl m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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)Úiscoroutinefunction)Úmarkcoroutinefunction)Ú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                óv   — || _         t        | j                   «      | _        | j                  rt        | «       y y ©N)Úget_responser   Ú
async_moder	   )Úselfr   s     úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/corsheaders/middleware.pyÚ__init__zCorsMiddleware.__init__!   s4   € ð )ˆÔÜ-¨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   sk   € ð �?Š?Ø—>‘> 'Ó*Ð*Ø,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.   rI   s      r   r5   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   rN   z!CorsMiddleware.regex_domain_match•   s#   ø€ Üó 
ä"&×"BÑ"Bô
ó 
ð 	
r   c                ó–   — t        t        j                  t        j                  |j
                  «      «      xs | j                  |«      S r   )ÚboolrQ   rR   r   ÚCORS_URLS_REGEXÚ	path_infor6   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   © )rS   ÚfunctionÚreturn_values      r   rU   z.CorsMiddleware.check_signal.<locals>.<genexpr>¢   s   è ø€ ÒOÑ$: H¨l”<ÑOùs   ‚)r   ÚsendrV   )r   r    Úsignal_responsess      r   r6   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)rS   r.   rI   s     €r   rU   z3CorsMiddleware._url_in_whitelist.<locals>.<genexpr>¦   s;   øè ø€ ò 
àð �M‰M˜SŸZ™ZÑ'ÒG¨F¯M©M¸S¿Z¹ZÑ,GÓGñ
ùs   ƒ>A)r   rL   r   rV   )r   rI   ÚoÚoriginss    `  r   rM   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
   rj   z.HttpResponseBase | Awaitable[HttpResponseBase])r    r
   rj   r   )r    r
   rj   zHttpResponseBase | None)r    r
   r!   r   rj   r   )r.   rC   rI   r   rj   rY   )r.   rC   rj   rY   )r    r
   rj   rY   )rI   r   rj   rY   )Ú__name__Ú
__module__Ú__qualname__Úsync_capableÚasync_capabler   r#   r   r   r   r5   rN   r)   r6   rM   r_   r   r   r   r      s}   „ Ø€LØ€Mð(ðCð(ð 
ó(ð Ø"ðà	7óóóð8Ø"ð8Ø.>ð8à	ó8ót
ó
ó(ó
Pô
r   r   )!Ú
__future__r   rQ   Úcollections.abcr   Útypingr   Úurllib.parser   r   Úasgiref.syncr   r	   Údjango.httpr
   r   Údjango.http.responser   Údjango.utils.cacher   Úcorsheaders.confr   Úcorsheaders.signalsr   r8   r=   r9   r?   rA   rD   rF   rG   r   r_   r   r   ú<module>r{      sk   ðÝ "ã 	Ý %Ý Ý $Ý !å ,Ý .Ý #Ý $Ý 1Ý 1å !Ý 5à;Ð Ø ?Ð Ø#EÐ  Ø=Ð Ø=Ð Ø1Ð Ø)QÐ &Ø'MÐ $÷L
ò L
r   