
    g                        S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJ	r	J
r
  S SKJrJrJrJrJr  Sr1 Skr " S S	5      rg)
    )annotationsN)HeadersMutableHeaders)PlainTextResponseResponse)ASGIAppMessageReceiveScopeSend)DELETEGETHEADOPTIONSPATCHPOSTPUT>   AcceptContent-TypeAccept-LanguageContent-Languagec                      \ rS rSr       S                 SS j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5       rS
rg)CORSMiddleware   Nc	                   SU;   a  [         nS n	Ub  [        R                  " U5      n	SU;   n
SU;   nU
(       + =(       d    Un0 nU
(       a  SUS'   U(       a  SUS'   U(       a  SR                  U5      US'   0 nU(       a  SUS'   OSUS'   UR	                  SR                  U5      [        U5      S	.5        [        [        [        U5      -  5      nU(       a  U(       d  SR                  U5      US
'   U(       a  SUS'   Xl	        X l
        X0l        U Vs/ s H  oR                  5       PM     snU l        Xl        Xl        Xl        Xl        Xl        Xl        g s  snf )N*Access-Control-Allow-Origintruez Access-Control-Allow-Credentials, zAccess-Control-Expose-HeadersOriginVary)zAccess-Control-Allow-MethodszAccess-Control-Max-AgeAccess-Control-Allow-Headers)ALL_METHODSrecompilejoinupdatestrsortedSAFELISTED_HEADERSsetappallow_originsallow_methodslowerallow_headersallow_all_originsallow_all_headerspreflight_explicit_allow_originallow_origin_regexsimple_headerspreflight_headers)selfr,   r-   r.   r0   allow_credentialsr4   expose_headersmax_agecompiled_allow_origin_regexr1   r2   r3   r5   r6   hs                   R/home/matz/Project1/venv/lib/python3.13/site-packages/starlette/middleware/cors.py__init__CORSMiddleware.__init__   sg    -'M&*#)*,**5G*H'=0=0.?*?*TCT'<?N89AGN=>>Bii>WN:;*(0f%?B;<  04		-0H*-g,	
 1C4FFG!2@D		-@X<=DJ@A**1>?Aggi?!2!2/N,"=,!2 @s   Ec                h  #    US   S:w  a  U R                  XU5      I S h  vN   g US   n[        US9nUR                  S5      nUc  U R                  XU5      I S h  vN   g US:X  a'  SU;   a!  U R                  US9nU" XU5      I S h  vN   g U R	                  XX5S9I S h  vN   g  N NM N" N7f)	Ntypehttpmethodscopeoriginr   access-control-request-method)request_headers)r,   r   getpreflight_responsesimple_response)r7   rE   receivesendrC   headersrF   responses           r=   __call__CORSMiddleware.__call__K   s     =F"((54000x&X&>((54000Y#Bg#M..w.GH54000""54"QQQ! 1 1
 1 	RsE   B2B*<B2B,,B2B.B2$B0%B2,B2.B20B2c                    U R                   (       a  gU R                  b!  U R                  R                  U5      (       a  gXR                  ;   $ )NT)r1   r4   	fullmatchr-   )r7   rF   s     r=   is_allowed_origin CORSMiddleware.is_allowed_origin_   sC    !!"".43J3J3T3TU[3\3\++++    c                   US   nUS   nUR                  S5      n[        U R                  5      n/ nU R                  US9(       a  U R                  (       a  X%S'   OUR                  S5        X0R                  ;  a  UR                  S5        U R                  (       a  Ub  XES'   OjUbg  UR                  S5       Vs/ s H  owR                  5       PM     sn H4  nUR                  5       U R                  ;  d  M#  UR                  S	5          O   U(       a  S
SR                  U5      -   n	[        U	SUS9$ [        SSUS9$ s  snf )NrF   rG   zaccess-control-request-headersrF   r   rC   r"   ,rN   zDisallowed CORS r   i  )status_coderN   OK   )rI   dictr6   rT   r3   appendr.   r2   splitr/   stripr0   r&   r   )
r7   rH   requested_originrequested_methodrequested_headersrN   failuresr<   headerfailure_texts
             r=   rJ   !CORSMiddleware.preflight_responseh   s6   *84*+JK+//0PQt--.!!)9!:33 :J56OOH%#5#55OOH% !!&7&C6G23*.?.E.Ec.JK.J779.JK<<>););;OOI. L -		(0CCL$\sGTT 3HH Ls   =Ec                   #    [         R                  " U R                  X4S9nU R                  XU5      I S h  vN   g  N7f)N)rM   rH   )	functoolspartialrM   r,   )r7   rE   rL   rM   rH   s        r=   rK   CORSMiddleware.simple_response   s/       Whhut,,,s   5?=?c                  #    US   S:w  a  U" U5      I S h  vN   g UR                  S/ 5        [        US9nUR                  U R                  5        US   nSU;   nU R                  (       a  U(       a  U R                  XE5        O6U R                  (       d%  U R                  US9(       a  U R                  XE5        U" U5      I S h  vN   g  N N7f)NrA   zhttp.response.startrN   rD   r    cookierX   )
setdefaultr   r'   r5   r1   allow_explicit_originrT   )r7   messagerM   rH   rN   rF   
has_cookies          r=   rM   CORSMiddleware.send   s     6?33w-9b) w/t**+ *0
 !!j&&w7 ''D,B,B&,B,Q&&w77m'  & 	s"   CCB0CC	CCc                .    XS'   U R                  S5        g )Nr   r    )add_vary_header)rN   rF   s     r=   ro   $CORSMiddleware.allow_explicit_origin   s    17-.)rV   )
r2   r1   r0   r.   r4   r-   r,   r3   r6   r5   ) )r   rv   FNrv   iX  )r,   r   r-   typing.Sequence[str]r.   rw   r0   rw   r8   boolr4   z
str | Noner9   rw   r:   intreturnNone)rE   r   rL   r
   rM   r   rz   r{   )rF   r(   rz   rx   )rH   r   rz   r   )
rE   r   rL   r
   rM   r   rH   r   rz   r{   )rp   r	   rM   r   rH   r   rz   r{   )rN   r   rF   r(   rz   r{   )__name__
__module____qualname____firstlineno__r>   rP   rT   rJ   rK   rM   staticmethodro   __static_attributes__rv   rV   r=   r   r      s     /1.6.0"')-/19393 ,93 ,	93
 ,93  93 '93 -93 93 
93vR(,$IL-. * *rV   r   )
__future__r   ri   r$   typingstarlette.datastructuresr   r   starlette.responsesr   r   starlette.typesr   r	   r
   r   r   r#   r*   r   rv   rV   r=   <module>r      s4    "  	  < ; B BJV ]* ]*rV   