
    ~h0                     0    d dl mZ d dlmZ  G d d      Zy)    )	to_native)OAuth2Errorc                       e Zd ZdZdZi ZdZeZ	 	 	 	 	 	 d
dZ	e
d        Zej                  d        Zd Zd Zd Zd	 Zy)AssertionClientzConstructs a new Assertion Framework for OAuth 2.0 Authorization Grants
    per RFC7521_.

    .. _RFC7521: https://tools.ietf.org/html/rfc7521
    Nc                     || _         ||}|| _        || j                  }|| _        || _        || _        || _        || _        |	| _        | j                  | j                  d ||       | _
        || _        |
| _        y N)sessiontoken_endpointDEFAULT_GRANT_TYPE
grant_typeissuersubjectaudienceclaimsscopetoken_auth_class
token_auth_kwargsleeway)selfr	   r
   r   r   r   r   r   token_placementr   r   kwargss               Y/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/oauth2/rfc7521/client.py__init__zAssertionClient.__init__   s     %H,00J$  
  ,"33D/4PDO    c                 .    | j                   j                  S r   )r   tokenr   s    r   r   zAssertionClient.token6   s    $$$r   c                 :    | j                   j                  |       y r   )r   	set_token)r   r   s     r   r   zAssertionClient.token:   s    !!%(r   c                 :   | j                   | j                     } |d| j                  | j                  | j                  | j
                  d| j                  }t        |      | j                  d}| j                  r| j                  |d<   | j                  |      S )zUsing Assertions as Authorization Grants to refresh token as
        described in `Section 4.1`_.

        .. _`Section 4.1`: https://tools.ietf.org/html/rfc7521#section-4.1
        )r   r   r   r   )	assertionr   r    )
ASSERTION_METHODSr   r   r   r   r   r   r   r   _refresh_token)r   generate_assertionr"   datas       r   refresh_tokenzAssertionClient.refresh_token>   s     "33DOOD& 
;;LL]];;	

 ll
	 #9-//
 :: JJDM""4((r   c                     |j                   dk\  r|j                          |j                         }d|v r%| j                  |d   |j	                  d            || _        | j
                  S )Ni  errorerror_description)r*   description)status_coderaise_for_statusjsonoauth_error_classgetr   )r   respr   s      r   parse_response_tokenz$AssertionClient.parse_response_tokenU   sm    s"!!#		e((Gn%))<O2P )   
zzr   c                 v    | j                   j                  d| j                  |d      }| j                  |      S )NPOSTT)r'   withhold_token)r	   requestr
   r3   )r   r'   r2   s      r   r%   zAssertionClient._refresh_tokenb   s=    ||##D''d4 $ 
 ((..r   c                 "    | j                   r| ` y y r   )r	   r   s    r   __del__zAssertionClient.__del__i   s    << r   )NNNheaderN<   )__name__
__module____qualname____doc__r   r$   r   r   r0   r   propertyr   setterr(   r3   r%   r9   r#   r   r   r   r      s{     #  #J % % \\) ))./r   r   N)authlib.common.encodingr   authlib.oauth2.baser   r   r#   r   r   <module>rD      s    - +f fr   