
    !<i0                     8    d dl mZ d dlmZ  G d d          ZdS )    )	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dS )AssertionClientzConstructs a new Assertion Framework for OAuth 2.0 Authorization Grants
    per RFC7521_.

    .. _RFC7521: https://tools.ietf.org/html/rfc7521
    Nheader<   c                     || _         ||}|| _        || j        }|| _        || _        || _        || _        || _        |	| _        | j	        | 	                    d ||           | _
        || _        |
| _        d S 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               /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/authlib/oauth2/rfc7521/client.py__init__zAssertionClient.__init__   s     %H,0J$  
 ,"33D/4PPDO    c                     | j         j        S r
   )r   tokenr   s    r   r   zAssertionClient.token6   s    $$r   c                 :    | j                             |           d S 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<   | 	                    |          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     "3DOD&& 
;L];	
 

 l
 
	 #9--/
 
 : 	' JDM""4(((r   c                     |j         dk    r|                                 |                                }d|v r0|                     |d         |                    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   s~    s""!!###		e((Gn%))<O2P2P )    
zr   c                 r    | j                             d| j        |d          }|                     |          S )NPOSTT)r)   withhold_token)r   requestr   r5   )r   r)   r4   s      r   r'   zAssertionClient._refresh_tokenb   s@    |##D'd4 $ 
 
 ((...r   c                     | j         r| ` d S d S r
   )r   r    s    r   __del__zAssertionClient.__del__i   s    < 		 	r   )NNNr   Nr   )__name__
__module____qualname____doc__r   r&   r   r   r2   r   propertyr   setterr*   r5   r'   r;   r%   r   r   r   r      s          #  # # # #J % % X% \) ) \)) ) ).  / / /    r   r   N)authlib.common.encodingr   authlib.oauth2.baser   r   r%   r   r   <module>rD      se    - - - - - - + + + + + +f f f f f f f f f fr   