a
     d~                     @   s&  d dl Z d dlZd dlZd dlmZ d dlm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 ejdejd	Ze
eje ed
ddZdejeeje f eeje ejegef dddZG dd deZG dd dZG dd dZG dd dZ G dd de Z!G dd de Z"dS )    N)	urlencode)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponseResponse)	WebSocket_CallableType)bound)connscopesreturnc                 C   s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   Zscope r   a/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/starlette/authentication.pyhas_required_scope   s    r     )r   status_coderedirectr   c                    s8   t | tr| gnt| tjtjd fdd}|S )N)funcr   c                    s   t  }t|j D ]&\}|jdks4|jdkr|j} qPqtd  d|dkrt t	j
t	j
d d fdd}|S t rt t	j
t	j
td fdd	}|S t t	j
t	j
td fd
d}|S d S )Nrequest	websocketz2No "request" or "websocket" argument on function "")argskwargsr   c                     s`   | dt| k r|  nd }t|ts.J t|sH| I d H  n | i |I d H  d S )Nr   )getlen
isinstancer	   r   close)r   r   r   )r   idxscopes_listr   r   websocket_wrapper*   s    
z6requires.<locals>.decorator.<locals>.websocket_wrapperc                     s   | dt| k r|  nd }t|ts.J t|s|d urrtdt|ji}dj|	|d}t
|ddS td | i |I d H S Nr   nextz{redirect_path}?{orig_request})Zredirect_pathZorig_requesti/  )urlr   )r   r   r   r   r   r   r   strr%   formatZurl_forr   r   r   r   r   Zorig_request_qparamZnext_urlr   r    r   r!   r   r   r   async_wrapper<   s     

z2requires.<locals>.decorator.<locals>.async_wrapperc                     s   | dt| k r|  nd }t|ts.J t|s|d urrtdt|ji}dj|	|d}t
|ddS td | i |S r#   r&   r)   r*   r   r   sync_wrapperR   s     

z1requires.<locals>.decorator.<locals>.sync_wrapper)inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapstypingAnyr   r   )r   sigZ	parametertype_r"   r+   r,   r   r!   r   )r   r    r   	decorator   s.    

$zrequires.<locals>.decorator)r   r'   listr6   Callable)r   r   r   r;   r   r:   r   requires   s    Gr>   c                   @   s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   r?   g   s   r?   c                   @   s(   e Zd Zeejejd  dddZdS )AuthenticationBackend)AuthCredentialsBaseUser)r   r   c                    s
   t  d S NNotImplementedError)selfr   r   r   r   authenticatel   s    z"AuthenticationBackend.authenticateN)r@   rA   rB   r   r6   OptionalTuplerJ   r   r   r   r   rC   k   s   rC   c                   @   s(   e Zd Zdejeje  dddZdS )rD   N)r   c                 C   s   |d u rg nt || _d S rF   )r<   r   )rI   r   r   r   r   __init__s   s    zAuthCredentials.__init__)N)r@   rA   rB   r6   rK   Sequencer'   rM   r   r   r   r   rD   r   s   rD   c                   @   sB   e Zd ZeedddZeedddZeedddZdS )	rE   r   c                 C   s
   t  d S rF   rG   rI   r   r   r   is_authenticatedx   s    zBaseUser.is_authenticatedc                 C   s
   t  d S rF   rG   rP   r   r   r   display_name|   s    zBaseUser.display_namec                 C   s
   t  d S rF   rG   rP   r   r   r   identity   s    zBaseUser.identityN)	r@   rA   rB   propertyboolrQ   r'   rR   rS   r   r   r   r   rE   w   s   rE   c                   @   s@   e Zd ZeddddZeedddZeeddd	ZdS )

SimpleUserN)usernamer   c                 C   s
   || _ d S rF   rW   )rI   rW   r   r   r   rM      s    zSimpleUser.__init__rO   c                 C   s   dS )NTr   rP   r   r   r   rQ      s    zSimpleUser.is_authenticatedc                 C   s   | j S rF   rX   rP   r   r   r   rR      s    zSimpleUser.display_name)	r@   rA   rB   r'   rM   rT   rU   rQ   rR   r   r   r   r   rV      s
   rV   c                   @   s0   e Zd ZeedddZeedddZdS )UnauthenticatedUserrO   c                 C   s   dS )NFr   rP   r   r   r   rQ      s    z$UnauthenticatedUser.is_authenticatedc                 C   s   dS )N r   rP   r   r   r   rR      s    z UnauthenticatedUser.display_nameN)r@   rA   rB   rT   rU   rQ   r'   rR   r   r   r   r   rY      s   rY   )r   N)#r4   r-   r6   urllib.parser   Zstarlette._utilsr   Zstarlette.exceptionsr   Zstarlette.requestsr   r   Zstarlette.responsesr   r   Zstarlette.websocketsr	   TypeVarr=   r
   rN   r'   rU   r   UnionintrK   r>   r3   r?   rC   rD   rE   rV   rY   r   r   r   r   <module>   s0   	  Q