
    df~                        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$                  	      Zd
e
dej(                  e   defdZ	 	 ddej0                  eej(                  e   f   dedej4                  e   dej$                  egef   fdZ G d de      Z G d d      Z G d d      Z G d d      Z  G d de       Z! G d de       Z"y)    N)	urlencode)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponseResponse)	WebSocket_CallableType)boundconnscopesreturnc                 F    |D ]  }|| j                   j                  vs y y)NFT)authr   )r   r   scopes      Q/home/api-vastappli/venv/lib/python3.12/site-packages/starlette/authentication.pyhas_required_scoper      s+     		(((     status_coderedirectc                     t        | t              r| gn
t        |       dt        j                  dt        j                  ffd}|S )Nfuncr   c                     t        j                         }t        |j                  j	                               D ]1  \  }|j
                  dk(  s|j
                  dk(  s%|j
                  } n t        d  d      |dk(  rDt        j                         dt        j                  dt        j                  dd f 	fd       }|S t               rJt        j                         dt        j                  dt        j                  dt        f 	
fd	       }|S t        j                         dt        j                  dt        j                  dt        f 	
fd
       }|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""argskwargsr   c                     K   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s|j                          d {    y  | i | d {    y 7 7 w)Nr   )getlen
isinstancer
   r   close)r   r   r   r   idxscopes_lists      r   websocket_wrapperz6requires.<locals>.decorator.<locals>.websocket_wrapper*   sq      #JJcCIoc4	 ")Y77))[A#//+++//// ,/s$   AA5A1A5+A3,A53A5c                  p  K   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s]Ot        dt        |j                        i      }dj                  |j                        |      }t        |d      S t        	       | i | d {   S 7 wNr   nextz{redirect_path}?{orig_request})redirect_pathorig_requesti/  )urlr   )r   r!   r"   r#   r   r   r   strr-   formaturl_forr   r   
r   r   r   orig_request_qparamnext_urlr   r%   r   r&   r   s
        r   async_wrapperz2requires.<locals>.decorator.<locals>.async_wrapper<   s      !**YS3t9_S	RVW!'733)';?+.7W[[AQ8R.S+#C#J#J*1//(*C)< $K $  0H#NN'K@@!4262222s   B,B6/B40B6c                  T   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s]Ot        dt        |j                        i      }dj                  |j                        |      }t        |d      S t        	       | i |S r)   r.   r2   s
        r   sync_wrapperz1requires.<locals>.decorator.<locals>.sync_wrapperR   s     **YS3t9_S	RVW!'733)';?+.7W[[AQ8R.S+#C#J#J*1//(*C)< $K $  0H#NN'K@@T,V,,r   )inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapstypingAnyr   r	   )r   sig	parametertype_r'   r5   r7   r%   r   r&   r   s   `      @r   	decoratorzrequires.<locals>.decorator   sZ   %'(=(=(?@ 	NC~~*inn.K!	
 DTF!L  K__T"0zz0-3ZZ00 #0 %$t$__T"3zz3-3ZZ33 3 #3" !  __T"-FJJ -&** - - - #-  r   )r#   r/   listrA   Callable)r   r   r   rF   r&   s    `` @r   requiresrI      sB    
 )56(4<KE  E FOO E N r   c                       e Zd Zy)AuthenticationErrorN)__name__
__module____qualname__ r   r   rK   rK   g   s    r   rK   c                   P    e Zd Zdedej
                  ej                  d      fdZy)AuthenticationBackendr   r   )AuthCredentialsBaseUserc                    K   t               wNNotImplementedError)selfr   s     r   authenticatez"AuthenticationBackend.authenticatel   s      "##s   N)rL   rM   rN   r   rA   OptionalTuplerY   rO   r   r   rQ   rQ   k   s*    $"$	&CD	E$r   rQ   c                   N    e Zd Zddej                  ej
                  e      fdZy)rR   Nr   c                 8    |g | _        y t        |      | _        y rU   )rG   r   )rX   r   s     r   __init__zAuthCredentials.__init__s   s    "NbVr   rU   )rL   rM   rN   rA   rZ   Sequencer/   r^   rO   r   r   rR   rR   r   s     =vvs/CD =r   rR   c                   N    e Zd Zedefd       Zedefd       Zedefd       Zy)rS   r   c                     t               rU   rV   rX   s    r   is_authenticatedzBaseUser.is_authenticatedx       !##r   c                     t               rU   rV   rb   s    r   display_namezBaseUser.display_name|   rd   r   c                     t               rU   rV   rb   s    r   identityzBaseUser.identity   rd   r   N)	rL   rM   rN   propertyboolrc   r/   rf   rh   rO   r   r   rS   rS   w   sQ    $$ $ $ $c $ $ $# $ $r   rS   c                   H    e Zd ZdeddfdZedefd       Zedefd       Zy)
SimpleUserusernamer   Nc                     || _         y rU   rm   )rX   rm   s     r   r^   zSimpleUser.__init__   s	     r   c                      y)NTrO   rb   s    r   rc   zSimpleUser.is_authenticated   s    r   c                     | j                   S rU   ro   rb   s    r   rf   zSimpleUser.display_name   s    }}r   )	rL   rM   rN   r/   r^   ri   rj   rc   rf   rO   r   r   rl   rl      sK    ! ! ! $   c  r   rl   c                   8    e Zd Zedefd       Zedefd       Zy)UnauthenticatedUserr   c                      y)NFrO   rb   s    r   rc   z$UnauthenticatedUser.is_authenticated   s    r   c                      y)N rO   rb   s    r   rf   z UnauthenticatedUser.display_name   s    r   N)rL   rM   rN   ri   rj   rc   r/   rf   rO   r   r   rs   rs      s6    $   c  r   rs   )i  N)#r?   r8   rA   urllib.parser   starlette._utilsr   starlette.exceptionsr   starlette.requestsr   r   starlette.responsesr   r	   starlette.websocketsr
   TypeVarrH   r   r_   r/   rj   r   UnionintrZ   rI   r>   rK   rQ   rR   rS   rl   rs   rO   r   r   <module>r      s      " . . 6 : *fooF^ V__S5I d  %)NLLfooc223NN ooc"N __m_m34	Nb	) 	$ $= =
$ $
 
( r   