Ë
    ¾�jÕ  ã                   ó¶   — d Z ddlZddlZddlZddlZddlZddlmZ ddlmZm	Z	 ddl
Z
ddlmZ ddlmZmZ ddlmZ  ej$                  e«      Z G d„ d	e«      Zy)
z3Created on Sun Apr 07 2024 20:07:44 by codeskyblue
é    N)ÚPath)ÚOptionalÚUnion)ÚAbstractDevice)ÚReadProgressÚhumanize)ÚAdbInstallErrorc                   óö   — e Zd Zededefd„«       Zddddddgfdeeef   d	ed
edede	j                  egdf   defd„Zddddddgdfdeeef   d	ed
edede	j                  egdf   dedefd„Zddededefd„Zy)ÚInstallExtensionÚurlÚpathc                 óp  — 	 t        j                  | d¬«      }|j                  «        t        |d«      5 }|j	                  d¬«      D ]  }|sŒ|j                  |«       Œ 	 ddd«       y# 1 sw Y   yxY w# t         j                  j                  $ r!}t        j                  d| › d|› �«       ‚ d}~ww xY w)	a#  
        Download apk file from url
    
        Args:
            url (str): The URL of the APK file to download.
            path (Path): The local file path where the APK will be saved.
    
        Raises:
            requests.exceptions.RequestException: If the download fails.
        T)ÚstreamÚwbi (  )Ú
chunk_sizeNzFailed to download APK from z: )
ÚrequestsÚgetÚraise_for_statusÚopenÚiter_contentÚwriteÚ
exceptionsÚRequestExceptionÚloggerÚwarning)r   r   ÚresponseÚfileÚchunkÚes         úQ/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/adbutils/install.pyÚdownload_apkzInstallExtension.download_apk   s¬   € ð	Ü—|‘| C°Ô5ˆHØ×%Ñ%Ô'ô �d˜DÓ!ð * TØ%×2Ñ2¸eÐ2ÓDò *�EÚØŸ
™
 5Õ)ñ*÷*÷ *ñ *ûô ×"Ñ"×3Ñ3ò 	Ü�N‰NÐ9¸#¸¸bÀÀÐDÔEØûð	ús:   ‚3A7 µA+ÁA+Á"A7 Á+A4Á0A7 Á4A7 Á7B5ÂB0Â0B5FNz-rz-tÚpath_or_urlÚnolaunchÚ	uninstallÚsilentÚcallbackÚflagsc           	      óŒ   — 	 dd l }d}| j	                  |||||||«       y # t        $ r t        j                  d«       d}Y Œ:w xY w)Nr   TzFapkutils is not installed, install it with 'pip install adbutils[apk]'F)ÚapkutilsÚImportErrorr   r   Ú_install)	Úselfr"   r#   r$   r%   r&   r'   r)   Úhas_apkutilss	            r    ÚinstallzInstallExtension.install3   sM   € ð	!ÛØˆLð 	�‰�k 8¨Y¸ÀÈ%ÐQ]Õ^øô ò 	!Ü�N‰NÐcÔdØ ŠLð	!ús   ‚    AÁATr-   c                 ó  ‡— ˆfd„}t        |t        «      r‚t        j                  d|«      rlt	        j
                  d¬«      }	|	j                  «        | j                  |t        |	j                  «      «       t        |	j                  «      }
 |d|
› �«       nt        |«      }
|
j                  «       st        d|› �«      ‚d}d}|r—ddl}|j                  j                  t        |
«      «      5 }|j                  «        |j!                  «       }|j"                  }|r|d   nd}|r|j%                  d	«      d
k(  rd	|z   }ddd«        |d|› �«        |d|› �«       d|xs d› d�} |d|› �«       | j'                  |
|‰ ¬«       | j(                  j+                  |«      }|
j+                  «       j,                  }|j.                  |k(  st1        d|› d|j.                  › �«       |r|r |d|› �«       | j3                  |«        |d«       	 t5        j4                  «       }|r |d«       | j7                  |d|¬«       t5        j4                  «       |z
  } |d|d›d�«       |s$|r"|r  |d|›d|›�«       | j9                  ||«       |r	 |d%«       yy# 1 sw Y   �ŒZxY w# t0        $ rÂ}|r‘|j:                  dv rƒ |d|›d|j:                  ›�«       | j3                  |«       | j7                  |d|¬«        |dt5        j4                  «       z
  › d�«       |sH|rF |d |› d|› �«       | j9                  ||«       n%t=        d!|j:                  z   d"z   d#z   d$z   |z   «       ‚ Y d}~Œßd}~ww xY w# |r	 |d%«       w w xY w)&aì  
        Install APK to device

        Args:
            path_or_url: local path or http url
            nolaunch: do not launch app after install
            uninstall: uninstall app before install
            silent: disable log message print
            callback: only two event now: <"BEFORE_INSTALL" | "FINALLY">
            flags (list): default ["-r", "-t"]
            has_apkutils: whether apkutils is installed

        Raises:
            AdbInstallError, BrokenPipeError
        c                 ó"   •— ‰st        | «       y y )N)Úprint)Úmsgr%   s    €r    Údprintz)InstallExtension._install.<locals>.dprintY   s   ø€ ÙÜ�c•
ð ó    z
^https?://z.apk)Úsuffixzdownload apk to zFile or URL not found: Nr   ú.éÿÿÿÿzAPK packageName: zAPK mainActivity: z/data/local/tmp/Úunknownzpush apk to device: )Úshow_progressz$pushed apk size not matched, expect z got zuninstall app: zinstall to android system ...ÚBEFORE_INSTALLT)Úcleanr'   z"successfully installed, time used z.1fz secondszlaunch app: ú/)Ú)INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADEÚ"INSTALL_FAILED_UPDATE_INCOMPATIBLEÚ INSTALL_FAILED_VERSION_DOWNGRADEz
uninstall z	 because zLaunch app: zFailure ú
z6Remote apk is not removed. Manually install command:
	zadb shell pm install -r -t ÚFINALLY)Ú
isinstanceÚstrÚreÚmatchÚtempfileÚNamedTemporaryFileÚcloser!   r   ÚnameÚis_fileÚFileNotFoundErrorr)   ÚAPKÚ	from_fileÚget_manifestÚget_manifest_main_activitiesÚpackage_nameÚfindÚ	_push_apkÚsyncÚstatÚst_sizeÚsizer	   r$   ÚtimeÚinstall_remoteÚ	app_startÚreasonr1   )r,   r"   r#   r$   r%   r&   r'   r-   r3   ÚtmpfileÚsrc_pathrP   Úmain_activityr)   ÚapkÚ
activitiesÚ
device_dstÚinfoÚapk_sizeÚstartÚ	time_usedr   s       `                 r    r+   zInstallExtension._installB   sq  ø€ ô.	ô �k¤3Ô'¬B¯H©H°]ÀKÔ,PÜ×1Ñ1¸Ô@ˆGØ�M‰MŒOØ×Ñ˜k¬4°·±Ó+=Ô>Ü˜GŸL™LÓ)ˆHÙÐ% h ZÐ0Õ1ä˜KÓ(ˆHØ×ÑÔ!Ü#Ð&=¸k¸]Ð$KÓLÐLàˆØˆáÛØ—‘×'Ñ'¬¨H«Ó6ð 8¸#Ø× Ñ Ô"Ø ×=Ñ=Ó?�
Ø"×/Ñ/�á1; 
¨1¢À�Ù  ]×%7Ñ%7¸Ó%<ÀÒ%BØ$'¨-Ñ$7�M÷8ñ Ð& | nÐ5Ô6ÙÐ'¨ Ð7Ô8à'¨Ò(A¸	Ð'BÀ$ÐGˆ
ÙÐ% j \Ð2Ô3Ø�‰�x ¸v¸:ˆÔFà�y‰y�~‰~˜jÓ)ˆØ—=‘=“?×*Ñ*ˆØ�y‰y˜HÒ$ÜÐBÀ8À*ÈEÐRV×R[ÑR[ÐQ\Ð]Ô^á™Ù�_ \ NÐ3Ô4Ø�N‰N˜<Ô(áÐ.Ô/ð"	$Ü—I‘I“KˆEÙÙÐ)Ô*à×Ñ 
°$¸eÐÔDÜŸ	™	› eÑ+ˆIÙÐ7¸	À#°ÀhÐOÔPÙ¡±Úªl¹MÐJÔKØ—‘˜|¨]Ô;ñ. Ù˜Õ#ð ÷w8ñ 8ûôL ò 	Ù §¡ð -ñ !ò
 ²LÀ!Ç(Â(ÐKÔLØ—‘˜|Ô,Ø×#Ñ# J°dÀ%Ð#ÔHÙÐ;¼D¿I¹I»KÈ%Ñ<OÐ;PÐPXÐYÔZÙ¡MÙ˜\¨,¨°q¸¸ÐHÔIØ—N‘N <°Õ?ô Ø §¡Ñ)¨DÑ0ØNñOà3ñ4à6@ñAôBð ÿøð'	ûñ* Ù˜Õ#ð ús9   Ã0AJÈA<J& ÊJ#Ê&	M1Ê/B8M,Í'M4 Í,M1Í1M4 Í4NÚapk_pathr`   r9   c                 óª  — t        j                   «       }|j                  «       j                  }|j                  d«      5 }|r4t	        ||t        |«      ¬«      }| j                  j                  ||«       n| j                  j                  ||«       ddd«       t        j                  dt        j                   «       |z
  z  «       y# 1 sw Y   Œ7xY w)zî
        Push APK file to device with progress indication.
    
        Args:
            apk_path (Path): Path to the APK file.
            device_dst (str): Destination path on the device.
    
        Returns:
            None
        Úrb)Úsource_pathNz$Success pushed, time used %d seconds)
rW   rT   rU   r   r   rC   rS   Úpushr   ra   )r,   re   r`   r9   rc   ÚlengthÚfdÚrs           r    rR   zInstallExtension._push_apk«   s›   € ô —	‘	“ˆØ—‘“×(Ñ(ˆØ�]‰]˜4Ó ð 	/ BÙÜ   V¼¸X»ÔG�Ø—	‘	—‘˜q *Õ-à—	‘	—‘˜r :Ô.÷	/ô 	�‰Ð:¼d¿i¹i»kÈEÑ>QÑRÕS÷	/ð 	/ús   Á AC	Ã	C)T)Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrC   r   r!   r   ÚboolÚtypingÚCallableÚlistr.   r+   rR   © r4   r    r   r      s1  „ Øð˜#ð  Tò ó ðð6 "'Ø"'Ø$Ø9=Ø# T˜lñ_Ø" 3¨ 9Ñ-ð_àð_ð  ð_ð ð	_ð
 !Ÿ/™/¨3¨%°¨+Ñ6ð_ð ó_ð" "'Ø"'Ø$Ø9=Ø# T˜lØ%)ñg$Ø" 3¨ 9Ñ-ðg$àðg$ð  ðg$ð ð	g$ð
 !Ÿ/™/¨3¨%°¨+Ñ6ðg$ð ðg$ð #óg$ñRT $ð T°Cð TÈô Tr4   r   )Ú__doc__ÚloggingrD   rF   rW   rr   Úpathlibr   r   r   r   Úadbutils._interfacesr   Úadbutils._utilsr   r   Úadbutils.errorsr	   Ú	getLoggerrm   r   r   ru   r4   r    ú<module>r}      sO   ðñó Û 	Û Û Û Ý ß "ã å /ß 2Ý +à	ˆ×	Ñ	˜8Ó	$€ôfT�~õ fTr4   