Ë
    ”Âiÿ#  ã                   ód  — d dl Z d dlmZ d dl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 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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¢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y)é    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                   óD   — e Zd ZdZdZdedej                  eedf   fd„Z	y)r   zFSign requests for OAuth 2.0, currently only bearer token is supported.TÚrequestÚreturnNc              #   ó2  K  — 	 | j                  t        |j                  «      |j                  |j                  «      \  }}}t        t        |«      «      |d<   t        ||||¬«      –— y # t        $ r }dt        |«      › �}t        |¬«      |‚d }~ww xY w­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          úg/var/www/timesheet/venv/lib/python3.12/site-packages/authlib/integrations/httpx_client/oauth2_client.pyÚ	auth_flowzOAuth2Auth.auth_flow$   s”   è ø€ ð
	PØ!%§¡Ü�G—K‘KÓ  '§/¡/°7·?±?ó"ÑˆC�˜$ô ),¬C°«I«ˆGÐ$Ñ%ÜØ ¨tÀWôó øô ò 	PØ4´S¸³Z°LÐAˆKÜ+¸ÔDÈ%ÐOûð	Püs)   ‚B„A&A+ Á*BÁ+	BÁ4BÂBÂB)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úrequires_request_bodyr   ÚtypingÚ	Generatorr   r,   © ó    r+   r   r      s4   „ ÙPà ÐðP ð P¨V×-=Ñ-=¸gÀxÐQUÐ>UÑ-Vô Pr5   r   c                   ó@   — e Zd ZdZdedej                  eedf   fd„Zy)r   Tr   r   Nc              #   óî   K  — | j                  |j                  t        |j                  «      |j                  |j
                  «      \  }}}t        t        |«      «      |d<   t        ||||¬«      –— y ­w)Nr   r   )r$   Úmethodr%   r   r    r&   r'   r   )r)   r   r   r    r!   s        r+   r,   zOAuth2ClientAuth.auth_flow5   sd   è ø€ Ø!Ÿ\™\Ø�N‰NœC §¡Ó,¨g¯o©o¸w¿¹ó
ÑˆˆW�dô %(¬¨D«	£NˆÐ Ñ!ÜØ˜W¨4Àô
ó 	
ùs   ‚A3A5)	r-   r.   r/   r1   r   r2   r3   r   r,   r4   r5   r+   r   r   2   s.   „ Ø Ðð
 ð 
¨V×-=Ñ-=¸gÀxÐQUÐ>UÑ-Vô 
r5   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   Nc                 óÈ   — | j                  |«      }t        j                  j                  | fi |¤Ž t	        «       | _        t        j                  | fd |||||||||	|
dœ|¤Ž y )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)   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   ÚkwargsÚclient_kwargss                r+   rI   zAsyncOAuth2Client.__init__F   sz   € ð ×<Ñ<¸VÓDˆÜ×Ñ×"Ñ" 4Ñ9¨=Ò9ô $(£6ˆÔ ä×ÑØð	
àØØ'Ø'AØ,KØØ%ØØ+Ø%Øñ	
ð ó	
r5   Fc              ‹   óè   •K  — |sM|t         u rE| j                  s
t        «       ‚| j                  | j                  «      ƒ d {  –—†  | j                  }t        ‰| �  ||fd|i|¤Žƒ d {  –—† S 7 Œ+7 Œ­w©NÚauth)r   rB   r   Úensure_active_tokenÚ
token_authÚsuperr   ©r)   r8   r   Úwithhold_tokenrP   rL   Ú	__class__s         €r+   r   zAsyncOAuth2Client.requestl   so   øè ø€ ñ  $Ô*<Ñ"<Ø—:’:Ü'Ó)Ð)à×*Ñ*¨4¯:©:Ó6×6Ð6à—?‘?ˆDä‘W‘_ V¨SÑF°tÐF¸vÑF×FÐFð	 7øð Gús#   ƒ?A2ÁA.Á&A2Á)A0Á*A2Á0A2c                óD  •K  — |sM|t         u rE| j                  s
t        «       ‚| j                  | j                  «      ƒ d {  –—†  | j                  }t        ‰| �  ||fd|i|¤Ž4 ƒd {  –—† }|­–— d d d «      ƒd {  –—†  y 7 ŒB7 Œ7 Œ	# 1 ƒd {  –—†7  sw Y   y xY w­wrO   )r   rB   r   rQ   rR   rS   Ústream)r)   r8   r   rU   rP   rL   ÚresprV   s          €r+   rX   zAsyncOAuth2Client.streamy   sž   øè ø€ ñ  $Ô*<Ñ"<Ø—:’:Ü'Ó)Ð)à×*Ñ*¨4¯:©:Ó6×6Ð6à—?‘?ˆDä‘7‘> &¨#ÑC°DÐC¸FÑC÷ 	ð 	ÀtØ‹J÷	÷ 	ð 	ð	 7øð	øð 	ø÷ 	÷ 	ñ 	üsY   ƒ?B ÁBÁ'B Á*BÁ+B Á.BÁ4B Á?B	Â B ÂB Â	B ÂBÂBÂBÂB c              ƒ   óX  K  — | j                   4 ƒd {  –—†  | j                  j                  | j                  ¬«      r¼|j	                  d«      }| j
                  j	                  d«      }|r|r| j                  ||¬«      ƒ d {  –—†  np| j
                  j	                  d«      dk(  rH|d   }| j                  |d¬«      ƒ d {  –—† }| j                  r&| j                  ||¬	«      ƒ d {  –—†  n
t        «       ‚d d d «      ƒd {  –—†  y 7 Œ÷7 Œˆ7 ŒK7 Œ&7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)
N)rE   Úrefresh_tokenÚtoken_endpoint©r[   Ú
grant_typeÚclient_credentialsÚaccess_token)r^   )r`   )
rJ   rB   Ú
is_expiredrE   ÚgetÚmetadatar[   Úfetch_tokenrD   r   )r)   rB   r[   r   r`   Ú	new_tokens         r+   rQ   z%AsyncOAuth2Client.ensure_active_tokenˆ   s  è ø€ Ø×+Ñ+÷ 	.ñ 	.Ø�z‰z×$Ñ$¨D¯K©KÐ$Ô8Ø %§	¡	¨/Ó :�Ø—m‘m×'Ñ'Ð(8Ó9�Ù ¡SØ×,Ñ,¨SÀÐ,ÓN×NÑNØ—]‘]×&Ñ& |Ó4Ð8LÒLØ#(¨Ñ#8�LØ&*×&6Ñ&6ØÐ(<ð '7ó '÷ !�Ið ×(Ò(Ø"×/Ñ/°	ÈÐ/ÓU×UÑUä+Ó-Ð-÷	.÷ 	.ñ 	.øð
 Oøð!øð Vøð	.ø÷ 	.÷ 	.ñ 	.üs{   ‚D*“D”D*—A-DÂDÂ>DÃDÃ&DÃ*DÃ+DÃ:D*ÄDÄD*ÄDÄDÄDÄD*ÄD'ÄDÄD'Ä#D*Ú ÚPOSTc              ‹   óˆ  K  — |j                  «       dk(  r2 | j                  |ft        t        |«      «      ||dœ|¤Žƒ d {  –—† }nId|v rdj	                  ||g«      }ndj	                  ||g«      } | j
                  |f||dœ|¤Žƒ d {  –—† }| j                  d   D ]
  } ||«      }Œ | j                  |«      S 7 Œ{7 Œ3­w)Nrg   ©Údatar    rP   ú?ú&)r    rP   Úaccess_token_response)ÚupperÚpostÚdictr	   Újoinrb   Úcompliance_hookÚparse_response_token)	r)   r   r!   r    rP   r8   rL   rY   Úhooks	            r+   Ú_fetch_tokenzAsyncOAuth2Client._fetch_token™   sÛ   è ø€ ð �<‰<‹>˜VÒ#Ø"˜Ÿ™ØðÜœz¨$Ó/Ó0¸'ÈñØPVñ÷ ‰Dð �c‰zØ—h‘h  T˜{Ó+‘à—h‘h  T˜{Ó+�Ø!˜Ÿ™ #ÐL¨w¸TÑLÀVÑL×LˆDà×(Ñ(Ð)@ÑAò 	ˆDÙ˜“:‰Dð	ð ×(Ñ(¨Ó.Ð.ðøð Mús%   ‚A CÁB>ÁA	CÂC Â2CÃ Cc              ‹   ón  K  —  | j                   |ft        t        |«      «      ||dœ|¤Žƒ d {  –—† }| j                  d   D ]
  } ||«      }Œ | j	                  |«      }	d|	vr|| j
                  d<   | j                  r%| j                  | j
                  |¬«      ƒ d {  –—†  | j
                  S 7 Œ�7 Œ­w)Nri   Úrefresh_token_responser[   r]   )ro   rp   r	   rr   rs   rB   rD   )
r)   r   r[   r!   r    rP   rL   rY   rt   rB   s
             r+   Ú_refresh_tokenz AsyncOAuth2Client._refresh_token²   sÈ   è ø€ ð �T—Y‘YØð
Üœ: dÓ+Ó,°gÀDñ
ØLRñ
÷ 
ˆð ×(Ñ(Ð)AÑBò 	ˆDÙ˜“:‰Dð	ð ×)Ñ)¨$Ó/ˆØ %Ñ'Ø*7ˆD�J‰J�Ñ'à×ÒØ×#Ñ# D§J¡J¸mÐ#ÓL×LÐLà�z‰zÐð
øð Mús"   ‚-B5¯B1°A0B5Â B3Â!B5Â3B5c                 óT   —  | j                   |ft        t        |«      «      ||dœ|¤ŽS )Nri   )ro   rp   r	   )r)   r   r!   rP   r    rL   s         r+   Ú
_http_postzAsyncOAuth2Client._http_postË   s8   € ð ˆt�y‰yØð
Üœ: dÓ+Ó,°gÀDñ
ØLRñ
ð 	
r5   )
NNNNNNNÚheaderNé<   )r-   r.   r/   r   ÚSESSION_REQUEST_PARAMSr   Úclient_auth_classr   Útoken_auth_classr   Úoauth_error_classrI   r   r   r   rX   rQ   ru   rx   rz   Ú__classcell__©rV   s   @r+   r   r   ?   s£   ø„ Ø0Ðà(ÐØ!ÐØ"Ðð ØØ#'Ø(,ØØØØ ØØó$
ðN +0Ð6HõGð à*/Ð6Hôó ðò.ð( ØØØó/ð8 ØØØóð4 Ð#5¸t÷
r5   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   c
                 ó  — | j                  |
«      }|j                  dd «      }|�t        j                  |¬«      |d<   t        j                  j
                  | fi |¤Ž t        j
                  | f| |||||||||	dœ
|
¤Ž y )NÚapp)r…   Ú	transport)
r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   )rF   ÚpoprG   ÚWSGITransportÚClientrI   rK   )r)   r<   r=   r>   r?   r@   rA   rB   rC   rD   rL   rM   Ú	app_values                r+   rI   zOAuth2Client.__init__Ú   s–   € ð ×<Ñ<¸VÓDˆà!×%Ñ% e¨TÓ2ˆ	ØÐ Ü).×)<Ñ)<ÀÔ)KˆM˜+Ñ&ä�‰×Ñ˜dÑ4 mÒ4ä×ÑØð	
àØØ'Ø'AØ,KØØ%ØØ+Ø%ñ	
ð ó	
r5   c                 ó   — t        | |«      ‚)Nr   )Ú
error_typeÚerror_descriptions     r+   Úhandle_errorzOAuth2Client.handle_errorÿ   s   € ä˜Ð%6Ó7Ð7r5   Fc                 óÌ   •— |sO|t         u rG| j                  s
t        «       ‚| j                  | j                  «      s
t	        «       ‚| j
                  }t        ‰| �  ||fd|i|¤ŽS rO   )r   rB   r   rQ   r   rR   rS   r   rT   s         €r+   r   zOAuth2Client.request  s_   ø€ ñ  $Ô*<Ñ"<Ø—:’:Ü'Ó)Ð)à×+Ñ+¨D¯J©JÔ7Ü'Ó)Ð)à—?‘?ˆDä‰w‰˜v sÑ@°Ð@¸Ñ@Ð@r5   c                 óÌ   •— |sO|t         u rG| j                  s
t        «       ‚| j                  | j                  «      s
t	        «       ‚| j
                  }t        ‰| �  ||fd|i|¤ŽS rO   )r   rB   r   rQ   r   rR   rS   rX   rT   s         €r+   rX   zOAuth2Client.stream  s_   ø€ ñ  $Ô*<Ñ"<Ø—:’:Ü'Ó)Ð)à×+Ñ+¨D¯J©JÔ7Ü'Ó)Ð)à—?‘?ˆDä‰w‰~˜f cÑ?°Ð?¸Ñ?Ð?r5   )	NNNNNNNr{   N)r-   r.   r/   r   r}   r   r~   r   r   r   r€   rI   ÚstaticmethodrŽ   r   r   rX   r�   r‚   s   @r+   r   r   Ó   st   ø„ Ø0Ðà(ÐØ!ÐØ"Ðð ØØ#'Ø(,ØØØØ Øó#
ðJ ñ8ó ð8ð +0Ð6HõAð +0Ð6H÷@ñ @r5   r   ) r2   Ú
contextlibr   rG   Úanyior   r   r   r   r   Úauthlib.common.urlsr	   Úauthlib.oauth2.authr
   r   Úauthlib.oauth2.clientr   rK   Úbase_clientr   r   r   r   Úutilsr   r   Ú__all__r   r   rH   r   r‰   r4   r5   r+   ú<module>rš      s�   ðÛ Ý *ã Ý Ý $Ý Ý Ý å *Ý *Ý )Ý ?å +Ý +Ý $Ý 3Ý &Ý  ò€ôP��yô Pô&

�t˜Zô 

ôQ
˜ u×'8Ñ'8ô Q
ôhJ@�= %§,¡,õ J@r5   