
    =[jJ1                       d Z ddlmZ ddlmZ ddlZddlmZmZm	Z	 ddl
mZmZ ddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZ  ej        d	
          ZdZ dZ!e"                    d           ej#        ddd
          dddddeedf	d]d'            Z$e"                    d(           ej%        d)e!
           ej#        ddd*
           ej#        dd+d,
          dddddeedfd^d0            Z&e"                    d1           ej%        d)e!
           ej#        d2d3          dddddeedf
d_d5            Z'e"                    d6           ej%        d)e!
           ej%        d)d7
           ej#        d8d3           ej#        dd9d:
          dddddeedfd`d<            Z(e"                    d=           ej%        d)e!
           ej#        d>d?d@
           ej#        dAdBdC
           ej#        d>dDdE
          dddddeedfdadH            Z)e"                    dI           ej%        d)e!
           ej#        dAdB           ej#        ddJdKdL
          dddddeedfdbdN            Z*e"                    dO           ej%        d)e!
           ej#        d)dPdQ
           ej#        ddRdS
           ej#        ddTdUdVW          dddddeedfdcd\            Z+dS )dzFind My device commands.    )annotations)PathN)	get_stateresolve_deviceservice_call)normalize_device_detailsnormalize_device_summary)DEFAULT_LOG_LEVELDEFAULT_OUTPUT_FORMATHttpProxyOptionHttpsProxyOptionLogLevelOptionNoVerifySslOptionOutputFormatOptionSessionDirOptionUsernameOptionWithFamilyOptionstore_command_options)console_kv_tableconsole_tableprint_json_textwrite_json_filezWork with Find My devices.)helpzFind MyzDevice id or name.listFz--locatezFetch current device locations.ctxtyper.Contextlocateboolusernamer   session_dirr   
http_proxyr   https_proxyr   no_verify_sslr   output_formatr   	log_levelr   with_familyr   returnNonec
                |   t          | ||||||||		  	         t          |           }
|
                                fdt          t          fdj                  D             }|
j        r|
                    |           dS |
j        	                    t          dg dd |D                                  dS )	zList Find My devices.r   r    r!   r"   r#   r$   r%   r&   c                2    g | ]}t          |           S )r   )r	   ).0devicer   s     e/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pyicloud/cli/commands/devices.py
<listcomp>z devices_list.<locals>.<listcomp>C   s6        	!777      c                      j         S N)devices)apis   r/   <lambda>zdevices_list.<locals>.<lambda>G   s	    CK r1   account_nameNDevices)IDNameDisplayModelBatteryStatusc           	     f    g | ].}|d          |d         |d         |d         |d         |d         f/S )idnamedisplay_namedevice_modelbattery_levelbattery_status )r-   rows     r/   r0   z devices_list.<locals>.<listcomp>R   s[     
 
 
  IK''(()
 
 
r1   )r   r   get_apir   FIND_MYr8   json_output
write_jsonconsoleprintr   )r   r   r   r    r!   r"   r#   r$   r%   r&   statepayloadr5   s    `          @r/   devices_listrQ   %   s   " ##
 
 
 
 cNNE
--//C   ")
 
 
  G  !!!	MCCC
 
 #
 
 
	
 	
    r1   show.zFetch current device location.z--rawzShow the raw device payload.r.   strrawc                   t          | ||||||	|
|	  	         t          |           }|                                }t          ||          }|r|j        nt          ||          }|j        r|                    |           dS |rt          |j	        |           dS |j	        
                    t          d|d          d|d         fd|d	         fd
|d         fd|d         fd|d         fd|d         fd|d         fg                     dS )z)Show detailed information for one device.r*   r,   NzDevice: rB   r:   rA   zDisplay NamerC   zDevice Classdevice_classzDevice ModelrD   zBattery LevelrE   zBattery StatusrF   Locationlocation)r   r   rI   r   datar   rK   rL   r   rM   rN   r   )r   r.   r   rT   r   r    r!   r"   r#   r$   r%   r&   rO   r5   idevicerP   s                   r/   devices_showr[   a   sa   & ##
 
 
 
 cNNE
--//CS&))G!Wgll'?PV'W'W'WG !!!
 w///	M(wv((wt}%!89!89!89 '/":;!7+;#<=WZ01	
 	
    r1   soundzFind My iPhone Alertz	--subjectsubjectc                v   t          | |||||||	|
	  	         t          |           }|                                }t          ||          t	          t
          fd|j                   j        d}|j        r|	                    |           dS |j
                            dj         d           dS )zPlay a sound on a device.r*   c                 0                                    S )N)r]   )
play_sound)rZ   r]   s   r/   r6   zdevices_sound.<locals>.<lambda>   s    ""7"33 r1   r7   )	device_idr]   NzRequested sound alert for .r   r   rI   r   r   rJ   r8   rA   rK   rL   rM   rN   rB   )r   r.   r]   r   r    r!   r"   r#   r$   r%   r&   rO   r5   rP   rZ   s     `           @r/   devices_soundrd      s      ##
 
 
 
 cNNE
--//CS&))G33333%   
 $J7;;G !!!	MDW\DDDEEEEEr1   messagezMessage to display.z	A Messagez--silentzDo not play a sound.silentc                   t          | |||||	|
||	  	         t          |           }|                                }t          ||          t	          t
          fd|j                   j        d}|j        r|	                    |           dS |j
                            dj         d           dS )zDisplay a message on a device.r*   c                 6                                     S )N)r]   re   sounds)display_message)rZ   re   rf   r]   s   r/   r6   z!devices_message.<locals>.<lambda>   s%    ''WZ ( 
 
 r1   r7   )ra   r]   re   rf   NzRequested message for rb   rc   )r   r.   re   r]   rf   r   r    r!   r"   r#   r$   r%   r&   rO   r5   rP   rZ   s     ```           @r/   devices_messagerk      s   $ ##
 
 
 
 cNNE
--//CS&))G	
 	
 	
 	
 	
 	
 	
 %    Z	 G  !!!	M@@@@AAAAAr1   z	lost-mode z--phonez Phone number shown in lost mode.z*This iPhone has been lost. Please call me.z	--messagezLost mode message.z
--passcodezNew device passcode.phonepasscodec                   t          | |||||	|
||	  	         t          |           }|                                }t          ||d          t	          t
          fd|j                   j        d}|j        r|	                    |           dS |j
                            dj         d	           dS )
zEnable lost mode for a device.r*   Trequire_uniquec                 4                                    S )N)numbertextnewpasscode)lost_device)rZ   re   rn   rm   s   r/   r6   z#devices_lost_mode.<locals>.<lambda>  s    ##5wH#UU r1   r7   )ra   rm   re   rn   NzRequested lost mode for rb   rc   )r   r.   rm   re   rn   r   r    r!   r"   r#   r$   r%   r&   rO   r5   rP   rZ   s     ```           @r/   devices_lost_moderw      s	   , ##
 
 
 
 cNNE
--//CS&>>>GUUUUUUU%    Z	 G  !!!	MB7<BBBCCCCCr1   erasez--forcez-fzSkip confirmation prompt.forcec                   t          | ||||||	|
|	  	         t          |           }|                                }t          ||d          |s0t	          j        dj         d          st	          j                    t          t          fd|j
                   j        d}|j        r|                    |           d	S |j                            d
j         d           d	S )z$Request a remote erase for a device.r*   Trp   z(This will PERMANENTLY ERASE all data on z. Continue?c                 .                                    S r3   )erase_device)rZ   re   s   r/   r6   zdevices_erase.<locals>.<lambda>U  s    $$W-- r1   r7   )ra   re   NzRequested remote erase for rb   )r   r   rI   r   typerconfirmrB   Abortr   rJ   r8   rA   rK   rL   rM   rN   )r   r.   re   ry   r   r    r!   r"   r#   r$   r%   r&   rO   r5   rP   rZ   s     `            @r/   devices_eraser   +  s-   , ##
 
 
 
 cNNE
--//CS&>>>G L7<LLL   kmm-----%   
 $J7;;G !!!	MEglEEEFFFFFr1   exportz--outputzDestination JSON file.z--raw/--no-rawzWrite the raw device payload.z--normalizedTz:Write normalized device fields instead of the raw payload.)hiddenr   outputr   bool | None
normalizedc                   t          | |||||	|
||	  	         t          |           }|                                }t          ||          }|r|rt	          j        d          |du o| }|r|j        nt          |d          }t          ||           |j	        r-|
                    |j        t          |          |d           dS |j                            t          |                     dS )z!Export a device snapshot to JSON.r*   z.Choose either --raw or --normalized, not both.TFr,   )ra   pathrT   N)r   r   rI   r   r}   BadParameterrY   r   r   rK   rL   rA   rS   rM   rN   )r   r.   r   rT   r   r   r    r!   r"   r#   r$   r%   r&   rO   r5   rZ   use_rawrP   s                     r/   devices_exportr   _  s   6 ##
 
 
 
 cNNE
--//CS&))G
 Sz S !QRRRTk,*nGT%=ge%T%T%T  FG$$$ wz3v;;wWWXXX	MF$$$$$r1   )r   r   r   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   )r   r   r.   rS   r   r   rT   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   )r   r   r.   rS   r]   rS   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   )r   r   r.   rS   re   rS   r]   rS   rf   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   )r   r   r.   rS   rm   rS   re   rS   rn   rS   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   )r   r   r.   rS   re   rS   ry   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   )r   r   r.   rS   r   r   rT   r   r   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   r(   ),__doc__
__future__r   pathlibr   r}   pyicloud.cli.contextr   r   r   pyicloud.cli.normalizer   r	   pyicloud.cli.optionsr
   r   r   r   r   r   r   r   r   r   r   pyicloud.cli.outputr   r   r   r   TyperapprJ   DEVICE_ID_HELPcommandOptionrQ   Argumentr[   rd   rk   rw   r   r   rG   r1   r/   <module>r      s     " " " " " "        H H H H H H H H H H U U U U U U U U                                     ek3444
% V  5<z A    $$("&$(',(= 1$)8 8 8 8 8v V !%.>:::5<z @   UG2PQQQ#$("&$(',(= 1$)4 4 4 4 4n W !%.>:::5< 6DD#$("&$(',(= 1$)&F &F &F &F &FR Y !%.>:::!5>#,ABBB5<[995<z8NOOO#$("&$(',(= 1$)/B /B /B /B /Bd [ !%.>:::b)2TUUU5<4!  
 !EL\8NOOO#$("&$(',(= 1$)#1D 1D 1D 1D 1Dh W !%.>:::5<4  %,y$%@    $$("&$(',(= 1$)#0G 0G 0G 0G 0Gf X !%.>:::5<Z6NOOO#u|,  
 $u|I	    $$("&$(',(= 1$)-3% 3% 3% 3% 3% 3% 3%r1   