o
    hl                     @   s   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 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mZ G dd deZG dd deZeG dd dZdS )    )	dataclass)partial)AnyLiteral)	BaseModelValidationError)Request)Response)stringify_pydantic_error)PydanticJSONResponse)AuthenticationErrorClientAuthenticator)AccessToken OAuthAuthorizationServerProviderRefreshTokenc                   @   sB   e Zd ZU dZeed< dZed dB ed< eed< edB ed< dS )RevocationRequestzI
    # See https://datatracker.ietf.org/doc/html/rfc7009#section-2.1
    tokenN)access_tokenrefresh_tokentoken_type_hint	client_idclient_secret)__name__
__module____qualname____doc__str__annotations__r   r    r   r   `/var/www/html/openai_agents/venv/lib/python3.10/site-packages/mcp/server/auth/handlers/revoke.pyr      s   
 r   c                   @   s*   e Zd ZU ed ed< dZedB ed< dS )RevocationErrorResponse)invalid_requestunauthorized_clienterrorNerror_description)r   r   r   r   r   r$   r   r   r   r   r   r       s   
 r    c                   @   s:   e Zd ZU eeeef ed< eed< dedefddZ	dS )RevocationHandlerproviderclient_authenticatorrequestreturnc           	   
      s>  z|  I dH }tt|}W n ty/ } ztdtdt|ddW  Y d}~S d}~ww z| j	|j
|jI dH }W n ty[ } ztdtd|jddW  Y d}~S d}~ww | jjt| jj|g}|jdkrpt|}d}|D ]}||jI dH }|dur nqt|r|j
|j
kr| j|I dH  td	d
dddS )zF
        Handler for the OAuth 2.0 Token Revocation endpoint.
        Ni  r!   )r#   r$   )status_codecontenti  r"   r      zno-storezno-cache)zCache-ControlPragma)r*   headers)formr   model_validatedictr   r   r    r
   r'   authenticater   r   r   messager&   load_access_tokenr   load_refresh_tokenr   reversedr   revoke_tokenr	   )	selfr(   	form_datarevocation_requesteclientloadersr   loaderr   r   r   handle&   s^   


zRevocationHandler.handleN)
r   r   r   r   r   r   r   r   r	   r?   r   r   r   r   r%   !   s   
 r%   N)dataclassesr   	functoolsr   typingr   r   pydanticr   r   starlette.requestsr   starlette.responsesr	   mcp.server.auth.errorsr
   mcp.server.auth.json_responser   &mcp.server.auth.middleware.client_authr   r   mcp.server.auth.providerr   r   r   r   r    r%   r   r   r   r   <module>   s    