
    (ph                        S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SK	Jr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  SrSrSrSrSrSrSrSr " S S5      rg)    )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                      \ rS rSrSrSr    SS jr    SS jrSS jrSS jr	      SS jr
SS jrSS	 jrSS
 jrSS jrSS jrSrg)CorsMiddleware   Tc                ~    Xl         [        U R                   5      U l        U R                  (       a  [        U 5        g g N)get_responser   
async_moder	   )selfr   s     I/var/www/html/venv/lib/python3.13/site-packages/corsheaders/middleware.py__init__CorsMiddleware.__init__!   s2     )-d.?.?@?? "$'	     c                    U R                   (       a  U R                  U5      $ U R                  U5      nUc*  U R                  U5      n[	        U[
        5      (       d   eUnU R                  X5        U$ r   )r   	__acall__check_preflightr   
isinstancer   add_response_headersr   requestresponseresults       r   __call__CorsMiddleware.__call__1   sl     ??>>'**,0,@,@,I&&w/Ff&67777H!!'4r   c                   #    U R                  U5      nUc2  U R                  U5      n[        U[        5      (       a   eUI S h  vN nU R	                  X5        U$  N7fr   )r   r   r   r   r    r!   s       r   r   CorsMiddleware.__acall__>   s^     ''0&&w/F!&*:;;;;#|H!!'4 $s   AAAAc                    U R                  U5      Ul        UR                  (       a+  UR                  S:X  a  SUR                  ;   a  [	        SS0S9$ g)z2
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   CorsMiddleware.check_preflightG   sJ     !% 8!!)+/7??B)93(?@@r   c                \   [        USS5      nUc  U R                  U5      nU(       d  U$ [        US5        UR                  R	                  S5      nU(       d  U$  [        U5      n[        R                  (       d.  U R                  XE5      (       d  U R                  U5      (       d  U$ [        R                  (       a  [        R                  (       d
  SU[        '   OXB[        '   [        R                  (       a	  SU[        '   [        [        R                  5      (       a&  SR!                  [        R                  5      U["        '   UR$                  S:X  a  SR!                  [        R&                  5      U[(        '   SR!                  [        R*                  5      U[,        '   [        R.                  (       a   [1        [        R.                  5      U[2        '   [        R4                  (       a,  UR                  R	                  [6        5      S:X  a	  SU[8        '   U$ ! [         a    Us $ f = f)	z!
Add the respective CORS headers
r.   N)originr3   *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#   enabledr3   urls         r   r    #CorsMiddleware.add_response_headersT   s    '?D9?oog.GO8[1$$X.O	6"C
 ++44VAA%%g..O&&t/J/J47H014:01&&9?H56t''((6:ii((7H23 >>Y&59YYt?V?V5WH1259YYt?V?V5WH12**36t7R7R3S/0 ++##$JKvU=CH9:G  	O	s   H H+*H+c                    US:H  =(       a    U[         R                  ;   =(       d)    U R                  U5      =(       d    U R                  U5      $ )Nnull)r   CORS_ALLOWED_ORIGINS_url_in_whitelistregex_domain_match)r   r3   rN   s      r   r:   *CorsMiddleware.origin_found_in_white_lists   sE    vE&D,E,E"E /%%c*/&&v.	
r   c                J   ^ [        U4S j[        R                   5       5      $ )Nc              3  R   >#    U  H  n[         R                  " UT5      v   M     g 7fr   )rematch).0domain_patternr3   s     r   	<genexpr>4CorsMiddleware.regex_domain_match.<locals>.<genexpr>   s&      
"B HH^V,,"Bs   $')anyr   CORS_ALLOWED_ORIGIN_REGEXES)r   r3   s    `r   rT   !CorsMiddleware.regex_domain_match   s#     
"&"B"B
 
 	
r   c                    [        [        R                  " [        R                  UR
                  5      5      =(       d    U R                  U5      $ r   )boolrX   rY   r   CORS_URLS_REGEX	path_infor;   r0   s     r   r-   CorsMiddleware.is_enabled   s<    HHT))7+<+<=
 (w'	(r   c                P    [         R                  " S US9n[        S U 5       5      $ )N)senderr"   c              3  *   #    U  H	  u  pUv   M     g 7fr    )rZ   functionreturn_values      r   r\   .CorsMiddleware.check_signal.<locals>.<genexpr>   s     O>N$:H<>Ns   )r   sendr^   )r   r"   signal_responsess      r   r;   CorsMiddleware.check_signal   s'    055T7SO>NOOOr   c                   ^ [         R                   Vs/ s H  n[        U5      PM     nn[        U4S jU 5       5      $ s  snf )Nc              3     >#    U  H>  nUR                   TR                   :H  =(       a    UR                  TR                  :H  v   M@     g 7fr   )schemenetloc)rZ   r3   rN   s     r   r\   3CorsMiddleware._url_in_whitelist.<locals>.<genexpr>   s:      
! MMSZZ'GFMMSZZ,GG!s   AA	)r   rR   r   r^   )r   rN   ooriginss    `  r   rS    CorsMiddleware._url_in_whitelist   sC    (,(A(AB(A18A;(AB 
!
 
 	
 Cs   A )r   r   N)r   z`Callable[[HttpRequest], HttpResponseBase] | Callable[[HttpRequest], Awaitable[HttpResponseBase]]returnNone)r"   r
   rx   z.HttpResponseBase | Awaitable[HttpResponseBase])r"   r
   rx   r   )r"   r
   rx   zHttpResponseBase | None)r"   r
   r#   r   rx   r   )r3   rH   rN   r   rx   rb   )r3   rH   rx   rb   )r"   r
   rx   rb   )rN   r   rx   rb   )__name__
__module____qualname____firstlineno__sync_capableasync_capabler   r%   r   r   r    r:   rT   r-   r;   rS   __static_attributes__ri   r   r   r   r      s}    LM(C( 
( "	78"8.>8	8t

(
P
r   r   ) 
__future__r   rX   typingr   r   urllib.parser   r   asgiref.syncr   r	   django.httpr
   r   django.http.responser   django.utils.cacher   corsheaders.confr   corsheaders.signalsr   r=   rB   r>   rD   rF   rI   rK   rL   r   ri   r   r   <module>r      sk    " 	   $ ! , . # $ 1 1 ! 5;  ? #E  = = 1 )Q &'M $L
 L
r   