
    qh                     \    S r SSKJr  SSKJr  SSKJrJr   " S S\5      r " S	 S
\5      r	g)z
Yahoo OpenId, OAuth1 and OAuth2 backends, docs at:
    https://python-social-auth.readthedocs.io/en/latest/backends/yahoo.html
    )HTTPBasicAuth   )handle_http_errors   )
BaseOAuth1
BaseOAuth2c                   F    \ rS rSrSrSrSrSrSrSr	/ SQr
S	 rS
 rS rSrg)
YahooOAuth   z.Yahoo OAuth authentication backend. DEPRECATEDzyahoo-oauthguidz1https://api.login.yahoo.com/oauth/v2/request_authz6https://api.login.yahoo.com/oauth/v2/get_request_tokenz.https://api.login.yahoo.com/oauth/v2/get_token))r   idaccess_tokenr   )expiresr   c                 N   U R                  UR                  S5      UR                  S5      S9u  p#nUR                  S/ 5       Vs/ s H  oUR                  S5      (       d  M  UPM     nnUR                  S SS9  UR                  S	5      U(       a  US
   S   OSUUUS.$ s  snf )z&Return user details from Yahoo Profile	givenName
familyName
first_name	last_nameemailshandlec                 &    U R                  SS5      $ )NprimaryF)get)es    L/var/www/html/env/lib/python3.13/site-packages/social_core/backends/yahoo.py<lambda>-YahooOAuth.get_user_details.<locals>.<lambda>    s    !%%	5"9    T)keyreversenicknamer    usernameemailfullnamer   r   )get_user_namesr   sort)selfresponser(   r   r   r'   r   s          r   get_user_detailsYahooOAuth.get_user_details   s    *.*=*=||K0HLL<V +> +
'i &.\\(B%?W%?E99XCV%%?W94H Z0,2VAYx( $"
 	
 Xs   B"#B"c                     SnU R                  UR                  U R                  U5      5      U R                  U5      S9S   $ )Loads user data from servicez<https://social.yahooapis.com/v1/user/{0}/profile?format=jsonauthprofile)get_jsonformat	_get_guid
oauth_authr+   r   argskwargsurls        r   	user_dataYahooOAuth.user_data)   sE    L}}JJt~~l344??<;X  

 	r    c                 L    U R                  SU R                  U5      S9S   S   $ )ze
Because you have to provide GUID for every API request it's also
returned during one of OAuth calls
z3https://social.yahooapis.com/v1/me/guid?format=jsonr1   r   value)r4   r7   )r+   r   s     r   r6   YahooOAuth._get_guid0   s=    
 }}A.  
   	r     N)__name__
__module____qualname____firstlineno____doc__nameID_KEYAUTHORIZATION_URLREQUEST_TOKEN_URLACCESS_TOKEN_URL
EXTRA_DATAr-   r<   r6   __static_attributes__rA   r    r   r
   r
      s7    8DFKPGJ
r    r
   c                   h    \ rS rSrSrSrSrSrSr/ SQr	S r
S	 rS
 r\S 5       rS rS rSS jrSrg)YahooOAuth2;   z#Yahoo OAuth2 authentication backendzyahoo-oauth2subz/https://api.login.yahoo.com/oauth2/request_authz,https://api.login.yahoo.com/oauth2/get_token))rQ   r   r   )
expires_inr   )refresh_tokenrS   )
token_typerT   c                 2    U(       d  U(       a	  U SU 3X4$ g)N )NNNrA   )r+   r   r   s      r   r)   YahooOAuth2.get_user_namesJ   s      \9+.
EEr    c                     U R                  UR                  S5      UR                  S5      S9u  p#nUR                  S5      nUR                  S5      UUUUS.$ )zi
Return user details from Yahoo Profile.
To Get user email you need the profile private read permission.

given_namefamily_namer   r'   r#   r%   )r)   r   )r+   r,   r(   r   r   r'   s         r   r-   YahooOAuth2.get_user_detailsO   sg     +/*=*=||L1X\\-=X +> +
'i W% Z0 $"
 	
r    c                 2    SnU R                  USSU 30SS9$ )r0   z.https://api.login.yahoo.com/openid/v1/userinfoAuthorizationzBearer GET)headersmethod)r4   r8   s        r   r<   YahooOAuth2.user_datab   s2     ?}}/W\N+CDU  
 	
r    c                 \   U R                  U R                  5        U R                  U R                  [	        U R                  5       6 U R                  U R                  5       5      U R                  5       U R                  S9nU R                  U5        U R                  " US   /UQ7SU0UD6$ )z2Completes login process, must return user instance)r2   datar_   r`   r   r,   )process_errorrc   request_access_tokenrK   r   get_key_and_secretauth_complete_paramsvalidate_stateauth_headersACCESS_TOKEN_METHODdo_auth)r+   r9   r:   r,   s       r   auth_completeYahooOAuth2.auth_completek   s     	499%,,!! 7 7 9:**4+>+>+@A%%'++ - 
 	8$||^$
:>
/7
BH
 	
r    c                     USSS.$ )NrS   oob)rS   
grant_typeredirect_urirA   )r+   tokenr9   r:   s       r   refresh_token_params YahooOAuth2.refresh_token_params{   s    ")!
 	
r    c                 @   U R                   " U/UQ70 UD6nU R                  =(       d    U R                  nU R                  nUS:X  a  SOSnSU R	                  5       SXgU0nU R
                  " U4S[        U R                  5       6 0UD6n	U R                  " U	/UQ70 UD6$ )Nr^   paramsrc   r_   r`   r2   )	rs   REFRESH_TOKEN_URLrK   REFRESH_TOKEN_METHODri   requestr   rf   process_refresh_token_response)
r+   rr   r9   r:   rv   r;   r`   r!   request_argsry   s
             r   rS   YahooOAuth2.refresh_token   s    **5B4B6B$$=(=(=** E/hv!4#4#4#6&vV,,
#T%<%<%>?
CO
 227LTLVLLr    Nc                 `    SU R                   R                  SS5      U R                  U5      S.$ )Nauthorization_codecoder$   )rp   r   rq   )rc   r   get_redirect_uri)r+   states     r   rg    YahooOAuth2.auth_complete_params   s/    .IIMM&"- 11%8
 	
r    rA   )N)rB   rC   rD   rE   rF   rG   rH   rI   rK   rL   r)   r-   r<   r   rl   rs   rS   rg   rM   rA   r    r   rO   rO   ;   sU    -DFIEJ 

&
 
 

	M
r    rO   N)
rF   requests.authr   utilsr   oauthr   r   r
   rO   rA   r    r   <module>r      s0   
 ( & ), ,^W
* W
r    