o
    ^[2h  ã                   @   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 | j j¡r| j  ¡ S d S d S )N)ÚclientÚtokenÚ
is_expiredÚleewayÚrefresh_token)Úself© r   ú‡/home/skpark/git/infrasmart_work/infrasmart/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                       sR   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Úheaderé<   c                 K   sF   t  | ¡ |	| _t| |ƒ tj| f| |||||||||
dœ
|¤Ž d S )N)
ÚsessionÚtoken_endpointÚissuerÚsubjectÚaudienceÚ
grant_typeÚclaimsÚtoken_placementÚscoper   )r   Ú__init__Údefault_timeoutr   r   )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   NNr   )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    