
    k7i#                     d   S SK r S SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S S	KJr  S S
KJr  S SKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  / SQr " S S\\5      r " S S\\5      r " S S\\R:                  5      r " S S\\R>                  5      rg)    N)asynccontextmanager)Lock)USE_CLIENT_DEFAULT)Auth)Request)Response)
url_decode)
ClientAuth)	TokenAuth)OAuth2Client   )InvalidTokenError)MissingTokenError
OAuthError)UnsupportedTokenTypeError   )HTTPX_CLIENT_KWARGS)build_request)
OAuth2AuthOAuth2ClientAuthAsyncOAuth2Clientr   c                   N    \ rS rSrSrSrS\S\R                  \\	S4   4S jr
Srg)	r      zFSign requests for OAuth 2.0, currently only bearer token is supported.TrequestreturnNc              #   "  #     U R                  [        UR                  5      UR                  UR                  5      u  p#n[        [        U5      5      US'   [        X#XAS9v   g ! [         a  nS[        U5       3n[        US9UeS nAff = f7f)NContent-Lengthurlheadersbodyinitial_requestzUnsupported token_type: )description)	preparestrr    r!   contentlenr   KeyErrorr   )selfr   r    r!   r"   errorr$   s          i/home/james-whalen/.local/lib/python3.13/site-packages/authlib/integrations/httpx_client/oauth2_client.py	auth_flowOAuth2Auth.auth_flow$   s     
	P!%GKK '//7??"C$ ),CIG$%t   	P4SZLAK+D%O	Ps)   BA A% $B%
B/BBB )__name__
__module____qualname____firstlineno____doc__requires_request_bodyr   typing	Generatorr   r-   __static_attributes__r/       r,   r   r      s4    P P PV-=-=gxQU>U-V Pr9   r   c                   J    \ rS rSrSrS\S\R                  \\S4   4S jr	Sr
g)r   2   Tr   r   Nc              #      #    U R                  UR                  [        UR                  5      UR                  UR
                  5      u  p#n[        [        U5      5      US'   [        X#XAS9v   g 7f)Nr   r   )r%   methodr&   r    r!   r'   r(   r   )r*   r   r    r!   r"   s        r,   r-   OAuth2ClientAuth.auth_flow5   s]     !\\NNC,goow
d %(D	N !4
 	
s   A-A/r/   )r0   r1   r2   r3   r5   r   r6   r7   r   r-   r8   r/   r9   r,   r   r   2   s.     
 
V-=-=gxQU>U-V 
r9   r   c                      ^  \ rS rSr\r\r\r	\
r          SS jrS\4U 4S jjr\S\4U 4S jj5       rS rSS\S	4S
 jrSSS\4S jrS\S4S jrSrU =r$ )r   ?   Nc                     U R                  U5      n[        R                  R                  " U 40 UD6  [	        5       U l        [        R                  " U 4S UUUUUUUUU	U
S.UD6  g )N)session	client_idclient_secrettoken_endpoint_auth_methodrevocation_endpoint_auth_methodscoperedirect_uritokentoken_placementupdate_tokenleeway)_extract_session_request_paramshttpxAsyncClient__init__r   _token_refresh_lock_OAuth2Client)r*   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   kwargsclient_kwargss                r,   rP   AsyncOAuth2Client.__init__F   sz     <<VD""49=9 $(6 	
''A,K%+%	
 	
r9   Fc                    >#    U(       dS  U[         L aJ  U R                  (       d
  [        5       eU R                  U R                  5      I S h  vN   U R                  n[
        TU ]  " X4SU0UD6I S h  vN $  N+ N7fNauth)r   rI   r   ensure_active_token
token_authsuperr   r*   r=   r    withhold_tokenrX   rS   	__class__s         r,   r   AsyncOAuth2Client.requestl   sk      $*<"<::'))**4::666??DW_VFtFvFFF	 7 Gs$   A
A=A9&A=4A;5A=;A=c                d  >#    U(       dS  U[         L aJ  U R                  (       d
  [        5       eU R                  U R                  5      I S h  vN   U R                  n[
        TU ]  " X4SU0UD6 IS h  vN nU7v   S S S 5      IS h  vN   g  NB N N	! , IS h  vN  (       d  f       g = f7frW   )r   rI   r   rY   rZ   r[   stream)r*   r=   r    r]   rX   rS   respr^   s          r,   ra   AsyncOAuth2Client.streamy   s      $*<"<::'))**4::666??D7>&CDCFCCtJ DCC	 7 DCCCsZ   A
B0B'B05B6B09B?B0
BB0B0B0B-BB-)B0c                 p  #    U R                    IS h  vN   U R                  R                  U R                  S9(       a  UR	                  S5      nU R
                  R	                  S5      nU(       a  U(       a  U R                  X2S9I S h  vN   OoU R
                  R	                  S5      S:X  aF  US   nU R                  USS9I S h  vN nU R                  (       a  U R                  XTS	9I S h  vN   O
[        5       eS S S 5      IS h  vN   g  N N NL N& N! , IS h  vN  (       d  f       g = f7f)
N)rL   refresh_tokentoken_endpointre   
grant_typeclient_credentialsaccess_token)rh   )rj   )
rQ   rI   
is_expiredrL   getmetadatare   fetch_tokenrK   r   )r*   rI   re   r    rj   	new_tokens         r,   rY   %AsyncOAuth2Client.ensure_active_token   s    +++zz$$DKK$8 %		/ :mm''(89 S,,S,NNN]]&&|48LL#(#8L&*&6&6(< '7 ' !I (("//	/UUU+-- ,++
 O! V ,+++s{   D6DD6A5DD<D	D
'D1D2DD6DD6DDDD6D3"D%#D3/D6 POSTc                   #    UR                  5       S:X  a1  U R                  " U4[        [        U5      5      X4S.UD6I S h  vN nOHSU;   a  SR	                  X/5      nOSR	                  X/5      nU R
                  " U4X4S.UD6I S h  vN nU R                  S    H  nU" U5      nM     U R                  U5      $  N| N57f)Nrr   datar!   rX   ?&)r!   rX   access_token_response)upperpostdictr	   joinrl   compliance_hookparse_response_token)	r*   r    r"   r!   rX   r=   rS   rb   hooks	            r,   _fetch_tokenAsyncOAuth2Client._fetch_token   s      <<>V#z$/0'PV D czhh{+hh{+#LwLVLLD(()@AD:D B ((.. Ms%   A CB?ACC4CCc                 v  #    U R                   " U4[        [        U5      5      XES.UD6I S h  vN nU R                  S    H  nU" U5      nM     U R	                  U5      n	SU	;  a  X R
                  S'   U R                  (       a"  U R                  U R
                  US9I S h  vN   U R
                  $  N N7f)Nrt   refresh_token_responsere   rg   )rz   r{   r	   r}   r~   rI   rK   )
r*   r    re   r"   r!   rX   rS   rb   r   rI   s
             r,   _refresh_token AsyncOAuth2Client._refresh_token   s      YY
:d+,g
LR
 
 (()ABD:D C ))$/%'*7JJ'##DJJm#LLLzz
 Ms"   ,B9B5A5B9$B7%B97B9c                 R    U R                   " U4[        [        U5      5      XCS.UD6$ )Nrt   )rz   r{   r	   )r*   r    r"   rX   r!   rS   s         r,   
_http_postAsyncOAuth2Client._http_post   s4     yy
:d+,g
LR
 	
r9   )rQ   )
NNNNNNNheaderN<   )r0   r1   r2   r3   r   SESSION_REQUEST_PARAMSr   client_auth_classr   token_auth_classr   oauth_error_classrP   r   r   r   ra   rY   r   r   r   r8   __classcell__r^   s   @r,   r   r   ?   s    0(!" #'(, $
N +06HG */6H .( /8 4 #5t
 
r9   r   c                      ^  \ rS rSr\r\r\r	\
r         SS jr\S 5       rS\4U 4S jjrS\4U 4S jjrSrU =r$ )	r      c
                    U R                  U
5      nUR                  SS 5      nUb  [        R                  " US9US'   [        R                  R
                  " U 40 UD6  [        R
                  " U 4U UUUUUUUUU	S.
U
D6  g )Napp)r   	transport)
rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rM   poprN   WSGITransportClientrP   rR   )r*   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rS   rT   	app_values                r,   rP   OAuth2Client.__init__   s     <<VD!%%eT2	 ).)<)<)KM+&d4m4	
''A,K%+%	
 	
r9   c                     [        X5      e)Nr   )
error_typeerror_descriptions     r,   handle_errorOAuth2Client.handle_error   s    77r9   Fc                    > U(       dZ  U[         L aQ  U R                  (       d
  [        5       eU R                  U R                  5      (       d
  [	        5       eU R
                  n[        TU ]  " X4SU0UD6$ rW   )r   rI   r   rY   r   rZ   r[   r   r\   s         r,   r   OAuth2Client.request  s`     $*<"<::'))++DJJ77'))??Dwv@@@@r9   c                    > U(       dZ  U[         L aQ  U R                  (       d
  [        5       eU R                  U R                  5      (       d
  [	        5       eU R
                  n[        TU ]  " X4SU0UD6$ rW   )r   rI   r   rY   r   rZ   r[   ra   r\   s         r,   ra   OAuth2Client.stream  s`     $*<"<::'))++DJJ77'))??Dw~f????r9   r/   )	NNNNNNNr   N)r0   r1   r2   r3   r   r   r   r   r   r   r   r   rP   staticmethodr   r   r   ra   r8   r   r   s   @r,   r   r      st    0(!" #'(, #
J 8 8 +06HA +06H@ @r9   r   ) r6   
contextlibr   rN   anyior   r   r   r   r   authlib.common.urlsr	   authlib.oauth2.authr
   r   authlib.oauth2.clientr   rR   base_clientr   r   r   r   utilsr   r   __all__r   r   rO   r   r   r/   r9   r,   <module>r      s     *   $    * * ) ? + + $ 3 &  Py P&

tZ 

Q
u'8'8 Q
hJ@=%,, J@r9   