§
    {›jè'  ã                   ó(  — d dl Z d dlZd dlZd dlmZ d dlmZmZ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mZ d dlmZ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  d	dl!m"Z" ddiZ#dZ$dZ% G d„ de¦  «        Z& G d„ d¦  «        Z' e'¦   «         Z(dS )é    N)ÚCallable)ÚIOÚAnyÚLiteral)Úurljoin)Úmodel_validator)ÚBaseSettingsÚSettingsConfigDict)Ú	HTTPErrorÚResponseÚSession)ÚHTTPAdapterÚRetryé   )Ússo)ÚOAuth1TokenÚOAuth2Token)ÚGarthExceptionÚGarthHTTPError)Ú	Telemetry)Úasdictz
User-AgentzGCM-iOS-5.22.1.4zoauth1_token.jsonzoauth2_token.jsonc                   óz   — e Zd ZU  ed¬¦  «        ZdZedz  ed<   dZedz  ed<    e	d¬¦  «        d„ ¦   «         Z
dS )	ÚGarthSettingsÚGARTH_)Ú
env_prefixNÚhomeÚtokenÚafter)Úmodec                 óB   — | j         r| j        rt          d¬¦  «        ‚| S )Nz-GARTH_HOME and GARTH_TOKEN cannot both be set)Úmsg)r   r   r   ©Úselfs    úG/home/lighthouse/health/venv/lib/python3.11/site-packages/garth/http.pyÚcheck_mutual_exclusivityz&GarthSettings.check_mutual_exclusivity   s6   € àŒ9ð 	˜œð 	Ý ØCðñ ô ð ð ˆó    )Ú__name__Ú
__module__Ú__qualname__r
   Úmodel_configr   ÚstrÚ__annotations__r   r   r%   © r&   r$   r   r      sx   € € € € € € Ø%Ð%°Ð:Ñ:Ô:€Là€Dˆ#�‰*ÐÐÑØ€Eˆ3�‰:ÐÐÑà€_˜'Ð"Ñ"Ô"ðð ñ #Ô"ðð ð r&   r   c            !       ó®  — e Zd ZU eed<   eed<   dZeed<   dZe	e
d         z  dz  ed<   dZeeeef         z  dz  ed<   d	Zeed
<   dZeed<   dZeedf         ed<   dZeed<   d	Zeed<   d	Zeed<   dZeeef         dz  ed<   dZedz  ed<   eed<   dAdedz  fd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dBde	dz  dedz  dedz  deeef         dz  dedz  d
edz  dedz  deedf         dz  dedz  dedz  dedz  dedz  dedz  dedz  deegdf         dz  fd„Zd „ Ze d!„ ¦   «         Z!e d"„ ¦   «         Z"e d#„ ¦   «         Z#d$d$i fd%ed&eez  d'ed(ed)ed*ed+efd,„Z$d+efd-„Z%d+efd.„Z&d+efd/„Z'd+efd0„Z(d1„ Z)d2„ Z*d3„ Z+	 dCd*ed+eeef         e,eeef                  z  dz  fd5„Z-d*ed+e.fd6„Z/	 dDd*ed8e0e.         d+eeef         fd9„Z1dEd:ed;efd<„Z2d+efd=„Z3d;efd>„Z4d?efd@„Z5dS )FÚClientÚsessÚ	last_respz
garmin.comÚdomainNÚ	needs_mfaÚoauth1_tokenÚoauth2_tokené
   Útimeouté   Úretries)i˜  iô  iö  i÷  iø  .Ústatus_forcelistg      à?Úbackoff_factorÚpool_connectionsÚpool_maxsizeÚ_user_profileÚ_garth_homeÚ	telemetryÚsessionc                 óf  — |r|nt          ¦   «         | _        | j        j                             t          ¦  «         t          ¦   «         | _         | j        d| j        | j	        | j
        | j        dœ|¤Ž | j        j        rt          d| j        j        › �¦  «         |                      ¦   «          d S )N)r7   r9   r:   r;   zGarth session: r-   )r   r0   ÚheadersÚupdateÚ
USER_AGENTr   r@   Ú	configurer7   r9   r:   r;   ÚenabledÚprintÚ
session_idÚ_auto_resume)r#   rA   Úkwargss      r$   Ú__init__zClient.__init__8   s¾   € Ø&Ð5�G�G­G©I¬IˆŒ	ØŒ	Ô× Ò ¥Ñ,Ô,Ð,Ý"™œˆŒØˆŒð 	
Ø”LØ”LØ!Ô2ØÔ.ð		
ð 	
ð
 ð	
ð 	
ð 	
ð Œ>Ô!ð 	AÝÐ? D¤NÔ$=Ð?Ð?Ñ@Ô@Ð@Ø×ÒÑÔÐÐÐr&   ÚproxiesÚ
ssl_verifyÚtelemetry_enabledÚtelemetry_send_to_logfireÚtelemetry_tokenÚtelemetry_callbackc                ó0  — |�|| _         |�|| _        |r|| _        |�| j        j                             |¦  «         |�|| j        _        |�|| _        |�|| _        |�|| _	        |	�|	| _
        |
�|
| _        |�|| _        t          | j        | j	        | j
        ¬¦  «        }t          || j        | j        ¬¦  «        }| j                             d|¦  «         | j                             ||||¬¦  «         | j                             | j        ¦  «         d S )N)Útotalr:   r;   )Úmax_retriesr<   r=   úhttps://)rG   Úsend_to_logfirer   Úcallback)r4   r5   r2   r0   rM   rD   Úverifyr7   r9   r:   r;   r<   r=   r   r   Úmountr@   rF   Úattach)r#   r4   r5   r2   rM   rN   r7   r9   r:   r;   r<   r=   rO   rP   rQ   rR   ÚretryÚadapters                     r$   rF   zClient.configureG   s]  € ð& Ð#Ø ,ˆDÔØÐ#Ø ,ˆDÔØð 	!Ø ˆDŒKØÐØŒIÔ×$Ò$ WÑ-Ô-Ð-ØÐ!Ø)ˆDŒIÔØÐØ"ˆDŒLØÐØ"ˆDŒLØÐ'Ø$4ˆDÔ!ØÐ%Ø"0ˆDÔØÐ'Ø$4ˆDÔ!ØÐ#Ø ,ˆDÔåØ”,Ø!Ô2ØÔ.ð
ñ 
ô 
ˆõ
 ØØ!Ô2ØÔ*ð
ñ 
ô 
ˆð
 	Œ	�Š˜
 GÑ,Ô,Ð,àŒ× Ò Ø%Ø5Ø!Ø'ð	 	!ñ 	
ô 	
ð 	
ð 	Œ×Ò˜dœiÑ(Ô(Ð(Ð(Ð(r&   c                 ó–  — t          ¦   «         }|j        r�|j        | _        t          j                             t          j                             |j        ¦  «        t          ¦  «        }t          j                             |¦  «        r|  	                    |j        ¦  «         dS dS |j
        r|                      |j
        ¦  «         dS dS )z<Auto-resume session from GARTH_HOME or GARTH_TOKEN env vars.N)r   r   r?   ÚosÚpathÚjoinÚ
expanduserÚOAUTH1_TOKEN_FILEÚexistsÚloadr   Úloads)r#   ÚsettingsÚ
token_paths      r$   rJ   zClient._auto_resume…   s¶   € å ‘?”?ˆØŒ=ð 	'Ø'œ}ˆDÔÝœŸšÝ”×"Ò" 8¤=Ñ1Ô1Õ3Dñô ˆJõ Œw�~Š~˜jÑ)Ô)ð )Ø—	’	˜(œ-Ñ(Ô(Ð(Ð(Ð(ð)ð )àŒ^ð 	'Ø�JŠJ�x”~Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r&   c                 ó”   — | j         s;|                      d¦  «        }t          |t          ¦  «        s
J d¦   «         ‚|| _         | j         S )Nz"/userprofile-service/socialProfilezNo profile from connectapi)r>   Ú
connectapiÚ
isinstanceÚdict)r#   Úresults     r$   Úuser_profilezClient.user_profile’   sO   € àÔ!ð 	(Ø—_’_Ð%IÑJÔJˆFÝ˜f¥dÑ+Ô+ÐIÐIÐ-IÑIÔIÐIØ!'ˆDÔØÔ!Ð!r&   c                 ó   — | j         S ©N©rn   r"   s    r$   ÚprofilezClient.profileš   s   € àÔ Ð r&   c                 ó   — | j         d         S )NÚuserNamerq   r"   s    r$   ÚusernamezClient.usernamež   s   € àÔ  Ô,Ð,r&   FÚapiÚreferrerrC   ÚmethodÚ	subdomainr`   Úreturnc                ó  — d|› d| j         › �}t          ||¦  «        }|du r| j        r| j        j        |d<   |rb| j        s
J d¦   «         ‚t          | j        t          ¦  «        r| j        j        r|  	                    ¦   «          t          | j        ¦  «        |d<    | j        j        ||f|| j        dœ|¤Ž| _        	 | j                             ¦   «          n## t          $ r}	t!          d|	¬	¦  «        ‚d }	~	ww xY w| j        S )
NrV   ú.TÚrefererz)OAuth1 token is required for API requestsÚAuthorization)rC   r7   zError in request)r!   Úerror)r2   r   r1   Úurlr4   rk   r5   r   ÚexpiredÚrefresh_oauth2r+   r0   Úrequestr7   Úraise_for_statusr   r   )
r#   rx   ry   r`   rv   rw   rC   rK   r€   Úes
             r$   rƒ   zClient.request¢   sa  € ð 3˜Ð2Ð2 T¤[Ð2Ð2ˆÝ�c˜4Ñ Ô ˆØ�tÐÐ ¤ÐØ!%¤Ô!3ˆG�IÑØð 		>ØÔ$ð ð Ø;ñô ð õ ˜tÔ0µ+Ñ>Ô>ð&àÔ$Ô,ð&ð ×#Ò#Ñ%Ô%Ð%Ý'*¨4Ô+<Ñ'=Ô'=ˆG�OÑ$Ø*˜œÔ*ØØð
ð Ø”Lð	
ð 
ð
 ð
ð 
ˆŒð	ØŒN×+Ò+Ñ-Ô-Ð-Ð-øÝð 	ð 	ð 	Ý Ø&Øðñ ô ð øøøøð	øøøð
 Œ~Ðs   Â>C Ã
C8Ã"C3Ã3C8c                 ó$   —  | j         dg|¢R i |¤ŽS )NÚGET©rƒ   ©r#   ÚargsrK   s      r$   Úgetz
Client.getË   ó$   € ØˆtŒ|˜EÐ3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3r&   c                 ó$   —  | j         dg|¢R i |¤ŽS )NÚPOSTrˆ   r‰   s      r$   ÚpostzClient.postÎ   s$   € ØˆtŒ|˜FÐ4 TÐ4Ð4Ð4¨VÐ4Ð4Ð4r&   c                 ó$   —  | j         dg|¢R i |¤ŽS )NÚDELETErˆ   r‰   s      r$   ÚdeletezClient.deleteÑ   s$   € ØˆtŒ|˜HÐ6 tÐ6Ð6Ð6¨vÐ6Ð6Ð6r&   c                 ó$   —  | j         dg|¢R i |¤ŽS )NÚPUTrˆ   r‰   s      r$   Úputz
Client.putÔ   rŒ   r&   c                 ó¤   — t          j        |i |¤d| i¤Ž\  | _        | _        | j        r|                      | j        ¦  «         | j        | j        fS )NÚclient)r   Úloginr4   r5   r?   Údumpr‰   s      r$   r˜   zClient.login×   sn   € Ý/2¬yØð0
Øð0
ð 0
Ø$(ð0
ð 0
ð 0
Ñ,ˆÔ˜4Ô,ð Ôð 	(Ø�IŠI�dÔ&Ñ'Ô'Ð'ØÔ  $Ô"3Ð3Ð3r&   c                 óœ   — t          j        |i |¤Ž\  | _        | _        | j        r|                      | j        ¦  «         | j        | j        fS rp   )r   Úresume_loginr4   r5   r?   r™   r‰   s      r$   r›   zClient.resume_loginß   s]   € Ý/2Ô/?Øð0
Øð0
ð 0
Ñ,ˆÔ˜4Ô,ð Ôð 	(Ø�IŠI�dÔ&Ñ'Ô'Ð'ØÔ  $Ô"3Ð3Ð3r&   c                 ó  — | j         rt          | j         t          ¦  «        s
J d¦   «         ‚	 t          j        | j         | ¦  «        | _        n# t          $ r	 d | _         ‚ w xY w| j        r|                      | j        d¬¦  «         d S d S )Nz+OAuth1 token is required for OAuth2 refreshT)Úoauth2_only)	r4   rk   r   r   Úexchanger5   r   r?   r™   r"   s    r$   r‚   zClient.refresh_oauth2ç   s¸   € ØÔ ð 	9¥ZØÔ�{ñ&
ô &
ð 	9ð 	9à8ñ	9ô 	9ð 	9ð	Ý #¤¨TÔ->ÀÑ EÔ EˆDÔÐøÝð 	ð 	ð 	Ø $ˆDÔØð	øøøð Ôð 	:Ø�IŠI�dÔ&°DˆIÑ9Ô9Ð9Ð9Ð9ð	:ð 	:s   ­A ÁA r‡   c                 óh   —  | j         |d|fddi|¤Ž}|j        dk    rd S |                     ¦   «         S )Nrj   rv   TéÌ   )rƒ   Ústatus_codeÚjson)r#   r`   rx   rK   Úresps        r$   rj   zClient.connectapió   sG   € ð ˆtŒ|˜F L°$ÐKÐK¸DÐKÀFÐKÐKˆØÔ˜sÒ"Ð"Ø�4Ø�yŠy‰{Œ{Ðr&   c                 ó2   —  | j         d|fddi|¤Ž}|j        S )Nrj   rv   T)r‹   Úcontent)r#   r`   rK   r£   s       r$   ÚdownloadzClient.downloadû   s*   € ØˆtŒx˜ dÐ?Ð?°Ð?¸Ð?Ð?ˆØŒ|Ðr&   ú/upload-service/uploadÚfpc                óÐ   — t           j                             |j        ¦  «        }d||fi}|                      |d|¬¦  «        }|€
J d¦   «         ‚t          |t          ¦  «        sJ ‚|S )NÚfilerŽ   )rx   ÚfileszNo result from upload)r_   r`   ÚbasenameÚnamerj   rk   rl   )r#   r¨   r`   Úfnamer«   rm   s         r$   ÚuploadzClient.uploadÿ   s|   € õ ”× Ò  ¤Ñ)Ô)ˆØ˜% ˜Ð%ˆØ—’ØØØð !ñ 
ô 
ˆð
 Ð!Ð!Ð#:Ñ!Ô!Ð!Ý˜&¥$Ñ'Ô'Ð'Ð'Ð'Øˆr&   r�   Údir_pathc                ób  — t           j                             |¦  «        }t          j        |d¬¦  «         |s{t	          t           j                             |t          ¦  «        d¦  «        5 }| j        r)t          j	        t          | j        ¦  «        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t           j                             |t          ¦  «        d¦  «        5 }| j        r)t          j	        t          | j        ¦  «        |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NT)Úexist_okÚwé   )Úindent)r_   r`   rb   ÚmakedirsÚopenra   rc   r4   r¢   r™   r   ÚOAUTH2_TOKEN_FILEr5   )r#   r°   r�   Úfs       r$   r™   zClient.dump  s«  € Ý”7×%Ò% hÑ/Ô/ˆÝ
Œ�H tÐ,Ñ,Ô,Ð,Øð 	FÝ•b”g—l’l 8Õ->Ñ?Ô?ÀÑEÔEð FÈØÔ$ð FÝ”I�f TÔ%6Ñ7Ô7¸À1ÐEÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fõ •"”'—,’,˜xÕ):Ñ;Ô;¸SÑAÔAð 	BÀQØÔ ð BÝ”	�& Ô!2Ñ3Ô3°Q¸qÐAÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bs$   Á+1B(Â(B,Â/B,Ã&1D$Ä$D(Ä+D(c                 ó:  — g }|                      t          | j        ¦  «        ¦  «         |                      t          | j        ¦  «        ¦  «         t	          j        |¦  «        }t          j        |                     ¦   «         ¦  «         	                    ¦   «         S rp   )
Úappendr   r4   r5   r¢   ÚdumpsÚbase64Ú	b64encodeÚencodeÚdecode)r#   ÚrÚss      r$   r¼   zClient.dumps  ss   € ØˆØ	�Š•˜Ô)Ñ*Ô*Ñ+Ô+Ð+Ø	�Š•˜Ô)Ñ*Ô*Ñ+Ô+Ð+ÝŒJ�q‰MŒMˆÝÔ §¢¡
¤
Ñ+Ô+×2Ò2Ñ4Ô4Ð4r&   c                 ó  — t           j                             |¦  «        }t          t           j                             |t
          ¦  «        ¦  «        5 }t          di t          j        |¦  «        ¤Ž}d d d ¦  «         n# 1 swxY w Y   t          t           j                             |t          ¦  «        ¦  «        5 }t          di t          j        |¦  «        ¤Ž}d d d ¦  «         n# 1 swxY w Y   |                      |||j        ¬¦  «         d S )N©r4   r5   r2   r-   )r_   r`   rb   r·   ra   rc   r   r¢   re   r¸   r   rF   r2   )r#   r°   r¹   Úoauth1Úoauth2s        r$   re   zClient.load  s]  € Ý”7×%Ò% hÑ/Ô/ˆÝ•"”'—,’,˜xÕ):Ñ;Ô;Ñ<Ô<ð 	1ÀÝ Ð0Ð0¥4¤9¨Q¡<¤<Ð0Ð0ˆFð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1å•"”'—,’,˜xÕ):Ñ;Ô;Ñ<Ô<ð 	1ÀÝ Ð0Ð0¥4¤9¨Q¡<¤<Ð0Ð0ˆFð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à�ŠØ¨f¸V¼]ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
s$   ÁA=Á=BÂBÂ:C%Ã%C)Ã,C)rÂ   c                 óÖ   — t          j        t          j        |¦  «        ¦  «        \  }}|                      t          di |¤Žt          di |¤Ž|                     d¦  «        ¬¦  «         d S )Nr2   rÄ   r-   )r¢   rf   r½   Ú	b64decoderF   r   r   r‹   )r#   rÂ   rÅ   rÆ   s       r$   rf   zClient.loads)  sv   € Ýœ¥FÔ$4°QÑ$7Ô$7Ñ8Ô8‰ˆ�Ø�ŠÝ$Ð.Ð. vÐ.Ð.Ý$Ð.Ð. vÐ.Ð.Ø—:’:˜hÑ'Ô'ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r&   rp   )NNNNNNNNNNNNNNN)r‡   )r§   )F)6r'   r(   r)   r   r,   r   r2   r+   r4   r   r   r5   r   rl   r   r7   Úintr9   r:   Útupler;   Úfloatr<   r=   r>   r?   r   rL   Úboolr   rF   rJ   Úpropertyrn   rr   ru   rƒ   r‹   r�   r’   r•   r˜   r›   r‚   Úlistrj   Úbytesr¦   r   r¯   r™   r¼   re   rf   r-   r&   r$   r/   r/   (   s  € € € € € € Ø
€M€M�MØÐÐÑØ€FˆCÐÐÑØ>B€L�+ ¨Ô 4Ñ4°tÑ;ÐBÐBÑBØ8<€L�+  S¨# X¤Ñ.°Ñ5Ð<Ð<Ñ<Ø€GˆSÐÐÑØ€GˆSÐÐÑØ(AÐ�e˜C ˜H”oÐAÐAÑAØ€N�EÐÐÑØÐ�cÐÐÑØ€L�#ÐÐÑØ+/€M�4˜˜S˜”> DÑ(Ð/Ð/Ñ/Ø"€K��t‘Ð"Ð"Ñ"ØÐÐÑðð  ¨$¡ð ð ð ð ð$ ,0Ø+/Ø!Ø)-Ø"&Ø"Ø"Ø37Ø'+Ø'+Ø#'Ø)-Ø15Ø&*Ø<@ð#<)ð <)ð " DÑ(ð<)ð " DÑ(ð	<)ð
 �d‘
ð<)ð �c˜3�h” $Ñ&ð<)ð ˜4‘Kð<)ð �t‘ð<)ð �t‘ð<)ð    S œ/¨DÑ0ð<)ð  ™ð<)ð  ™*ð<)ð ˜D‘jð<)ð   $™;ð<)ð $(¨$¡;ð<)ð  ˜t™ð!<)ð" % d V¨T \Ô2°TÑ9ð#<)ð <)ð <)ð <)ð|'ð 'ð 'ð ð"ð "ñ „Xð"ð ð!ð !ñ „Xð!ð ð-ð -ñ „Xð-ð Ø$Øð'ð 'ð ð'ð ˜‘*ð'ð ð'àð'ð ð'ð ð	'ð 
ð'ð 'ð 'ð 'ðR4 hð 4ð 4ð 4ð 4ð5 xð 5ð 5ð 5ð 5ð7¨ð 7ð 7ð 7ð 7ð4 hð 4ð 4ð 4ð 4ð4ð 4ð 4ð4ð 4ð 4ð
:ð 
:ð 
:ð !&ðð Øðà	ˆc�3ˆhŒ˜$˜t C¨ Hœ~Ô.Ñ	.°Ñ	5ðð ð ð ð˜Sð ¨uð ð ð ð ð
 -Eðð Ø&)ðØ�U”)ðà	ˆc�3ˆhŒðð ð ð ð	Bð 	B°$ð 	B˜Sð 	Bð 	Bð 	Bð 	Bð5�sð 5ð 5ð 5ð 5ð
˜Sð 
ð 
ð 
ð 
ð
�sð 
ð 
ð 
ð 
ð 
ð 
r&   r/   ))r½   r¢   r_   Úcollections.abcr   Útypingr   r   r   Úurllib.parser   Úpydanticr   Úpydantic_settingsr	   r
   Úrequestsr   r   r   Úrequests.adaptersr   r   Ú r   Úauth_tokensr   r   Úexcr   r   r@   r   Úutilsr   rE   rc   r¸   r   r/   r—   r-   r&   r$   ú<module>rÛ      s­  ðØ €€€Ø €€€Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø  Ð  Ð  Ð  Ð  Ð  à $Ð $Ð $Ð $Ð $Ð $Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ð Ð.Ð/€
Ø'Ð Ø'Ð ðð ð ð ð �Lñ ô ð ðG
ð G
ð G
ð G
ð G
ñ G
ô G
ð G
ðT 
ˆ‰Œ€€€r&   