o
    ^[2h0                     @   s*   d dl mZ d dlmZ G dd dZdS )    )	to_native)OAuth2Errorc                   @   sp   e Zd ZdZdZi ZdZeZ						dddZ	e
dd Zejd	d Zd
d Z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header<   c                 K   st   || _ |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leeway)selfr   r	   r   r   r   r   r   token_placementr   r   kwargs r   n/home/skpark/git/infrasmart_work/infrasmart/venv/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   6   s   zAssertionClient.tokenc                 C   s   | j | d S r   )r   	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   generate_assertionr   datar   r   r   refresh_token>   s   

zAssertionClient.refresh_tokenc                 C   sF   |j dkr	|  | }d|v r| j|d |dd|| _| jS )Ni  errorerror_description)r$   description)status_coderaise_for_statusjsonoauth_error_classgetr   )r   respr   r   r   r   parse_response_tokenU   s   
z$AssertionClient.parse_response_tokenc                 C   s    | j jd| j|dd}| |S )NPOSTT)r"   withhold_token)r   requestr	   r-   )r   r"   r,   r   r   r   r    b   s   

zAssertionClient._refresh_tokenc                 C   s   | j r| ` d S d S r   )r   r   r   r   r   __del__i   s   zAssertionClient.__del__)NNNr   Nr   )__name__
__module____qualname____doc__r
   r   r   r   r*   r   propertyr   setterr#   r-   r    r1   r   r   r   r   r      s*    
%

r   N)authlib.common.encodingr   authlib.oauth2.baser   r   r   r   r   r   <module>   s    