o
    ùT·j  ã                   @  sv   d dl m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mZmZmZ G dd„ dƒZd	S )
é    )Úannotations)ÚCallable)ÚAuthCredentialsÚAuthenticationBackendÚAuthenticationErrorÚUnauthenticatedUser)ÚHTTPConnection)ÚPlainTextResponseÚResponse)ÚASGIAppÚReceiveÚScopeÚSendc                   @  s2   e Zd Z	ddd
d„Zddd„Zeddd„ƒZdS )ÚAuthenticationMiddlewareNÚappr   Úbackendr   Úon_errorú@Callable[[HTTPConnection, AuthenticationError], Response] | NoneÚreturnÚNonec                 C  s*   || _ || _|d ur|| _d S | j| _d S ©N)r   r   Údefault_on_errorr   )Úselfr   r   r   © r   úf/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/starlette/middleware/authentication.pyÚ__init__   s   
ÿÿz!AuthenticationMiddleware.__init__Úscoper   Úreceiver   Úsendr   c              
   Ã  sè   �|d dvr|   |||¡I d H  d S t|ƒ}z| j |¡I d H }W n3 tyU } z'|  ||¡}|d dkrA|dddœƒI d H  n	||||ƒI d H  W Y d }~d S d }~ww |d u r`tƒ tƒ f}|\|d< |d< |   |||¡I d H  d S )	NÚtype)ÚhttpÚ	websocketr!   zwebsocket.closeiè  )r   ÚcodeÚauthÚuser)r   r   r   Úauthenticater   r   r   r   )r   r   r   r   ÚconnÚauth_resultÚexcÚresponser   r   r   Ú__call__   s&   €€úz!AuthenticationMiddleware.__call__r&   r   r(   Ú	Exceptionr
   c                 C  s   t t|ƒdd�S )Ni�  )Ústatus_code)r	   Ústr)r&   r(   r   r   r   r   2   s   z)AuthenticationMiddleware.default_on_errorr   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r&   r   r(   r+   r   r
   )Ú__name__Ú
__module__Ú__qualname__r   r*   Ústaticmethodr   r   r   r   r   r      s    ü
r   N)Ú
__future__r   Úcollections.abcr   Ústarlette.authenticationr   r   r   r   Ústarlette.requestsr   Ústarlette.responsesr	   r
   Ústarlette.typesr   r   r   r   r   r   r   r   r   Ú<module>   s    