Ë
    	_ j™  ã                  óÜ   — d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	Z	ddl
mZmZmZ dZdZdd	d
œZ G d„ de«      Zdd„Zdd„Zddd„Zddd„Zdd„Zdd„Zd d„Zd!d„Zd"d„Zd#d„Zd$d„Zy)%u)   ÐšÐ»Ð¸ÐµÐ½Ñ‚ Crypto Pay API (@CryptoBot).é    )ÚannotationsN)ÚAnyÚOptional)ÚCRYPTOBOT_APIÚCRYPTOBOT_TOKENÚPANEL_DOMAINi‰  é   úapplication/jsonzOZPanel/1.0)ÚAcceptz
User-Agentc                  ó(   ‡ — e Zd Zdddœdˆ fd„Zˆ xZS )ÚCryptoBotErrorNÚ ©ÚcodeÚnamec               óH   •— t         ‰| �  |«       || _        |xs d| _        y ©Nr   )ÚsuperÚ__init__r   r   )ÚselfÚmessager   r   Ú	__class__s       €ú2/var/www/oz-panel.ru/ozpay-pub/server/cryptobot.pyr   zCryptoBotError.__init__   s"   ø€ Ü‰Ñ˜Ô!ØˆŒ	Ø’J˜Bˆ�	ó    )r   Ústrr   zOptional[int]r   r   )Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__)r   s   @r   r   r      s   ø„ Ø>BÐPR÷ ó r   r   c                 óV   — t        t        t        xs d«      j                  «       «      S r   )Úboolr   r   Ústrip© r   r   Úcryptobot_configuredr$      s    € Ü””OÒ) rÓ*×0Ñ0Ó2Ó3Ð3r   c                 óÔ   — t        t        xs d«      j                  «       j                  d«      } | sy| j	                  d«      s| j	                  d«      r| }nd| › dt
        › �}|› d�S )Nr   ú/zhttp://zhttps://ú:z/api/pay/cryptobot)r   r   r"   ÚrstripÚ
startswithÚCRYPTOBOT_WEBHOOK_PORT)ÚdomainÚbases     r   Úcryptobot_webhook_urlr-   !   sm   € Ü”Ò# Ó$×*Ñ*Ó,×3Ñ3°CÓ8€FÙØØ×Ñ˜Ô# v×'8Ñ'8¸Ô'DØ‰à˜&˜ Ô#9Ð":Ð;ˆØˆVÐ%Ð&Ð&r   c                óš  — t        |�|n	t        xs d«      j                  «       }|r|syt        j                  |j                  d«      «      j                  «       }t        j                  || t        j                  «      j                  «       }t        |«      j                  «       j                  «       }t        j                  ||«      S )Nr   Fzutf-8)r   r   r"   ÚhashlibÚsha256ÚencodeÚdigestÚhmacÚnewÚ	hexdigestÚlowerÚcompare_digest)ÚbodyÚ	signatureÚtokenÚ
secret_srcÚsecretÚexpectedÚgots          r   Úverify_cryptobot_signaturer?   ,   s˜   € Ü˜eÐ/‘U´_Ò5JÈÓK×QÑQÓS€JÙ™YØÜ�^‰^˜J×-Ñ-¨gÓ6Ó7×>Ñ>Ó@€FÜ�x‰x˜ ¤g§n¡nÓ5×?Ñ?ÓA€HÜ
ˆi‹.×
Ñ
Ó
 ×
&Ñ
&Ó
(€CÜ×Ñ˜x¨Ó-Ð-r   c                ó*  — t        | t        «      r| j                  d«      nd }t        |t        «      r]t        |j                  d«      xs d«      }|j                  d«      }	 |�t	        |«      nd }|dk(  rd||fS |dk(  rd||fS |rd	|› �||fS t        |t        «      r#|j                  «       r|j                  «       d dfS d
j                  t        |xs d«      j                  «       «      d d }|rd|› �d dfS y# t
        t        f$ r d }Y Œžw xY w)NÚerrorr   r   r   ÚAMOUNT_TOO_SMALLu>   Ð¡ÑƒÐ¼Ð¼Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ°Ñ� Ð´Ð»Ñ� Crypto BotÚAMOUNT_TOO_BIGu:   Ð¡ÑƒÐ¼Ð¼Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ� Ð´Ð»Ñ� Crypto BotzCrypto Bot: ú é´   u   ÐžÑˆÐ¸Ð±ÐºÐ° Crypto Bot: )u   ÐžÑˆÐ¸Ð±ÐºÐ° Crypto BotNr   )
Ú
isinstanceÚdictÚgetr   ÚintÚ	TypeErrorÚ
ValueErrorr"   ÚjoinÚsplit)ÚpayloadÚrawÚerrr   r   Úsnippets         r   Ú_error_textrR   6   s'  € Ü",¨W´dÔ";ˆ'�+‰+�gÔ
À€CÜ�#”tÔÜ�3—7‘7˜6“?Ò( bÓ)ˆØ�w‰w�v‹ˆð	Ø $Ð 0”3�t”9°dˆDð Ð%Ò%ØSÐUYÐ[_Ð_Ð_ØÐ#Ò#ØOÐQUÐW[Ð[Ð[ÙØ! $ Ð(¨$°Ð4Ð4Ü�#”sÔ §	¡	¤Ø�y‰y‹{˜D "Ð$Ð$Ø�h‰h”s˜3š9 "“~×+Ñ+Ó-Ó.¨t°Ð4€GÙØ*¨7¨)Ð4°d¸BÐ>Ð>Ø.øô œ:Ð&ò 	ØŠDð	ús   Á$C> Ã>DÄDc                óÂ  — |j                   xs d}	 |j                  «       }t        |t        «      r|j                  d«      sTt        t        |t        «      r|ni |«      \  }}}t        d| › d|j                  › d|› d|d d › �«       t        |||¬	«      ‚|j                  d
«      S # t        $ r- t        d| › d|j                  › d|d d › �«       t        d«      ‚w xY w)Nr   ú
cryptobot z
 non-json z: i�  u!   Crypto Bot Ð²ÐµÑ€Ð½ÑƒÐ» Ð½Ðµ JSONÚokrD   r   Úresult)
ÚtextÚjsonrK   ÚprintÚstatus_coder   rF   rG   rH   rR   )ÚmethodÚresponserO   rN   r   r   r   s          r   Ú_parse_responser]   M   së   € Ø
�-‰-Ò
˜2€CðBØ—-‘-“/ˆô �gœtÔ$¨G¯K©K¸Ô,=Ü)´ZÀÌÔ5N©'ÐTVÐX[Ó\Ñˆ��tÜ�
˜6˜( ! H×$8Ñ$8Ð#9¸¸G¸9ÀAÀcÈ$È3ÀiÀ[ÐQÔRÜ˜W¨4°dÔ;Ð;Ø�;‰;�xÓ Ð øô ò BÜ�
˜6˜( *¨X×-AÑ-AÐ,BÀ"ÀSÈÈ#ÀYÀKÐPÔQÜÐ@ÓAÐAðBús   ’B( Â(6Cc                ó0  — t        t        xs d«      j                  «       }|st        d«      ‚|j	                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}t        t
        xs d«      j                  d«      › d| j                  d«      › �}i t        ¥|ddœ¥}	 t        j                  |||t        ¬«      }t!        | |«      S c c}}w # t        j                  $ r:}	t        d| › d	|	› �«       t        d
|	j                  j                  › d�«      |	‚d }	~	ww xY w)Nr   u    Crypto Bot Ð½Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾ÐµÐ½zhttps://pay.crypt.bot/apir&   r
   )zCrypto-Pay-API-TokenzContent-Type)ÚheadersrX   ÚtimeoutrT   z
 network: u!   Crypto Bot Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ (ú))r   r   r"   r   Úitemsr   r(   ÚlstripÚ_HEADERS_BASEÚrequestsÚpostÚ_TIMEOUTÚRequestExceptionrY   r   r   r]   )
r[   Úparamsr:   ÚkeyÚvalueÚqueryÚurlr_   r\   Úexcs
             r   Úcryptobot_callro   [   s  € Ü”Ò% 2Ó&×,Ñ,Ó.€EÙÜÐ?Ó@Ð@Ø*0¯,©,«.×N™J˜C ¸EÑ<MˆS�%‰ZÐN€EÑNÜ”Ò=Ð"=Ó>×EÑEÀcÓJÐKÈ1ÈVÏ]É]Ð[^ÓM_ÐL`Ð
a€CðÜ
ðà %Ø*ò€Gð
eÜ—=‘= ¨g¸EÌ8ÔTˆô ˜6 8Ó,Ð,ùó Oøô ×$Ñ$ò eÜ�
˜6˜( *¨S¨EÐ2Ô3ÜÐ@ÀÇÁ×AWÑAWÐ@XÐXYÐZÓ[ÐadÐdûðeús$   Á
CÁCÂC ÃDÃ5DÄDc                óH  — t        | t        «      r!| D �cg c]  }t        |t        «      sŒ|‘Œ c}S t        | t        «      rV| j                  d«      }t        |t        «      r!|D �cg c]  }t        |t        «      sŒ|‘Œ c}S | j                  d«      �| gS g S c c}w c c}w )Nrb   Ú
invoice_id)rF   ÚlistrG   rH   )rV   Úitemrb   s      r   Úinvoice_itemsrt   n   s‰   € Ü�&œ$ÔØ!'ÖB˜¬:°d¼DÕ+A’ÒBÐBÜ�&œ$ÔØ—
‘
˜7Ó#ˆÜ�eœTÔ"Ø%*ÖE˜T¬j¸¼tÕ.D’DÒEÐEØ�:‰:�lÓ#Ð/Ø�8ˆOØ€Iùò Cùò Fs   •B«BÁ'BÁ=Bc                ól   — t        | «      d›t        |xs d«      d d t        |xs d«      d d dddddœS )	Nz.2fr   i   i   u>   Ð‘Ð°Ð»Ð°Ð½Ñ� Ð·Ð°Ñ‡Ð¸Ñ�Ð»ÐµÐ½. Ð’ÐµÑ€Ð½Ð¸Ñ‚ÐµÑ�ÑŒ Ð² OZ Panel.Fi  )ÚamountÚdescriptionrN   Úhidden_messageÚallow_commentsÚallow_anonymousÚ
expires_in)Úfloatr   )rv   rN   rw   s      r   Ú_invoice_paramsr}   z   sK   € ä˜6“] 3Ð'Ü˜;Ò,¨"Ó-¨e¨tÐ4Ü�w’} "Ó% e tÐ,ØZØØ Øñð r   c                ó@  — t        | ||«      }	 t        	 dddddœ|¤Ž}t        |t        «      st        d«      ‚|S # t        $ rX}|j                  xs t	        |«      j                  «       }d|vrd|vr‚ t        d|› d�«       t        	 dd	d
dœ|¤Ž}Y d }~Œyd }~ww xY w)NÚfiatÚUSDz!USDT,TON,BTC,ETH,LTC,BNB,TRX,USDC)Úcurrency_typer   Úaccepted_assetsÚFIATÚCURRENCYzcryptobot fiat invoice failed (z), fallback USDTÚcryptoÚUSDT)r�   Úassetu%   Crypto Bot Ð½Ðµ Ð²ÐµÑ€Ð½ÑƒÐ» Ñ�Ñ‡Ñ‘Ñ‚)ÚcreateInvoice)	r}   ro   r   r   r   ÚupperrY   rF   rG   )rv   rN   rw   ri   rV   rn   r   s          r   Úcreate_fiat_invoicerŠ   †   sË   € Ü˜V W¨kÓ:€Fð
ÜØð
à ØØ?ñ	
ð
 ñ
ˆô$ �fœdÔ#ÜÐDÓEÐEØ€Møô ò 

Ø—‘Ò$œC ›H×+Ñ+Ó-ˆØ˜Ñ *°DÑ"8ØÜÐ/°¨uÐ4DÐEÔFÜØð
à"Øñ
ð ñ	
�ûð

ús   �< ¼	BÁABÂBc                ó®   — | D �cg c]  }|dvsŒt        t        |«      «      ‘Œ }}|sg S t        ddj                  |«      ¬«      }t	        |«      S c c}w )Nr   ÚgetInvoicesú,)Úinvoice_ids)r   rI   ro   rL   rt   )rŽ   rs   ÚidsrV   s       r   Úget_invoices_by_idsr�       sQ   € Ø&1Ö
L˜d°TÀÒ5KŒ3Œs�4‹y�>Ð
L€CÐ
LÙØˆ	Ü˜M°s·x±xÀ³}ÔE€FÜ˜Ó Ð ùò	 Ms
   …	A�Ac                ó   — t        d| ¬«      S )NÚ
setWebhook©rm   )ro   r“   s    r   Úset_cryptobot_webhookr”   ¨   s   € Ü˜,¨CÔ0Ð0r   )Úreturnr!   )r•   r   )N)r8   Úbytesr9   r   r:   zOptional[str]r•   r!   )r   )rN   r   rO   r   r•   ztuple[str, Optional[int], str])r[   r   r\   zrequests.Responser•   r   )r[   r   ri   r   r•   r   )rV   r   r•   ú
list[dict])rv   r|   rN   r   rw   r   r•   zdict[str, Any])rv   r|   rN   r   rw   r   r•   rG   )rŽ   z	list[int]r•   r—   )rm   r   r•   r   )Ú__doc__Ú
__future__r   r/   r3   rX   Útypingr   r   re   Úserver.configr   r   r   r*   rg   rd   ÚRuntimeErrorr   r$   r-   r?   rR   r]   ro   rt   r}   rŠ   r�   r”   r#   r   r   ú<module>r�      s{   ðÙ /å "ã Û Û ß  ã ç FÑ FàÐ Ø€à Øñ€ô�\ô ó4ó'ô.ô/ó.!ó-ó&	ó	óó4!ô1r   