
    Oj                        d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZmZmZmZmZ dZh dZ G d	 d
      Zy)    )annotationsN)
Collection)HeadersMutableHeaders)PlainTextResponseResponse)ASGIAppMessageReceiveScopeSend)DELETEGETHEADOPTIONSPATCHPOSTPUTQUERY>   Content-TypeAccept-LanguageContent-LanguageAcceptc                      e Zd Z	 	 	 	 	 	 	 	 d		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZddZddZddZddZddZe	dd       Z
y)CORSMiddlewareNc
                   d|v rt         }d }
|t        j                  |      }
d|v }d|v }| xs |}i }|rd|d<   |rd|d<   |rdj                  |      |d<   ddi}|sd|d<   |j	                  dj                  |      t        |	      d	       t        t        t        |      z        }|r|sdj                  |      |d
<   |rd|d<   || _	        || _
        || _        |D cg c]  }|j                          c}| _        || _        || _        || _        || _        |
| _        || _        || _        || _        y c c}w )N*Access-Control-Allow-Origintruez Access-Control-Allow-Credentials, zAccess-Control-Expose-HeadersVaryzmOrigin, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Request-Private-Network)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allow_credentialspreflight_explicit_allow_originallow_origin_regexallow_private_networksimple_headerspreflight_headers)selfr,   r-   r.   r0   r3   r5   r6   expose_headersmax_agecompiled_allow_origin_regexr1   r2   r4   r7   r8   hs                    p/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py__init__zCORSMiddleware.__init__   s    -'M&*#)*,**5G*H'=0=0.?*?*TCT')+<?N89AGN=>>Bii>WN:;   D-
 /?B;<  04		-0H*-g,	
 1C4FFG!2@D		-@X<=DJ@A**1>?Aaggi?!2!2!2/N,"=%:",!2 @s   #D;c                >  K   |d   dk7  r| j                  |||       d {    y |d   }t        |      }|j                  d      }|.|dk(  r)d|v r%| j                  |      } ||||       d {    y | j	                  ||||       d {    y 7 u7 %7 	w)	Ntypehttpmethodscopeoriginr   access-control-request-method)request_headers)r,   r   getpreflight_responsesimple_response)r9   rE   receivesendrC   headersrF   responses           r>   __call__zCORSMiddleware.__call__M   s     =F"((5'4000x&X&&I"5:Y]d:d..w.GH5'4000""5'4"QQQ 1 1 	Rs4   BBAB3B4BBBBBc                    | j                   ry| j                  | j                  j                  |      ry|| j                  v S )NT)r1   r5   	fullmatchr-   )r9   rF   s     r>   is_allowed_originz CORSMiddleware.is_allowed_origin]   sB    !!"".43J3J3T3TU[3\++++    c                   |d   }|d   }|j                  d      }|j                  d      }t        | j                        }g }| j                  |      r| j                  r||d<   n|j                  d       || j                  vr|j                  d       | j                  r|||d<   nc|a|j                  d	      D cg c]  }|j                          c}D ]1  }	|	j                         | j                  vs |j                  d
        n |#| j                  rd|d<   n|j                  d       |r"ddj                  |      z   }
t        |
d|      S t        dd|      S c c}w )NrF   rG   zaccess-control-request-headersz&access-control-request-private-networkrF   r   rC   r"   ,rN   r   z$Access-Control-Allow-Private-Networkzprivate-networkzDisallowed CORS r    i  )status_coderN   OK   )rI   dictr8   rS   r4   appendr.   r2   splitr/   stripr0   r6   r&   r   )r9   rH   requested_originrequested_methodrequested_headersrequested_private_networkrN   failuresr=   headerfailure_texts              r>   rJ   z!CORSMiddleware.preflight_responsef   sv   *84*+JK+//0PQ$3$7$78`$a!t--. !!)9!:33 :J56OOH%4#5#55OOH% !!&7&C6GG23*.?.E.Ec.JK1779K <<>););;OOI.
 %0))BH>? 12
 -		(0CCL$\sGTT 3HH% Ls   E&c                   K   t        j                  | j                  ||      }| j                  |||       d {    y 7 w)N)rM   rH   )	functoolspartialrM   r,   )r9   rE   rL   rM   rH   s        r>   rK   zCORSMiddleware.simple_response   s4       Whhugt,,,s   9AAAc                  K   |d   dk7  r ||       d {    y |j                  dg        t        |      }|j                  d      }||j                  | j                         |+| j
                  r| j                  r| j                  ||       nZ|1| j
                  s%| j                  |      r| j                  ||       n'dj                  g |j                  d      d      |d<    ||       d {    y 7 7 w)	NrA   zhttp.response.startrN   rD   OriginrV   r    r!   )
setdefaultr   rI   r'   r7   r1   r3   allow_explicit_originrS   r&   getlist)r9   messagerM   rH   rN   rF   s         r>   rM   zCORSMiddleware.send   s     6?33w-9b) w/ $$X.NN4../ $"8"8T=S=S&&w7 (>(>4CYCYagCYCh&&w7"ii(L'//&*A(L8(LMGFO7m'  & 	s"   DD C#D:D;DDc                \    || d<   dj                  g | j                  d      d      | d<   y )Nr   r    r!   rj   )r&   rm   )rN   rF   s     r>   rl   z$CORSMiddleware.allow_explicit_origin   s3    17-.))$Hgoof&=$Hx$HIrT   ) )r   rp   FNFrp   iX  )r,   r	   r-   Collection[str]r.   rq   r0   rq   r3   boolr5   z
str | Noner6   rr   r:   rq   r;   intreturnNone)rE   r   rL   r   rM   r   rt   ru   )rF   r(   rt   rr   )rH   r   rt   r   )
rE   r   rL   r   rM   r   rH   r   rt   ru   )rn   r
   rM   r   rH   r   rt   ru   )rN   r   rF   r(   rt   ru   )__name__
__module____qualname__r?   rP   rS   rJ   rK   rM   staticmethodrl   rp   rT   r>   r   r      s     *,)1)+"')-&+*,;3;3 ';3 '	;3
 ';3  ;3 ';3  $;3 (;3 ;3 
;3zR ,+IZ-. J JrT   r   )
__future__r   rg   r$   collections.abcr   starlette.datastructuresr   r   starlette.responsesr   r   starlette.typesr	   r
   r   r   r   r#   r*   r   rp   rT   r>   <module>r      s6    "  	 & < ; B BSV bJ bJrT   