o
    㥵i                     @   s  d dl Z d dlmZ d dl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 ddlmZmZmZ d	gZd
eeedf e	dd
ddeddddidg iddf deededjddddididif fdd	Zd
eeedf e	dd
ddeddddidg iddf deeeef dedjddddididif fd d!Z	"d(d#ed$ed% deeedf gef fd&d'ZdS ))    N)
HTTPStatus)CallableTupleTypeUnion)Field)	AnnotatedLiteral   HTTPException)InCookieInHeaderInQuerybearer_authauthorizationzBearer Authdefaultaliastitle
BearerAuthhttpbearer)typeschemer   requiredsecurityreturn  WWW-AuthenticatezBearer tokenr   string)descriptionschema)r#   headersc                 C   sn   | du rt dddidz|  jddd\}}W n ty(   t dddidw |dkr5t dddid|S )	z&
    Bearer token authentication.
    Nr    r!   Bearerr%    r
   maxsplit)r   stripsplit
ValueError)r   r   token r/   @/home/ubuntu/.local/lib/python3.10/site-packages/kui/security.pyr      s&   z
Basic Auth	BasicAuthbasiczBasic authenticationc                 C   s   | du rt dddidz|  jddd\}}W n ty(   t dddidw |dkr5t dddidt|d	d
\}}||fS )z
    Basic authentication.
    Nr    r!   Basicr'   r(   r
   r)   utf8:)r   r+   r,   r-   base64	b64decodedecode)r   r   r.   usernamepasswordr/   r/   r0   
basic_auth@   s(   r;   headernameposition)queryr<   cookiec              
   C   s   |dkrt }n|dkrt}n|dkrt}ntd| ddtttdf td| dd	|d
d| |did
g iddf dttddtdj	iif fdd}|S )z3
    Create API key authentication dependency.
    r?   r<   r@   zInvalid position z., must be one of ('query', 'header', 'cookie')api_keyNzAPI Keyr   
ApiKeyAuthapiKey)r   r=   inr   r   r   r    r#   c                 S   s   | d u rt d| S )Nr    r   )rA   r/   r/   r0   api_key_auth   s   z-api_key_auth_dependency.<locals>.api_key_auth)
r   r   r   r-   r   r   strr   r   r#   )r=   r>   class_rE   r/   r/   r0   api_key_auth_dependencyq   s:   


rH   )r<   )r6   r   r   typingr   r   r   r   pydanticr   typing_extensionsr   r	   
exceptionsr   parameters.fieldsr   r   r   __all__rF   r#   r   r;   rH   r/   r/   r/   r0   <module>   s    

0


3