o
    㥵i                     @  s|   d dl mZ d dlZd dlmZmZmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZ edfd	d
d
ddfdddZdS )    )annotationsN)AnyCallableDictIterablePattern   )request)HttpResponseconvert_response)AsyncViewTypez.*)GETPOSTPUTPATCHDELETEHEADOPTIONSTRACE FiX  allow_originsIterable[Pattern]allow_methodsIterable[str]allow_headersexpose_headersallow_credentialsboolmax_ageintreturn(Callable[[AsyncViewType], AsyncViewType]c                   s`   d |d h dt|B d ||rdndt|ddd  D d fdd}|S )z'
    Cross-Origin Resource Sharing
    z, >   Content-TypeAccept-LanguageContent-LanguageAccepttruefalse)zAccess-Control-Allow-MethodszAccess-Control-Allow-HeaderszAccess-Control-Expose-Headersz Access-Control-Allow-CredentialszAccess-Control-Max-Agec                 S  s   i | ]	\}}|r||qS r   r   ).0kvr   r   A/home/ubuntu/.local/lib/python3.10/site-packages/kui/asgi/cors.py
<dictcomp>*   s    zallow_cors.<locals>.<dictcomp>endpointr   r    c                   s   d fdd}|S )Nr    r   c                    sr   t jdd   r3t fddD r3t jdkrt } nt I d H } | j  | jd< | S  I d H S )Noriginc                 3  s    | ]}|  V  qd S )N)	fullmatch)r(   origin_patternr.   r   r+   	<genexpr>/   s    

zFallow_cors.<locals>.decorator.<locals>.cors_wrapper.<locals>.<genexpr>r   zAccess-Control-Allow-Origin)r	   headersgetanymethodr
   r   update)response)r   config_dictr-   r1   r+   cors_wrapper-   s   

z3allow_cors.<locals>.decorator.<locals>.cors_wrapper)r    r   r   )r-   r:   r   r9   )r-   r+   	decorator,   s   zallow_cors.<locals>.decoratorN)r-   r   r    r   )joinsetstritems)r   r   r   r   r   r   r<   r   r;   r+   
allow_cors   s   

rA   )r   r   r   r   r   r   r   r   r   r   r   r   r    r!   )
__future__r   retypingr   r   r   r   r   requestsr	   	responsesr
   r   routingr   compilerA   r   r   r   r+   <module>   s    

