
    AHj                     V    d Z ddlmZmZmZ ddlmZmZmZm	Z	 erddl
Z
 G d de      Zy)zFitbit OAuth Login Helper.    )TYPE_CHECKINGClassVarOptional)DiscoveryDocumentOpenIDSSOBaseSSOLoginErrorNc                   N    e Zd ZU dZdZdgZeed<   ddede	d   d	e
fd
Zd	efdZy)	FitbitSSOz'Class providing login via Fitbit OAuth.fitbitprofilescopeNresponsesessionzhttpx.AsyncClientreturnc                    K   |j                  d      }|st        dd      t        |d   |d   |d   |d   | j                        S w)	z7Return OpenID from user information provided by Google.useri  z"Failed to process login via Fitbit	encodedIdfullNamedisplayNameavatar)id
first_namedisplay_namepictureprovider)getr	   r   r   )selfr   r   infos       N/root/tools/cai/cai_env/lib/python3.12/site-packages/fastapi_sso/sso/fitbit.pyopenid_from_responsezFitbitSSO.openid_from_response   sX     ||F#%IJJK J'm,N]]
 	
s   AAc                    K   ddddS w)z#Get document containing handy urls.z:https://www.fitbit.com/oauth2/authorize?response_type=codez#https://api.fitbit.com/oauth2/tokenz,https://api.fitbit.com/1/user/-/profile.json)authorization_endpointtoken_endpointuserinfo_endpoint )r   s    r    get_discovery_documentz FitbitSSO.get_discovery_document   s      'cC!O
 	
s   	)N)__name__
__module____qualname____doc__r   r   r   __annotations__dictr   r   r!   r   r'   r&       r    r   r      sD    1H kE8!
4 
(K^B_ 
kq 

.? 
r.   r   )r+   typingr   r   r   fastapi_sso.sso.baser   r   r   r	   httpxr   r&   r.   r    <module>r2      s&      4 4 R R
 
r.   