o
    Dfk                     @   s   d dl Z d dl mZmZ 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
gZG dd
 d
ee jZG dd dee jZdS )    N)ResponseUSE_CLIENT_DEFAULT)AssertionClient)JWTBearerGrant   )extract_client_kwargs)
OAuth2Auth   )
OAuthErrorAsyncAssertionClientc                       sZ   e Zd ZeZeZejZ	e	ej
iZe	Z		dddZdefdef fddZd	d
 Z  ZS )r   Nheaderc	                 K   sF   t |	}
tjj| fi |
 tj| fd ||||||||d	|	 d S N)	sessiontoken_endpointissuersubjectaudience
grant_typeclaimstoken_placementscope)r   httpxAsyncClient__init___AssertionClientselfr   r   r   r   r   r   r   r   kwargsclient_kwargs r   k/home/ubuntu/webapp/venv/lib/python3.10/site-packages/authlib/integrations/httpx_client/assertion_client.pyr         
zAsyncAssertionClient.__init__Freturnc                    sR   |s|t u r| jr| j r|  I dH  | j}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superrequestr   methodurlwithhold_tokenr$   r   	__class__r   r    r+   "   s   zAsyncAssertionClient.requestc                    s&   | j d| j|ddI d H }| |S )NPOSTT)datar/   )r+   r   parse_response_token)r   r3   respr   r   r    _refresh_token,   s
   

z#AsyncAssertionClient._refresh_tokenNNNr   N)__name__
__module____qualname__r   token_auth_classr
   oauth_error_classr   
GRANT_TYPEJWT_BEARER_GRANT_TYPEsignASSERTION_METHODSDEFAULT_GRANT_TYPEr   r   r   r+   r6   __classcell__r   r   r0   r    r      s    

c                       sL   e Zd ZeZeZejZ	e	ej
iZe	Z		dddZdef fdd	Z  ZS )	r   Nr   c	                 K   sF   t |	}
tjj| fi |
 tj| f| ||||||||d	|	 d S r   )r   r   Clientr   r   r   r   r   r    r   <   r!   zAssertionClient.__init__Fc                    sD   |s|t u r| jr| j r|   | j}t j||fd|i|S )r#   r$   r%   r,   r0   r   r    r+   I   s   zAssertionClient.requestr7   )r8   r9   r:   r   r;   r
   r<   r   r=   r>   r?   r@   rA   r   r   r+   rB   r   r   r0   r    r   3   s    
r   )r   r   r   authlib.oauth2.rfc7521r   r   authlib.oauth2.rfc7523r   utilsr   oauth2_clientr   base_clientr
   __all__r   r   rC   r   r   r   r    <module>   s    '