§
    {›j¸  ã                  óL  — U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	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mZ ddlmZ dZdZi aded<   dZdZddiZdZedddddœZ G d„ de¦  «        Z 	 dEdFd!„Z!dd"„ d#fdGd.„Z"dHd2„Z#d#d3œdId7„Z$d*d8œdJd=„Z%dKd?„Z&dLdC„Z'dMdD„Z(dS )Né    )ÚannotationsN)ÚCallable)ÚAnyÚLiteral)Úparse_qs)ÚSession)ÚOAuth1Sessioné   )Úhttp)ÚOAuth1TokenÚOAuth2Token)ÚGarthExceptionÚGCM_ANDROID_DARKz5https://thegarth.s3.amazonaws.com/oauth_consumer.jsonzdict[str, str]ÚOAUTH_CONSUMERÚ
SUCCESSFULÚMFA_REQUIREDú
User-Agentz%com.garmin.android.apps.connectmobilezmMozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zen-US,en;q=0.9ÚnavigateÚdocument)r   ÚAcceptzAccept-LanguagezSec-Fetch-ModezSec-Fetch-Destc                  ó$   ‡ — e Zd Z	 ddˆ fd„Zˆ xZS )ÚGarminOAuth1SessionNÚparentúSession | Nonec               ó  •— t           sAi }|�|j        |d<   |j        |d<   t          j        t
          fi |¤Ž                     ¦   «         a  t          ¦   «         j        t           d         t           d         fi |¤Ž |�…|  	                    d|j
        d         ¦  «         | j                             |j        ¦  «         |j        | _        |j        | _        | j        d                              |j        d         ¦  «         d S d S )NÚproxiesÚverifyÚconsumer_keyÚconsumer_secretzhttps://Úresponse)r   r   r   ÚrequestsÚgetÚOAUTH_CONSUMER_URLÚjsonÚsuperÚ__init__ÚmountÚadaptersÚcookiesÚupdateÚhooksÚextend)Úselfr   ÚkwargsÚrequest_kwargsÚ	__class__s       €úF/home/lighthouse/health/venv/lib/python3.11/site-packages/garth/sso.pyr&   zGarminOAuth1Session.__init__0   s  ø€ õ ð 	Ø-/ˆNØÐ!Ø,2¬N�˜yÑ)Ø+1¬=�˜xÑ(Ý%œ\Ý"ðð Ø&4ðð çŠd‰fŒfð ð 	�‰ŒÔÝ˜>Ô*ÝÐ,Ô-ð	
ð 	
ð ð	
ð 	
ð 	
ð
 ÐØ�JŠJ�z 6¤?°:Ô#>Ñ?Ô?Ð?ØŒL×Ò ¤Ñ/Ô/Ð/Ø!œ>ˆDŒLØ œ-ˆDŒKØŒJ�zÔ"×)Ò)¨&¬,°zÔ*BÑCÔCÐCÐCÐCð Ðó    ©N)r   r   )Ú__name__Ú
__module__Ú__qualname__r&   Ú__classcell__)r0   s   @r1   r   r   /   sR   ø€ € € € € ð "&ðDð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dr2   r   Ú	resp_jsonúdict[str, Any]Úexpected_typeú
str | NoneÚreturnc                óÖ   — |                       di ¦  «        }|                      dd¦  «        }|                      dd¦  «        }|r$||k    r|r|› d|› �n|}t          d|› �¬¦  «        ‚| S )	NÚresponseStatusÚtypeÚUNKNOWNÚmessageÚ z: zSSO error: ©Úmsg)r"   r   )r8   r:   ÚstatusÚ	resp_typerA   Údetails         r1   Ú_parse_sso_responserH   L   s�   € ð �]Š]Ð+¨RÑ0Ô0€FØ—
’
˜6 9Ñ-Ô-€IØ�jŠj˜ BÑ'Ô'€GØð 9˜ mÒ3Ð3Ø.5ÐD�IÐ*Ð* Ð*Ð*Ð*¸9ˆÝÐ!7¨vÐ!7Ð!7Ð8Ñ8Ô8Ð8ØÐr2   c                 ó    — t          d¦  «        S )Nz
MFA code: )Úinput© r2   r1   ú<lambda>rL   ^   s   € ­%°Ñ*=Ô*=€ r2   FÚclientúhttp.Client | NoneÚ
prompt_mfaúCallable | NoneÚreturn_on_mfaÚboolÚemailÚstrÚpasswordúMtuple[OAuth1Token, OAuth2Token] | tuple[Literal['needs_mfa'], dict[str, Any]]c               óÌ  — |pt           j        }d|j        › d�}t          d|dœ}|                     dddt          ii t
          ¥dd	i¥¬
¦  «         |                     dd|t
          | |dddœ¬¦  «         |j                             ¦   «         }|                     di ¦  «                             d¦  «        }|t          k    r|d         }	t          |	|¦  «        S |t          k    r]|                     d¦  «        pi }
|
                     d¦  «        pd}|s|€d|||dœfS t          ||||¬¦  «        }	t          |	|¦  «        S t          |t          ¦  «         t          d¬¦  «        ‚)Núhttps://mobile.integration.ú/gcm/androidzen-US)ÚclientIdÚlocaleÚserviceÚssoz/mobile/sso/en/sign-inrZ   úSec-Fetch-SiteÚnone)ÚparamsÚheadersz/mobile/api/loginFrB   )ÚusernamerU   Ú
rememberMeÚcaptchaToken©r`   ra   r$   r>   r?   ÚserviceTicketIdÚcustomerMfaInfoÚmfaLastMethodUsedrS   Ú	needs_mfa)Úlogin_paramsrM   Ú
mfa_method©rk   zUnexpected SSO responserC   )r   rM   ÚdomainÚ	CLIENT_IDr"   ÚSSO_PAGE_HEADERSÚpostÚ	last_respr$   ÚSSO_SUCCESSFULÚ_complete_loginÚSSO_MFA_REQUIREDÚ
handle_mfarH   r   )rS   rU   rM   rO   rQ   Úservice_urlrj   r8   rF   ÚticketÚmfa_infork   s               r1   Úloginry   Y   sÍ  € ð Ð"•t”{€FØK°´ÐKÐKÐK€KåØØðð €Lð ‡J‚JØØ Ø�IÐ&Ø>Õ#Ð>Ð%5°vÐ>Ð>ð	 ñ ô ð ð ‡K‚KØØØÝ àØ ØØð	
ð 
ð ñ ô ð ð Ô ×%Ò%Ñ'Ô'€IØ—’Ð.°Ñ3Ô3×7Ò7¸Ñ?Ô?€Ià•NÒ"Ð"ØÐ,Ô-ˆÝ˜v vÑ.Ô.Ð.àÕ$Ò$Ð$Ø—=’=Ð!2Ñ3Ô3Ð9°rˆØ—\’\Ð"5Ñ6Ô6ÐA¸'ˆ
Øð 	˜JÐ.ØØ ,Ø Ø(ð!ð !ð ð õ
 Ø�L *¸ð
ñ 
ô 
ˆõ ˜v vÑ.Ô.Ð.å˜	¥>Ñ2Ô2Ð2Ý
Ð6Ð
7Ñ
7Ô
7Ð7r2   rw   úhttp.Clientr   c                ód  — t          |j        ¬¦  «        }d|j        › d�}d|j        › d�}|› d| › d|› d�}|                     |t          |j        ¬	¦  «        }|                     ¦   «          t          |j        ¦  «        }d
„ | 	                    ¦   «         D ¦   «         }t          dd|j        i|¤ŽS )N)r   úhttps://connectapi.ú/oauth-service/oauth/rX   rY   zpreauthorized?ticket=z&login-url=z&accepts-mfa-tokens=true)ra   Útimeoutc                ó&   — i | ]\  }}||d          “ŒS )r   rK   )Ú.0ÚkÚvs      r1   ú
<dictcomp>z$get_oauth1_token.<locals>.<dictcomp>©   s"   € Ð0Ð0Ð0™˜˜AˆQ��!”Ð0Ð0Ð0r2   rm   rK   )r   Úsessrm   r"   ÚOAUTH_USER_AGENTr~   Úraise_for_statusr   ÚtextÚitemsr   )	rw   rM   r„   Úbase_urlÚ	login_urlÚurlÚrespÚparsedÚtokens	            r1   Úget_oauth1_tokenr�   š   så   € Ý f¤kÐ2Ñ2Ô2€DØI V¤]ÐIÐIÐI€HØI¨f¬mÐIÐIÐI€Iàð 	#ð 	#¨&ð 	#ð 	#¸Yð 	#ð 	#ð 	#ð ð �8Š8ØÝ Ø”ð ñ ô €Dð
 	×ÒÑÔÐÝ�d”iÑ Ô €FØ0Ð0 §¢¡¤Ð0Ñ0Ô0€EÝÐ5Ð5˜fœmÐ5¨uÐ5Ð5Ð5r2   ©ry   Úoauth1ry   r   c               óp  — t          | j        | j        |j        ¬¦  «        }i }|rd|d<   | j        r
| j        |d<   d|j        › d�}|› d�}i t          ¥dd	i¥}|                     ||||j        ¬
¦  «        }| 	                    ¦   «          | 
                    ¦   «         }	t          di t          |	¦  «        ¤ŽS )N)Úresource_owner_keyÚresource_owner_secretr   Ú GARMIN_CONNECT_MOBILE_ANDROID_DIÚaudienceÚ	mfa_tokenr|   r}   zexchange/user/2.0zContent-Typez!application/x-www-form-urlencoded)ra   Údatar~   rK   )r   Úoauth_tokenÚoauth_token_secretr„   r—   rm   r…   rp   r~   r†   r$   r   Úset_expirations)
r‘   rM   ry   r„   r˜   r‰   r‹   ra   rŒ   rŽ   s
             r1   Úexchangerœ   ­   sü   € õ Ø!Ô-Ø$Ô7ØŒ{ðñ ô €Dð
 €DØð >Ø=ˆˆZÑØÔð -Ø"Ô,ˆˆ[ÑØI V¤]ÐIÐIÐI€HØÐ
(Ð
(Ð
(€CðÝ
ðàÐ>Ð
?ð€Gð �9Š9ØØØØ”ð	 ñ ô €Dð 	×ÒÑÔÐØ�IŠI‰KŒK€EÝÐ0Ð0�¨Ñ/Ô/Ð0Ð0Ð0r2   rl   rj   Údictr   rk   c               ó*  — t          j        |¦  «        rt          j         |¦   «         ¦  «        }n
 |¦   «         }|                      dd|t
          ||dg ddœ¬¦  «         t          | j                             ¦   «         t          ¦  «        }|d         S )Nr]   z/mobile/api/mfa/verifyCodeF)Ú	mfaMethodÚmfaVerificationCodeÚrememberMyBrowserÚreconsentListÚmfaSetupre   rf   )
ÚinspectÚiscoroutinefunctionÚasyncioÚrunrp   ro   rH   rq   r$   rr   )rM   rj   rO   rk   Úmfa_coder8   s         r1   ru   ru   Î   s¥   € õ Ô" :Ñ.Ô.ð  Ý”;˜z˜z™|œ|Ñ,Ô,ˆˆà�:‘<”<ˆØ
‡K‚KØØ$ØÝ à#Ø#+Ø!&ØØð
ð 
ð ñ ô ð õ $ FÔ$4×$9Ò$9Ñ$;Ô$;½^ÑLÔL€IØÐ&Ô'Ð'r2   rŽ   c                ó¶   — t          t          j        ¦   «         | d         z   ¦  «        | d<   t          t          j        ¦   «         | d         z   ¦  «        | d<   | S )NÚ
expires_inÚ
expires_atÚrefresh_token_expires_inÚrefresh_token_expires_at)ÚintÚtime)rŽ   s    r1   r›   r›   ê   sT   € Ý�dœi™kœk¨E°,Ô,?Ñ?Ñ@Ô@€Eˆ,ÑÝ(+ÝŒ	‰Œ�eÐ6Ô7Ñ7ñ)ô )€EÐ
$Ñ%ð €Lr2   Úclient_stater¨   útuple[OAuth1Token, OAuth2Token]c                óœ   ‡— | d         }| d         }|                       dd¦  «        }t          ||ˆfd„|¬¦  «        }t          ||¦  «        S )NrM   rj   rk   rS   c                 ó   •— ‰ S r3   rK   )r¨   s   €r1   rL   zresume_login.<locals>.<lambda>ù   s   ø€  h€ r2   rl   )r"   ru   rs   )r°   r¨   rM   rj   rk   rw   s    `    r1   Úresume_loginr´   ò   sg   ø€ ð ˜(Ô#€FØ Ô/€LØ×!Ò! ,°Ñ8Ô8€JÝØ�Ð.Ð.Ð.Ð.¸:ðñ ô €Fõ ˜6 6Ñ*Ô*Ð*r2   c                óº   — 	 |                      ddi t          ¥ddi¥d¬¦  «         n# t          $ r Y nw xY wt          | |¦  «        }t	          ||d¬¦  «        }||fS )Nr]   z/portal/sso/embedr^   zsame-originT)ra   Úreferrerr�   )r"   ro   r   r�   rœ   )rw   rM   r‘   Úoauth2s       r1   rs   rs   þ   s•   € ðØ�
Š
ØØØIÕ'ÐIÐ)9¸=ÐIÐIØð	 	ñ 	
ô 	
ð 	
ð 	
øõ ð ð ð Øˆðøøøõ ˜f fÑ-Ô-€FÝ�f˜f¨DÐ1Ñ1Ô1€FØ�6ˆ>Ðs   ‚$' §
4³4r3   )r8   r9   r:   r;   r<   r9   )rM   rN   rO   rP   rQ   rR   rS   rT   rU   rT   r<   rV   )rw   rT   rM   rz   r<   r   )r‘   r   rM   rz   ry   rR   r<   r   )
rM   rz   rj   r�   rO   r   rk   rT   r<   rT   )rŽ   r�   r<   r�   )r°   r�   r¨   rT   r<   r±   )rw   rT   rM   rz   r<   r±   ))Ú
__future__r   r¦   r¤   r¯   Úcollections.abcr   Útypingr   r   Úurllib.parser   r!   r   Úrequests_oauthlibr	   rB   r   Úauth_tokensr   r   Úexcr   rn   r#   r   Ú__annotations__rr   rt   r…   Ú_SSO_UAro   r   rH   ry   r�   rœ   ru   r›   r´   rs   rK   r2   r1   ú<module>rÁ      sR  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð ð €	ØLÐ Ø!#€Ð #Ð #Ð #Ñ #à€Ø!Ð ð !Ð"IÐJÐ ð=ð ð
 àIà'Ø Ø ðð Ð ðDð Dð Dð Dð D˜-ñ Dô Dð Dð> !%ð
ð 
ð 
ð 
ð 
ð" "&Ø"=Ð"=Øð>8ð >8ð >8ð >8ð >8ðB6ð 6ð 6ð 6ð. ð	1ð 1ð 1ð 1ð 1ð 1ðL ð(ð (ð (ð (ð (ð (ð8ð ð ð ð	+ð 	+ð 	+ð 	+ðð ð ð ð ð r2   