
    Ki)                         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e      Z G d de      Ze G d d             Zy)    )	dataclass)partial)AnyLiteral)	BaseModelValidationError)Request)Response)stringify_pydantic_error)PydanticJSONResponse)AuthenticationErrorClientAuthenticator)AccessToken OAuthAuthorizationServerProviderRefreshTokenc                   P    e Zd ZU dZeed<   dZed   dz  ed<   eed<   edz  ed<   y)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        k/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/mcp/server/auth/handlers/revoke.pyr   r      s2     JGKOW<=DKN:r!   r   c                   2    e Zd ZU ed   ed<   dZedz  ed<   y)RevocationErrorResponse)invalid_requestunauthorized_clienterrorNerror_description)r   r   r   r   r   r(   r   r    r!   r"   r$   r$      s    ;<<$(sTz(r!   r$   c                   >    e Zd ZU eeeef   ed<   eed<   dedefdZ	y)RevocationHandlerproviderclient_authenticatorrequestreturnc           
      <  K   	 | j                   j                  |       d{   }	 |j                          d{   }t        j                  t        |            }| j                  j                  t        | j                  j                  |      g}|j                   dk(  rt#        |      }d}|D ]   } ||j$                         d{   }|  n |r<|j&                  |j&                  k(  r#| j                  j)                  |       d{    t+        d	d
dd      S 7 # t        $ r,}t        dt	        d|j
                              cY d}~S d}~ww xY w7 ## t        $ r+}t        dt	        dt        |                  cY d}~S d}~ww xY w7 7 w)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)r0   headers)r,   authenticate_requestr   r   r$   messageformr   model_validatedictr   r   r+   load_access_tokenr   load_refresh_tokenr   reversedr   r   revoke_tokenr
   )	selfr-   cliente	form_datarevocation_requestloadersr   loaders	            r"   handlezRevocationHandler.handle&   s    		44II'RRF
	%lln,I!2!A!A$y/!R MM++DMM44f=
 --@w'G37 	F !3!9!9::E 	 U__(8(88 --,,U333 !+$
 	
U S" 	'//&'ii 	 - 	'/+&>q&A 	$ ; 4s   FD& D#D& E! E"E! A,F
FF<FFF#D& &	E/!EEFEFE! !	F* F
FFFFFN)
r   r   r   r   r   r   r   r	   r
   rE   r    r!   r"   r*   r*   !   s,    .sC}==--5
G 5
 5
r!   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"   <module>rP      s[    !   / & ( ? [ ` `	 )i )
 9
 9
 9
r!   