o
    i$                     @   s@   d dl mZ d dlmZmZmZ d dlmZ 			d
dd	ZdS )    )	timedelta)make_responserequestcurrent_app)update_wrapperN`T  TFc           	         s   durd tdd D dur#tts#d dd D dur6tts6d dd D tts@d ttrI fdd fd	d
}|S )z-
    http://flask.pocoo.org/snippets/56/
    Nz, c                 s       | ]}|  V  qd S Nupper.0x r   S/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/flask_restful/utils/cors.py	<genexpr>       zcrossdomain.<locals>.<genexpr>c                 s   r   r	   r
   r   r   r   r   r      r   c                 s   r   r	   r
   r   r   r   r   r      r   c                     s    d ur S t  } | jd S )Nallow)r   make_default_options_responseheaders)options_resp)methodsr   r   get_methods   s   
z crossdomain.<locals>.get_methodsc              	      s,    f	dd}d _ t| S )Nc                     s   rt jdkrt }n	t| i |} st jdkr|S |j}|d<  |d< t|d< r6d|d< d ur>|d< d urF|d< |S )	NOPTIONSzAccess-Control-Allow-OriginzAccess-Control-Allow-MethodszAccess-Control-Max-Agetruez Access-Control-Allow-CredentialszAccess-Control-Allow-HeaderszAccess-Control-Expose-Headers)r   methodr   r   r   r   str)argskwargsresph)	attach_to_allautomatic_optionscredentialsexpose_headersfr   r   max_ageoriginr   r   wrapped_function   s    

z8crossdomain.<locals>.decorator.<locals>.wrapped_functionF)provide_automatic_optionsr   )r%   r(   )r!   r"   r#   r$   r   r   r&   r'   )r%   r   	decorator   s   
zcrossdomain.<locals>.decorator)joinsorted
isinstancer   r   total_seconds)	r'   r   r   r$   r&   r!   r"   r#   r*   r   )	r!   r"   r#   r$   r   r   r&   r   r'   r   crossdomain   s   


r/   )NNNNr   TTF)	datetimer   flaskr   r   r   	functoolsr   r/   r   r   r   r   <module>   s    