o
    bB                     @   s   d dl mZmZmZ zd dlmZ W n ey   dZY nw 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 d
dgZG dd
 d
e	eZG dd de	eZdS )    )AsyncClientClientUSE_CLIENT_DEFAULT)UNSETN)AssertionClient)JWTBearerGrant)OAuth2Error   )extract_client_kwargs)
OAuth2AuthAsyncAssertionClientr   c                       sL   e Zd ZeZejZeejiZ	eZ
		d
ddZd fdd	Zdd	 Z  ZS )r   Nheaderc	                 K   sD   t |	}
tj| fi |
 tj| fd ||||||||d	|	 d S N)	sessiontoken_endpointissuersubjectaudience
grant_typeclaimstoken_placementscope)r
   r   __init___AssertionClientselfr   r   r   r   r   r   r   r   kwargsZclient_kwargs r   q/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/httpx_client/assertion_client.pyr         
zAsyncAssertionClient.__init__Fc                    sV   |s|t u r| jr| j r|  I dH  | j}tt| j||fd|i|I dH S )-Send request with auto refresh token feature.Nauth)r   token
is_expiredrefresh_token
token_authsuperr   requestr   methodurlwithhold_tokenr!   r   	__class__r   r   r'   $   s   
zAsyncAssertionClient.requestc                    sN   | j d| j|ddI d H }| }d|v r!t|d |dd|| _| jS )NPOSTT)datar+   errorZerror_description)r0   description)r'   r   jsonr   getr"   )r   r/   respr"   r   r   r   _refresh_token.   s   
z#AsyncAssertionClient._refresh_tokenNNNr   NFN)__name__
__module____qualname__r   token_auth_classr   
GRANT_TYPEJWT_BEARER_GRANT_TYPEsignASSERTION_METHODSDEFAULT_GRANT_TYPEr   r'   r5   __classcell__r   r   r,   r   r      s    

c                       sD   e 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 )
r   Nr   c	                 K   sD   t |	}
tj| fi |
 tj| f| ||||||||d	|	 d S r   )r
   r   r   r   r   r   r   r   r   D   r   zAssertionClient.__init__Fc                    sH   |s|t u r| jr| j r|   | j}tt| j||fd|i|S )r    r!   )r   r"   r#   r$   r%   r&   r   r'   r(   r,   r   r   r'   Q   s   
zAssertionClient.requestr6   r7   )r8   r9   r:   r   r;   r   r<   r=   r>   r?   r@   r   r'   rA   r   r   r,   r   r   <   s    
)Zhttpxr   r   r   Zhttpx._configr   ImportErrorZauthlib.oauth2.rfc7521r   r   Zauthlib.oauth2.rfc7523r   Zauthlib.oauth2r   utilsr
   Zoauth2_clientr   __all__r   r   r   r   r   <module>   s    -