
    i[f                      *   d dl Z d dlmZ d dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ dd	lmZmZ d
dlmZmZmZmZ g dZ G d dee          Z G d dee          Z G d deej                  Z G d deej                  ZdS )    N)asynccontextmanager)AuthRequestResponseUSE_CLIENT_DEFAULT)Lock)
url_decode)OAuth2Client)
ClientAuth	TokenAuth   )HTTPX_CLIENT_KWARGSbuild_request   )
OAuthErrorInvalidTokenErrorMissingTokenErrorUnsupportedTokenTypeError)
OAuth2AuthOAuth2ClientAuthAsyncOAuth2Clientr
   c                   B    e Zd ZdZdZdedej        eedf         fdZ	dS )r   zFSign requests for OAuth 2.0, currently only bearer token is supported.TrequestreturnNc              #   J  K   	 |                      t          |j                  |j        |j                  \  }}}t          t          |                    |d<   t          ||||          V  d S # t          $ r'}dt          |           }t          |          d }~ww xY w)NContent-Lengthurlheadersbodyinitial_requestzUnsupported token_type: )description)	preparestrr   r   contentlenr   KeyErrorr   )selfr   r   r   r    errorr"   s          c/var/www/piapp/venv/lib/python3.11/site-packages/authlib/integrations/httpx_client/oauth2_client.py	auth_flowzOAuth2Auth.auth_flow   s      	E!%GK  '/7?"D "DC$(+CIIG$%CtU\]]]]]]]] 	E 	E 	EASZZAAK+DDDD	Es   A+A1 1
B";"BB")
__name__
__module____qualname____doc__requires_request_bodyr   typing	Generatorr   r+        r*   r   r      sZ        PP E EV-=gxQU>U-V E E E E E Er4   r   c                   >    e Zd ZdZdedej        eedf         fdZdS )r   Tr   r   Nc              #      K   |                      |j        t          |j                  |j        |j                  \  }}}t          t          |                    |d<   t          ||||          V  d S )Nr   r   )r#   methodr$   r   r   r%   r&   r   )r(   r   r   r   r    s        r*   r+   zOAuth2ClientAuth.auth_flow*   sv      !\\NC,,gowP PWd$'D		NN !W4QXYYYYYYYYr4   )	r,   r-   r.   r0   r   r1   r2   r   r+   r3   r4   r*   r   r   '   sT         Z ZV-=gxQU>U-V Z Z Z Z Z Zr4   r   c                        e Zd ZeZeZeZe	Z
	 	 	 	 	 	 ddZdef fd	Zedef fd	            Zd Zdded	fd
ZdddefdZdedfdZ xZS )r   Nheaderc
                     |                      |
          }t          j        j        | fi | t	                      | _        t          j        | fd |||||||||	d
|
 d S N)
session	client_idclient_secrettoken_endpoint_auth_methodrevocation_endpoint_auth_methodscoperedirect_uritokentoken_placementupdate_token)_extract_session_request_paramshttpxAsyncClient__init__r   _token_refresh_lock_OAuth2Clientr(   r=   r>   r?   r@   rA   rB   rC   rD   rE   kwargsclient_kwargss               r*   rI   zAsyncOAuth2Client.__init__8   s     <<VDD"499=999 $(66 	
}'A,Kl%	
 	
 *0	
 	
 	
 	
 	
r4   Fc                    K   |sE|t           u r<| j        st                      |                     | j                   d {V  | j        } t                      j        ||fd|i| d {V S Nauth)r   rC   r   ensure_active_token
token_authsuperr   r(   r7   r   withhold_tokenrQ   rM   	__class__s         r*   r   zAsyncOAuth2Client.requestQ   s       	#$*<"<"<: *')))**4:666666666?D$UWW_C. .".&,. . . . . . . . 	.r4   c                6  K   |sE|t           u r<| j        st                      |                     | j                   d {V  | j        } t                      j        ||fd|i|4 d {V 	 }|W V  d d d           d {V  d S # 1 d {V swxY w Y   d S rP   )r   rC   r   rR   rS   rT   stream)r(   r7   r   rV   rQ   rM   resprW   s          r*   rY   zAsyncOAuth2Client.stream]   s]      	#$*<"<"<: *')))**4:666666666?D!577>C. .".&,. . 	 	 	 	 	 	 	 	15JJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /B
BBc                 0  K   | j         4 d {V  | j                                        r|                    d          }| j                            d          }|r |r|                     ||           d {V  nv| j                            d          dk    rJ|d         }|                     |d           d {V }| j        r|                     ||           d {V  nt                      	 d d d           d {V  d S # 1 d {V swxY w Y   d S )	Nrefresh_tokentoken_endpointr\   
grant_typeclient_credentialsaccess_token)r_   )ra   )	rJ   rC   
is_expiredgetmetadatar\   fetch_tokenrE   r   )r(   rC   r\   r   ra   	new_tokens         r*   rR   z%AsyncOAuth2Client.ensure_active_tokenk   s     + 	. 	. 	. 	. 	. 	. 	. 	.z$$&& . %		/ : :m''(899  .S .,,S,NNNNNNNNNN]&&|448LLL#(#8L&*&6&6sG[&6&\&\ \ \ \ \ \ \I( V"//	/UUUUUUUUU+----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   C!D
DD POSTc                   K   |                                 dk    r3 | j        |ft          t          |                    ||d| d {V }nJd|v rd                    ||g          }nd                    ||g          } | j        |f||d| d {V }| j        d         D ]} ||          }|                     |          S )Nrh   datar   rQ   ?&)r   rQ   access_token_response)upperpostdictr	   joinrc   compliance_hookparse_response_token)	r(   r   r    r   rQ   r7   rM   rZ   hooks	            r*   _fetch_tokenzAsyncOAuth2Client._fetch_tokenz   s     <<>>V##"%z$//00'% %#% % % % % % % %DD czzhhT{++hhT{++!#LwTLLVLLLLLLLLD()@A 	 	D4::DD((...r4   c                 F  K    | j         |ft          t          |                    ||d| d {V }| j        d         D ]} ||          }|                     |          }	d|	vr
|| j        d<   | j        r"|                     | j        |           d {V  | j        S )Nrj   refresh_token_responser\   r^   )rp   rq   r	   rs   rt   rC   rE   )
r(   r   r\   r    r   rQ   rM   rZ   ru   rC   s
             r*   _refresh_tokenz AsyncOAuth2Client._refresh_token   s      TY!:d++,,g! !! ! ! ! ! ! ! ! ()AB 	 	D4::DD))$//%''*7DJ' 	M##DJm#LLLLLLLLLzr4   c                 Z     | j         |ft          t          |                    ||d|S )Nrj   )rp   rq   r	   )r(   r   r    rQ   r   rM   s         r*   
_http_postzAsyncOAuth2Client._http_post   sE    ty2:d++,,$2 2*02 2 	2r4   	NNNNNNNr9   N)r,   r-   r.   r   SESSION_REQUEST_PARAMSr   client_auth_classr   token_auth_classr   oauth_error_classrI   r   r   r   rY   rR   rv   ry   r{   __classcell__rW   s   @r*   r   r   1   s#       0(!"59,015*.-5"
 
 
 
2 9>DV 
. 
. 
. 
. 
. 
. 7<CU      . . . ,.tBT"(/ / / /$ 7;%)0B   $ $(.@$ 2 2 2 2 2 2 2 2r4   r   c                   n     e Zd ZeZeZeZe	Z
	 	 	 	 	 	 ddZed             Zdef fd	Zdef fd	Z xZS )	r
   Nr9   c
                     |                      |
          }t          j        j        | fi | t	          j        | f| |||||||||	d
|
 d S r;   )rF   rG   ClientrI   rK   rL   s               r*   rI   zOAuth2Client.__init__   s     <<VDDd44m444	
}'A,Kl%	
 	
 *0	
 	
 	
 	
 	
r4   c                 "    t          | |          )N)r   )
error_typeerror_descriptions     r*   handle_errorzOAuth2Client.handle_error   s    %6777r4   Fc                     |sM|t           u rD| j        st                      |                     | j                  st	                      | j        } t                      j        ||fd|i|S rP   )r   rC   r   rR   r   rS   rT   r   rU   s         r*   r   zOAuth2Client.request   s     	#$*<"<"<: *')))++DJ77 *')))?DuwwC. .".&,. . 	.r4   c                     |sM|t           u rD| j        st                      |                     | j                  st	                      | j        } t                      j        ||fd|i|S rP   )r   rC   r   rR   r   rS   rT   rY   rU   s         r*   rY   zOAuth2Client.stream   s     	#$*<"<"<: *')))++DJ77 *')))?Duww~C. .".&,. . 	.r4   r|   )r,   r-   r.   r   r}   r   r~   r   r   r   r   rI   staticmethodr   r   r   rY   r   r   s   @r*   r
   r
      s        0(!"59,015*.-5"
 
 
 
* 8 8 \8 38>P . . . . . . 27=O . . . . . . . . . .r4   r
   ) r1   
contextlibr   rG   r   r   r   r   anyior   authlib.common.urlsr	   authlib.oauth2.clientr
   rK   authlib.oauth2.authr   r   utilsr   r   base_clientr   r   r   r   __all__r   r   rH   r   r   r3   r4   r*   <module>r      s    * * * * * *  = = = = = = = = = = = =       * * * * * * ? ? ? ? ? ? 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5             E E E E Ey E E EZ Z Z Z ZtZ Z Z Zp2 p2 p2 p2 p2u'8 p2 p2 p2f8. 8. 8. 8. 8.=%, 8. 8. 8. 8. 8.r4   