o
    ÿÑÐb#  ã                   @   sb   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	 G dd„ de	ƒZ
G d	d
„ d
eeƒZdS )é    )ÚSession)Ú	deprecate)ÚAssertionClient)ÚJWTBearerGranté   )Ú
OAuth2Authc                   @   s   e Zd Zdd„ ZdS )ÚAssertionAuthc                 C   s(   | j r| j  ¡ r| jr| j ¡ S d S d S )N)ÚtokenÚ
is_expiredÚclientZrefresh_token)Úself© r   úu/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/requests_client/assertion_session.pyÚensure_active_token	   s   
ÿz!AssertionAuth.ensure_active_tokenN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   c                       sH   e Zd ZdZeZejZeej	iZ
eZ		d	dd„Zd
‡ fdd„	Z‡  ZS )ÚAssertionSessionz”Constructs a new Assertion Framework for OAuth 2.0 Authorization Grants
    per RFC7521_.

    .. _RFC7521: https://tools.ietf.org/html/rfc7521
    NÚheaderc	                 K   sR   t  | ¡ |	 dd ¡}
|
rtddƒ |
}tj| f| ||||||||dœ	|	¤Ž d S )NÚ	token_urlz+Use "token_endpoint" instead of "token_url"z1.0)	ÚsessionÚtoken_endpointÚissuerÚsubjectÚaudienceÚ
grant_typeÚclaimsÚtoken_placementÚscope)r   Ú__init__Úpopr   r   )r   r   r   r   r   r   r   r   r   Úkwargsr   r   r   r   r      s   

ÿü
üzAssertionSession.__init__Fc                    s0   |s	|du r	| j }tt| ƒj||fd|i|¤ŽS )z-Send request with auto refresh token feature.NÚauth)Z
token_authÚsuperr   Úrequest)r   ÚmethodÚurlZwithhold_tokenr"   r!   ©Ú	__class__r   r   r$   +   s   
ÿÿÿzAssertionSession.request)NNNr   N)FN)r   r   r   Ú__doc__r   Ztoken_auth_classr   Z
GRANT_TYPEZJWT_BEARER_GRANT_TYPEÚsignZASSERTION_METHODSZDEFAULT_GRANT_TYPEr   r$   Ú__classcell__r   r   r'   r   r      s    ÿ
ÿr   N)Úrequestsr   Zauthlib.deprecater   Zauthlib.oauth2.rfc7521r   Zauthlib.oauth2.rfc7523r   Zoauth2_sessionr   r   r   r   r   r   r   Ú<module>   s    