o
    b	                     @   s,   d dl mZ d dlmZ G dd deZdS )    )	to_native)OAuth2Errorc                   @   sT   e Zd ZdZdZi ZdZ		dddZedd Z	e	j
dd Z	d	d
 Zd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headerc
                 K   sn   || _ |d u r	|}|| _|d u r| j}|| _|| _|| _|| _|| _|	| _| j	d ur2| 	d || | _
|
| _d S N)sessiontoken_endpointDEFAULT_GRANT_TYPE
grant_typeissuersubjectaudienceclaimsscopetoken_auth_class
token_auth_kwargs)selfr   r   r   r   r   r
   r   Ztoken_placementr   kwargs r   \/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/oauth2/rfc7521/client.py__init__   s   

zAssertionClient.__init__c                 C   s   | j jS r   )r   token)r   r   r   r   r   )   s   zAssertionClient.tokenc                 C   s   | j | d S r   )r   Z	set_token)r   r   r   r   r   r   -   s   c                 C   sX   | 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   Nr   )
ASSERTION_METHODSr
   r   r   r   r   r   r   r   _refresh_token)r   Zgenerate_assertionr   datar   r   r   refresh_token1   s   

zAssertionClient.refresh_tokenc                 C   sH   | j jd| j|dd}| }d|v rt|d |dd|| _| jS )NPOSTT)r   Zwithhold_tokenerrorZerror_description)r   description)r   requestr   jsonr   getr   )r   r   respr   r   r   r   r   H   s   
zAssertionClient._refresh_token)NNNr   N)__name__
__module____qualname____doc__r	   r   r   r   propertyr   setterr   r   r   r   r   r   r      s    


r   N)Zauthlib.common.encodingr   Zauthlib.oauth2.baser   objectr   r   r   r   r   <module>   s    