
    )`i(                        d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	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mZ d dlmZ d dlmZmZ  G d de
e                   Z G d de	          Ze G d d                      ZdS )    N)	dataclass)Any)uuid4)	BaseModel	RootModelValidationError)Request)Response)stringify_pydantic_error)PydanticJSONResponse) OAuthAuthorizationServerProviderRegistrationErrorRegistrationErrorCode)ClientRegistrationOptions)OAuthClientInformationFullOAuthClientMetadatac                       e Zd ZU eed<   dS )RegistrationRequestrootN)__name__
__module____qualname__r   __annotations__     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/mcp/server/auth/handlers/register.pyr   r      s           r   r   c                   *    e Zd ZU eed<   edz  ed<   dS )RegistrationErrorResponseerrorNerror_description)r   r   r   r   r   strr   r   r   r   r      s.             Tz!!!!!r   r   c                   F    e Zd ZU eeeef         ed<   eed<   dedefdZ	dS )RegistrationHandlerprovideroptionsrequestreturnc           
        K   	 |                                  d {V }t          j        |          }nD# t          $ r7}t	          t          dt          |                    d          cY d }~S d }~ww xY wt          t                                }|j	        d|_	        d }|j	        dk    rt          j        d          }|j        1| j        j        %d                    | j        j                  |_        n|j        | j        j        t#          |j                                                  }t#          | j        j                  }|                    |          s9t	          t          dd	d
                    ||z
                       d          S ddh                    t#          |j                            s t	          t          dd          d          S d|j        vr t	          t          dd          d          S t-          t/          j                              }	| j        j        |	| j        j        z   nd }
t3          d$i d|d|	d|d|
d|j        d|j	        d|j        d|j        d|j        d|j        d|j        d|j        d|j        d|j        d|j         d|j!        d |j"        d!|j#        d"|j$        }	 | j%        &                    |           d {V  t	          |d#          S # tN          $ r4}t	          t          |j(        |j)                  d          cY d }~S d }~ww xY w)%Ninvalid_client_metadata)r   r    i  )contentstatus_codeclient_secret_postnone     z Requested scopes are not valid: z, authorization_coderefresh_tokenz8grant_types must be authorization_code and refresh_tokencodez?response_types must include 'code' for authorization_code grant	client_idclient_id_issued_atclient_secretclient_secret_expires_atredirect_uristoken_endpoint_auth_methodgrant_typesresponse_typesclient_name
client_urilogo_uriscopecontactstos_uri
policy_urijwks_urijwkssoftware_idsoftware_version   r   )*jsonr   model_validater   r   r   r   r!   r   r8   secrets	token_hexr>   r%   default_scopesjoinvalid_scopessetsplitissubsetr9   r:   inttimeclient_secret_expiry_secondsr   r7   r;   r<   r=   r?   r@   rA   rB   rC   rD   rE   r$   register_clientr   r   r    )selfr&   bodyclient_metadatavalidation_errorr3   r5   requested_scopesrM   r4   r6   client_infoes                r   handlezRegistrationHandler.handle"   s     	 ''''''D1@FFOO  	 	 	'13&>?O&P&P            	 LL	 5=9MO65??#-b11M (T\-H-T$'HHT\-H$I$IO!!".4<3L3X"?#8#>#>#@#@AAt|899L#,,\:: +57+H99%5%DEE+H +H  
 !$    %o6??OD_@`@`aa 	'13&`        777'13&g        "$)++.. |8D  $,"KKK 	! 1 
 
 
i
 3 3
 (-
 &>%=	
 *77
 (7'Q'Q
 (33
 +99
 (33
 '11
 %--
 "''
 %--
 $++
  '11!
" %--#
$ !%%%
& (33'
( -==)
,	-//<<<<<<<<< (MMMM  	 	 	'1STSfggg        	s8   .3 
A4,A/)A4/A40L 
M)M;MMN)
r   r   r   r   r   r   r   r	   r
   r\   r   r   r   r#   r#      sc         .sC}====&&&&fG f f f f f f fr   r#   ) rI   rR   dataclassesr   typingr   uuidr   pydanticr   r   r   starlette.requestsr	   starlette.responsesr
   mcp.server.auth.errorsr   mcp.server.auth.json_responser   mcp.server.auth.providerr   r   r   mcp.server.auth.settingsr   mcp.shared.authr   r   r   r   r#   r   r   r   <module>rh      s     ! ! ! ! ! !             : : : : : : : : : : & & & & & & ( ( ( ( ( ( ; ; ; ; ; ; > > > > > > o o o o o o o o o o > > > > > > K K K K K K K K    )$78   " " " " "	 " " "
 j j j j j j j j j jr   