Ë
    ûûàg›  ã                   ó¨   — d Z ddlmZ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mZ d	„ Z G d
„ de«      Z G d„ d«      Z G d„ d«      Zy)zâ
Parts derived from socialregistration and authorized by: alen, pinda
Inspired by:
    http://github.com/leah/python-oauth/blob/master/oauth/example/client.py
    http://github.com/facebook/tornado/blob/master/tornado/auth.py
é    )Ú	parse_qslÚurlparse)ÚHttpResponseRedirect)Ú	urlencode)Úgettext)ÚOAuth1)Úget_adapter)Úbuild_absolute_uriÚget_request_paramc                 ó,   — t        | «      j                  S )a  
    Returns a prefix for the token to store in the session so we can hold
    more than one single oauth provider's access key in the session.

    Example:

        The request token url ``http://twitter.com/oauth/request_token``
        returns ``twitter.com``

    )r   Únetloc)Úurls    új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/oauth/client.pyÚget_token_prefixr      s   € ô �C‹=×ÑÐó    c                   ó   — e Zd Zy)Ú
OAuthErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   r   r   "   s   „ Ør   r   c                   ó6   — e Zd Z	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)	ÚOAuthClientNc	                 óž   — || _         || _        || _        || _        || _        || _        || _        || _        g | _        d | _	        d | _
        y ©N)ÚrequestÚrequest_token_urlÚaccess_token_urlÚconsumer_keyÚconsumer_secretÚ
parametersÚcallback_urlÚproviderÚerrorsÚrequest_tokenÚaccess_token)	Úselfr   r   r    r   r   r"   r!   r#   s	            r   Ú__init__zOAuthClient.__init__'   sX   € ð ˆŒà!2ˆÔØ 0ˆÔà(ˆÔØ.ˆÔà$ˆŒà(ˆÔØ ˆŒàˆŒØ!ˆÔØ ˆÕr   c                 óÖ  — | j                   �€Qi }| j                  r|j                  | j                  «       t        | j                  | j
                  «      |d<   | j                  dz   t        |«      z   }t        | j                  | j                  ¬«      }t        «       j                  «       j                  ||¬«      }|j                  dvr6t        t!        d«      t#        | j                  «      |j$                  fz  «      ‚t'        t)        |j$                  «      «      | _         | j                   | j                  j*                  dt#        | j                  «      z  <   | j                   S )zŠ
        Obtain a temporary request token to authorize an access token and to
        sign the request to obtain the access token
        Úoauth_callbackú?)Úclient_secret©r   Úauth©éÈ   éÉ   zKInvalid response while obtaining request token from "%s". Response was: %s.úoauth_%s_request_token)r%   r!   Úupdater
   r   r"   r   r   r   r   r    r	   Úget_requests_sessionÚpostÚstatus_coder   Ú_r   ÚtextÚdictr   Úsession)r'   Ú
get_paramsÚrt_urlÚoauthÚresponses        r   Ú_get_request_tokenzOAuthClient._get_request_tokenC   sB  € ð
 ×ÑÑ%ØˆJØ�ŠØ×!Ñ! $§/¡/Ô2Ü+=Ø—‘˜d×/Ñ/ó,ˆJÐ'Ñ(ð ×+Ñ+¨cÑ1´I¸jÓ4IÑIˆFÜ˜4×,Ñ,¸D×<PÑ<PÔQˆEÜ"“}×9Ñ9Ó;×@Ñ@ÀVÐRWÐ@ÓXˆHØ×#Ñ#¨:Ñ5Ü Üð8óô (¨×(>Ñ(>Ó?ÀÇÁÐOñ	Póð ô "&¤i°·±Ó&>Ó!?ˆDÔð ×"Ñ"ð �L‰L× Ñ Ø(Ô+;¸D×<RÑ<RÓ+SÑSñð ×!Ñ!Ð!r   c                 óŽ  — | j                   �€-| j                  «       }t        | j                  | j                  |d   |d   ¬«      }| j
                  }t        | j                  d«      }|r|dz   t        d|i«      z   }t        «       j                  «       j                  ||¬«      }|j                  dvr*t        t        d«      t        | j                   «      z  «      ‚t#        t%        |j&                  «      «      | _         | j                   | j                  j(                  d	t        | j                   «      z  <   | j                   S )
zb
        Obtain the access token to access private resources at the API
        endpoint.
        Úoauth_tokenÚoauth_token_secret©r,   Úresource_owner_keyÚresource_owner_secretÚoauth_verifierr+   r-   r/   z8Invalid response while obtaining access token from "%s".úoauth_%s_access_token)r&   Ú_get_rt_from_sessionr   r   r    r   r   r   r   r	   r4   r5   r6   r   r7   r   r   r9   r   r8   r:   )r'   r%   r=   Úat_urlrF   r>   s         r   Úget_access_tokenzOAuthClient.get_access_token`   s8  € ð
 ×ÑÑ$Ø ×5Ñ5Ó7ˆMÜØ×!Ñ!Ø"×2Ñ2Ø#0°Ñ#?Ø&3Ð4HÑ&Iô	ˆEð ×*Ñ*ˆFô /¨t¯|©|Ð=MÓNˆNÙØ #™¬	Ð3CÀ^Ð2TÓ(UÑU�Ü"“}×9Ñ9Ó;×@Ñ@ÀVÐRWÐ@ÓXˆHØ×#Ñ#¨:Ñ5Ü ÜÐSÓTÜ& t×'=Ñ'=Ó>ñ?óð ô !%¤Y¨x¯}©}Ó%=Ó >ˆDÔð ×!Ñ!ð �L‰L× Ñ Ø'Ô*:¸4×;QÑ;QÓ*RÑRñð × Ñ Ð r   c                 óÐ   — 	 | j                   j                  dt        | j                  «      z     S # t        $ r+ t        t        d«      t        | j                  «      z  «      ‚w xY w)zc
        Returns the request token cached in the session by
        ``_get_request_token``
        r2   z No request token saved for "%s".©r   r:   r   r   ÚKeyErrorr   r7   ©r'   s    r   rH   z OAuthClient._get_rt_from_session�   sl   € ð
	Ø—<‘<×'Ñ'Ø(Ô+;¸D×<RÑ<RÓ+SÑSñð øô ò 	ÜÜÐ4Ó5Ü" 4×#9Ñ#9Ó:ñ;óð ð	úó	   ‚.1 ±4A%c                 óÂ   — 	 | j                  «        | j                  «        y# t        $ r2}| j                  j	                  |j
                  d   «       Y d }~yd }~ww xY w)Nr   FT)rH   rJ   r   r$   ÚappendÚargs)r'   Úes     r   Úis_validzOAuthClient.is_valid�   sS   € ð	Ø×%Ñ%Ô'Ø×!Ñ!Ô#ð øô ò 	Ø�K‰K×Ñ˜qŸv™v a™yÔ)Üûð	ús   ‚ # £	A¬(AÁAc                 óÒ   — | j                  «       }|d   | j                  j                  | j                  «      dœ}|j	                  |«       |dz   t        |«      z   }t        |«      S )z�
        Returns a ``HttpResponseRedirect`` object to redirect the user
        to the URL the OAuth provider handles authorization.
        rA   )rA   r*   r+   )r?   r   r
   r"   r3   r   r   )r'   Úauthorization_urlÚextra_paramsr%   Úparamsr   s         r   Úget_redirectzOAuthClient.get_redirect™   sf   € ð
 ×/Ñ/Ó1ˆà(¨Ñ7Ø"Ÿl™l×=Ñ=¸d×>OÑ>OÓPñ
ˆð 	�‰�lÔ#Ø #Ñ%¬	°&Ó(9Ñ9ˆÜ# CÓ(Ð(r   )NN)	r   r   r   r(   r?   rJ   rH   rT   rY   r   r   r   r   r   &   s)   „ ð Øó!ò8"ò:!òBòó)r   r   c                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)ÚOAuthzž
    Base class to perform oauth signed requests from access keys saved
    in a user's session. See the ``OAuthTwitter`` class below for an
    example.
    c                 ó<   — || _         || _        || _        || _        y r   )r   r   Ú
secret_keyr   )r'   r   r   r]   r   s        r   r(   zOAuth.__init__¯   s    € ØˆŒØ(ˆÔØ$ˆŒØ!2ˆÕr   c                 óÐ   — 	 | j                   j                  dt        | j                  «      z     S # t        $ r+ t        t        d«      t        | j                  «      z  «      ‚w xY w)zT
        Get the saved access token for private resources from the session.
        rG   zNo access token saved for "%s".rL   rN   s    r   Ú_get_at_from_sessionzOAuth._get_at_from_sessionµ   sl   € ð	Ø—<‘<×'Ñ'Ø'Ô*:¸4×;QÑ;QÓ*RÑRñð øô ò 	ÜÜÐ3Ó4Ü" 4×#9Ñ#9Ó:ñ;óð ð	úrO   Nc                 ó^  — | j                  «       }t        | j                  | j                  |d   |d   ¬«      } t	        t        «       j                  «       |j                  «       «      ||||¬«      }|j                  dk7  r*t        t        d«      t        | j                  «      z  «      ‚|S )zn
        Request a API endpoint at ``url`` with ``params`` being either the
        POST or GET data.
        rA   rB   rC   )r.   ÚheadersrX   r0   z'No access to private resources at "%s".)r_   r   r   r]   Úgetattrr	   r4   Úlowerr6   r   r7   r   r   )r'   r   ÚmethodrX   ra   r&   r=   r>   s           r   ÚqueryzOAuth.queryÃ   s­   € ð
 ×0Ñ0Ó2ˆÜØ×ÑØŸ/™/Ø+¨MÑ:Ø".Ð/CÑ"Dô	
ˆð Q”7œ;›=×=Ñ=Ó?ÀÇÁÃÓPØ�e W°Vô
ˆð ×Ñ 3Ò&ÜÜÐ;Ó<Ü" 4×#9Ñ#9Ó:ñ;óð ð
 ˆr   )ÚGETNN)r   r   r   Ú__doc__r(   r_   re   r   r   r   r[   r[   ¨   s   „ ñò3òôr   r[   N)rg   Úurllib.parser   r   Údjango.httpr   Údjango.utils.httpr   Údjango.utils.translationr   r7   Úrequests_oauthlibr   Úallauth.socialaccount.adapterr	   Úallauth.utilsr
   r   r   Ú	Exceptionr   r   r[   r   r   r   ú<module>rp      sI   ðñ÷ -å ,Ý 'Ý 1å $å 5ß ?ò ô	�ô 	÷)ñ )÷D0ò 0r   