§
    (ê[f  ã                   óÄ   — d dl Z d dl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
 ddlmZmZmZmZmZmZ ddlmZmZmZ dd	lmZmZmZ d
ZdZ G d„ d¦  «        Zd„ Zd„ ZdS )é    N©Úgenerate_token)Úextract_params)Ú	to_nativeé   )ÚOAuth1Request)ÚSIGNATURE_HMAC_SHA1ÚSIGNATURE_PLAINTEXTÚSIGNATURE_RSA_SHA1ÚSIGNATURE_TYPE_HEADERÚSIGNATURE_TYPE_BODYÚSIGNATURE_TYPE_QUERY)Úsign_hmac_sha1Úsign_rsa_sha1Úsign_plaintext)Úprepare_form_encoded_bodyÚprepare_headersÚprepare_request_uri_queryz!application/x-www-form-urlencodedzmultipart/form-datac            
       ón   — e Zd ZeeeeeeiZ	e
d„ ¦   «         Zddddddeeddf
d„Zd„ Zd„ Zd„ Zd„ Zd	„ ZdS )
Ú
ClientAuthc                 ó   — || j         |<   dS )a¸  Extend client signature methods.

        :param name: A string to represent signature method.
        :param sign: A function to generate signature.

        The ``sign`` method accept 2 parameters::

            def custom_sign_method(client, request):
                # client is the instance of Client.
                return 'your-signed-string'

            Client.register_signature_method('custom-name', custom_sign_method)
        N)ÚSIGNATURE_METHODS)ÚclsÚnameÚsigns      úV/var/www/piapp/venv/lib/python3.11/site-packages/authlib/oauth1/rfc5849/client_auth.pyÚregister_signature_methodz$ClientAuth.register_signature_method'   s   € ð '+ˆÔ˜dÑ#Ð#Ð#ó    NFc                 ó    — || _         || _        || _        || _        || _        || _        |	| _        || _        || _        |
| _	        || _
        d S ©N)Ú	client_idÚclient_secretÚtokenÚtoken_secretÚredirect_uriÚsignature_methodÚsignature_typeÚrsa_keyÚverifierÚrealmÚforce_include_body)Úselfr!   r"   r#   r$   r%   r(   r)   r&   r'   r*   r+   s               r   Ú__init__zClientAuth.__init__8   s]   € ð #ˆŒØ*ˆÔØˆŒ
Ø(ˆÔØ(ˆÔØ 0ˆÔØ,ˆÔØˆŒØ ˆŒØˆŒ
Ø"4ˆÔÐÐr   c                 ó    — | j                              | j        ¦  «        }|st          d¦  «        ‚t	          ||||¬¦  «        } || |¦  «        S )aw  Get an OAuth signature to be used in signing a request

        To satisfy `section 3.4.1.2`_ item 2, if the request argument's
        headers dict attribute contains a Host item, its value will
        replace any netloc part of the request argument's uri attribute
        value.

        .. _`section 3.4.1.2`: https://tools.ietf.org/html/rfc5849#section-3.4.1.2
        zInvalid signature method.)ÚbodyÚheaders)r   Úgetr&   Ú
ValueErrorr   )r,   ÚmethodÚurir0   r/   r   Úrequests          r   Úget_oauth_signaturezClientAuth.get_oauth_signatureJ   s\   € ð Ô%×)Ò)¨$Ô*?Ñ@Ô@ˆØð 	:ÝÐ8Ñ9Ô9Ð9å ¨°$ÀÐHÑHÔHˆØˆt�D˜'Ñ"Ô"Ð"r   c                 ó
  — d|fd|fdd| j         fd| j        fg}| j        r|                     d| j        f¦  «         | j        r|                     d| j        f¦  «         | j        r|                     d| j        f¦  «         |S )	NÚoauth_nonceÚoauth_timestamp)Úoauth_versionz1.0Úoauth_signature_methodÚoauth_consumer_keyÚoauth_tokenÚoauth_callbackÚoauth_verifier)r&   r!   r#   Úappendr%   r)   )r,   ÚnonceÚ	timestampÚoauth_paramss       r   Úget_oauth_paramszClientAuth.get_oauth_params[   s®   € à˜EÐ"Ø 	Ð*Ø$Ø% tÔ'<Ð=Ø! 4¤>Ð2ð
ˆð Œ:ð 	=Ø×Ò °´
Ð ;Ñ<Ô<Ð<ØÔð 	GØ×ÒÐ!1°4Ô3DÐ EÑFÔFÐFØŒ=ð 	CØ×ÒÐ!1°4´=Ð AÑBÔBÐBØÐr   c                 ón  — | j         t          k    rt          ||| j        ¬¦  «        }n‰| j         t          k    rIt
          |                     dd¦  «        v r+t          |¦  «        pg }t          ||¦  «        }t
          |d<   n0| j         t          k    rt          ||¦  «        }nt          d¦  «        ‚|||fS )N)r*   úContent-TypeÚ z!Unknown signature type specified.)r'   r   r   r*   r   ÚCONTENT_TYPE_FORM_URLENCODEDr1   r   r   r   r   r2   )r,   r4   r0   r/   rC   Údecoded_bodys         r   Ú_renderzClientAuth._renderk   s¹   € ØÔÕ"7Ò7Ð7Ý% l°GÀ4Ä:ÐNÑNÔNˆGˆGØÔ Õ$7Ò7Ð7Ý+¨w¯{ª{¸>È2Ñ/NÔ/NÐNÐNÝ-¨dÑ3Ô3Ð9°r�Ý0°¸|ÑLÔL�Ý*F�˜Ñ'øØÔ Õ$8Ò8Ð8Ý+¨L¸#Ñ>Ô>ˆCˆCåÐ@ÑAÔAÐAØ�G˜TÐ!Ð!r   c                 óp  — t          ¦   «         }t          ¦   «         }|€d}t          |¦  «        }|€i }|                      ||¦  «        }|r€|                     d¦  «        t
          k    rbt          j        t          j	        |¦  «         
                    ¦   «         ¦  «        }|                     d|                     d¦  «        f¦  «         |                      ||||¦  «        \  }}}|                      ||||¦  «        }	|                     d|	f¦  «         |                      ||||¦  «        \  }}}|||fS )a5  Sign the HTTP request, add OAuth parameters and signature.

        :param method: HTTP method of the request.
        :param uri:  URI of the HTTP request.
        :param body: Body payload of the HTTP request.
        :param headers: Headers of the HTTP request.
        :return: uri, headers, body
        Nr   rF   Úoauth_body_hashzutf-8Úoauth_signature)Úgenerate_nonceÚgenerate_timestampÚstrrD   r1   rH   Úbase64Ú	b64encodeÚhashlibÚsha1Údigestr@   ÚdecoderJ   r6   )
r,   r3   r4   r0   r/   rA   rB   rC   rL   Úsigs
             r   r   zClientAuth.signy   s<  € õ Ñ Ô ˆÝ&Ñ(Ô(ˆ	Øˆ<ØˆDõ ˜	‘N”Nˆ	àˆ?ØˆGà×,Ò,¨U°IÑ>Ô>ˆð ð 	V�G—K’K Ñ/Ô/Õ3OÒOÐOÝ$Ô.­w¬|¸DÑ/AÔ/A×/HÒ/HÑ/JÔ/JÑKÔKˆOØ×ÒÐ!2°O×4JÒ4JÈ7Ñ4SÔ4SÐ TÑUÔUÐUà!Ÿ\š\¨#¨w¸¸lÑKÔKÑˆˆW�dà×&Ò& v¨s°G¸TÑBÔBˆØ×ÒÐ.°Ð4Ñ5Ô5Ð5à!Ÿ\š\¨#¨w¸¸lÑKÔKÑˆˆW�dØ�G˜TÐ!Ð!r   c                 ó–  — t          |                     dd¦  «        ¦  «        }| j        t          k    rt          }n|st          |¦  «        rt          }t          |v r't          |d<   |                      ||||¦  «        \  }}}nB| j        r|                      ||||¦  «        \  }}}n|                      |||d¦  «        \  }}}d}|||fS )z¶Add OAuth parameters to the request.

        Parameters may be included from the body if the content-type is
        urlencoded, if no content type is set, a guess is made.
        rF   rG   r   )r   r1   r'   r   rH   r   r   r+   )r,   r3   r4   r0   r/   Úcontent_typeÚ_s          r   ÚpreparezClientAuth.prepare�   sâ   € õ ! §¢¨^¸RÑ!@Ô!@ÑAÔAˆØÔÕ"5Ò5Ð5Ý7ˆLˆLØð 	8¥.°Ñ"6Ô"6ð 	8Ý7ˆLå'¨<Ð7Ð7Ý&BˆG�NÑ#Ø!%§¢¨6°3¸ÀÑ!FÔ!FÑˆC�˜$˜$ØÔ$ð 	à!%§¢¨6°3¸ÀÑ!FÔ!FÑˆC�˜$˜$ð #Ÿiši¨°°W¸cÑBÔB‰OˆC�˜!ØˆDØ�G˜TÐ!Ð!r   )Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r
   r   r   Úclassmethodr   r   r-   r6   rD   rJ   r   r[   © r   r   r   r       sÂ   € € € € € à˜^Ø˜MØ˜^ðÐð ð+ð +ñ „[ð+ð  15Ø¨$Ø"¨D¸4Ø"5Ø 5Ø°ð5ð 5ð 5ð 5ð$#ð #ð #ð"ð ð ð "ð "ð "ð""ð ""ð ""ðH"ð "ð "ð "ð "r   r   c                  ó   — t          ¦   «         S r    r   r`   r   r   rN   rN   ¶   s   € ÝÑÔÐr   c                  ó\   — t          t          t          j        ¦   «         ¦  «        ¦  «        S r    )rP   ÚintÚtimer`   r   r   rO   rO   º   s   € Ý�s•4”9‘;”;ÑÔÑ Ô Ð r   )rd   rQ   rS   Úauthlib.common.securityr   Úauthlib.common.urlsr   Úauthlib.common.encodingr   Úwrapperr   Ú	signaturer	   r
   r   r   r   r   r   r   r   Ú
parametersr   r   r   rH   ÚCONTENT_TYPE_MULTI_PARTr   rN   rO   r`   r   r   ú<module>rl      s„  ðØ €€€Ø €€€Ø €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø .Ð .Ð .Ð .Ð .Ð .Ø -Ð -Ð -Ð -Ð -Ð -Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð  CÐ Ø/Ð ðS"ð S"ð S"ð S"ð S"ñ S"ô S"ð S"ðlð ð ð!ð !ð !ð !ð !r   