
    Chl                         S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJrJrJr   " S S\5      r " S S\5      r\ " S S5      5       rg)    )	dataclass)partial)AnyLiteral)	BaseModelValidationError)Request)Response)stringify_pydantic_error)PydanticJSONResponse)AuthenticationErrorClientAuthenticator)AccessToken OAuthAuthorizationServerProviderRefreshTokenc                   X    \ rS rSr% Sr\\S'   Sr\S   S-  \S'   \\S'   \S-  \S'   S	r	g)
RevocationRequest   zA
# 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____firstlineno____doc__str__annotations__r   r   __static_attributes__r       Y/home/james-whalen/.local/lib/python3.13/site-packages/mcp/server/auth/handlers/revoke.pyr   r      s2     JGKOW<=DKN:r$   r   c                   :    \ rS rSr% \S   \S'   Sr\S-  \S'   Srg)RevocationErrorResponse   )invalid_requestunauthorized_clienterrorNerror_descriptionr   )	r   r   r   r   r   r"   r,   r!   r#   r   r$   r%   r'   r'      s    ;<<$(sTz(r$   r'   c                   H    \ rS rSr% \\\\4   \S'   \\S'   S\S\	4S jr
Srg)	RevocationHandler!   providerclient_authenticatorrequestreturnc           
      `  #     UR                  5       I Sh  vN n[        R                  [        U5      5      n U R                  R                  UR                  UR                  5      I Sh  vN nU R                  R                  [!        U R                  R"                  U5      /nUR$                  S:X  a  ['        U5      nSnU H"  nU" UR(                  5      I Sh  vN nUc  M"    O   U(       a=  UR                  UR                  :X  a#  U R                  R+                  U5      I Sh  vN   [-        S	S
SS.S9$  GN(! [         a%  n[        S[        S[        U5      S9S9s SnA$ SnAff = f GN! [         a&  n[        S[        SUR                  S9S9s SnA$ SnAff = f N N~7f)z6
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)r5   headers)formr   model_validatedictr   r   r'   r   r1   authenticater   r   r   messager0   load_access_tokenr   load_refresh_tokenr   reversedr   revoke_tokenr
   )	selfr2   	form_datarevocation_requesteclientloadersr   loaders	            r%   handleRevocationHandler.handle&   s    
	%lln,I!2!A!A$y/!R	44AA",,.@.N.N F MM++DMM44f=
 --@w'G37F !3!9!9::E   U__(8(88 --,,U333 !+$
 	
[ - 	'/+&>q&A 	 # 	'//&'ii 	$ ; 4s   F.E D?"E 3E7 .E4/E7 3A-F. F*!F.*AF.-F,.F.?E 
E1E,&E1'F.,E11F.4E7 7
F'F"F'F."F''F.,F.r   N)r   r   r   r   r   r   r"   r   r	   r
   rJ   r#   r   r$   r%   r.   r.   !   s,    .sC}==--8
G 8
 8
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>rV      s[    !   / & ( ? [ ` `	 )i )
 <
 <
 <
r$   