o
    ©D®f(  ã                   @   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)ÚAssertionClient)ÚJWTBearerGranté   )Ú
OAuth2Auth)Úupdate_session_configurec                   @   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ÚclientÚrefresh_token)Úself© r   úo/home/ubuntu/webapp/venv/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   sD   t  | ¡ |	| _t| |
ƒ tj| f| ||||||||dœ	|
¤Ž d S )N)	ÚsessionÚtoken_endpointÚissuerÚsubjectÚaudienceÚ
grant_typeÚclaimsÚtoken_placementÚscope)r   Ú__init__Údefault_timeoutr   r   )r   r   r   r   r   r   r   r   r   r    Úkwargsr   r   r   r      s   

ÿü
üzAssertionSession.__init__Fc                    s@   | j r
| d| j ¡ |s|du r| j}tƒ j||fd|i|¤ŽS )z-Send request with auto refresh token feature.ÚtimeoutNÚauth)r    Ú
setdefaultÚ
token_authÚsuperÚrequest)r   ÚmethodÚurlÚwithhold_tokenr#   r!   ©Ú	__class__r   r   r'   '   s   ÿÿÿzAssertionSession.request)NNNr   NN)FN)r   r   r   Ú__doc__r   Útoken_auth_classr   Ú
GRANT_TYPEÚJWT_BEARER_GRANT_TYPEÚsignÚASSERTION_METHODSÚDEFAULT_GRANT_TYPEr   r'   Ú__classcell__r   r   r+   r   r      s    ÿ
ÿr   N)Úrequestsr   Úauthlib.oauth2.rfc7521r   Úauthlib.oauth2.rfc7523r   Úoauth2_sessionr   Úutilsr   r   r   r   r   r   r   Ú<module>   s    