
    {hl                         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        `/var/www/html/hubwallet-dev/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           
      f  K   	 |j                          d{   }t        j                  t        |            }	 | j                  j                  |j                  |j                         d{   }| 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t        |                  cY d}~S d}~ww xY w7 # t        $ r,}t        dt        d|j                              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)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   loaders	            r"   handlez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   F1D; D8"D; 3E5 .E2/E5 3A,F1F- F1'<F1#F/$F18D; ;	E/ E*$E/%F1*E//F12E5 5	F*>!F%F* F1%F**F1/F1N)
r   r   r   r   r   r   r   r	   r
   rE   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>rP      s[    !   / & ( ? [ ` `	 )i )
 <
 <
 <
r!   