o
    l>jV                     @  s  d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	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 ddlmZ ejdd	Zed
dddddeefd)ddZed dddddeefd)d!d"Zed#dddddeefd)d$d%Zed&dddddeefd)d'd(ZdS )*zAccount commands.    )annotationsN)	get_stateservice_call)normalize_account_devicenormalize_account_summarynormalize_family_membernormalize_storage)
DEFAULT_LOG_LEVELDEFAULT_OUTPUT_FORMATHttpProxyOptionHttpsProxyOptionLogLevelOptionNoVerifySslOptionOutputFormatOptionSessionDirOptionUsernameOptionstore_command_options)console_tablez Inspect iCloud account metadata.)helpsummaryFctxtyper.Contextusernamer   session_dirr   
http_proxyr   https_proxyr   no_verify_sslr   output_formatr   	log_levelr   returnNonec              
     s   t | |||||||d t| }|  td fdd jd}	t |	}
|jr/||
 dS |j	d|
d   |j	d	|
d
   |j	d|
d   |j	d|
d  d|
d  d|
d  d dS )z$Show high-level account information.r   r   r   r   r   r   r   Accountc                     s    j S N)account apir%   R/home/thesage/.local/lib/python3.10/site-packages/pyicloud/cli/commands/account.py<lambda>9   s    z!account_summary.<locals>.<lambda>account_nameNz	Account: r+   z	Devices: devices_countzFamily members: family_countz	Storage: used_storage_percentz% used (used_storage_bytesz / total_storage_bytesz bytes))
r   r   get_apir   r+   r   json_output
write_jsonconsoleprint)r   r   r   r   r   r   r   r   stater$   payloadr%   r&   r(   account_summary   s:   


r8   devicesc           
   
        t | |||||||d t| }|  dd td fdd jdD }	|jr/||	 dS |jt	d	g d
dd |	D  dS )z1List devices associated with the account profile.r!   c                 S     g | ]}t |qS r%   )r   .0devicer%   r%   r(   
<listcomp>a       z#account_devices.<locals>.<listcomp>r"   c                         j jS r#   )r$   r9   r%   r&   r%   r(   r)   e       z!account_devices.<locals>.<lambda>r*   NzAccount Devices)NameModelzDevice ClassIDc                 S  (   g | ]}|d  |d |d |d fqS )namemodel_display_namedevice_classidr%   r<   r%   r%   r(   r?   p       
r   r   r1   r   r+   r2   r3   r4   r5   r   
r   r   r   r   r   r   r   r   r6   r7   r%   r&   r(   account_devicesH   >   


rN   familyc           
   
     r:   )zList family sharing members.r!   c                 S  r;   r%   )r   r=   memberr%   r%   r(   r?      r@   z"account_family.<locals>.<listcomp>r"   c                     rA   r#   )r$   rP   r%   r&   r%   r(   r)      rB   z account_family.<locals>.<lambda>r*   NzFamily Members)rC   zApple IDAgeParentc                 S  rF   )	full_nameapple_idage_classificationhas_parental_privilegesr%   rQ   r%   r%   r(   r?      rK   rL   rM   r%   r&   r(   account_family}   rO   rY   storagec           
   
     s   t | |||||||d t| }|  ttd fdd jd}	|jr,||	 dS |j	d|	d d	  d
|	d d  d |j	t
dg ddd |	d  D  dS )zShow iCloud storage usage.r!   r"   c                     rA   r#   )r$   rZ   r%   r&   r%   r(   r)      rB   z!account_storage.<locals>.<lambda>r*   NzUsed usageused_storage_in_percentz% of total_storage_in_bytesz bytes.zStorage Usage)MediazUsage (bytes)Labelc                 S  s"   g | ]\}}||d  |d fqS )usage_in_byteslabelr%   )r=   keyr[   r%   r%   r(   r?      s    z#account_storage.<locals>.<listcomp>usages_by_media)r   r   r1   r   r   r+   r2   r3   r4   r5   r   itemsrM   r%   r&   r(   account_storage   sD   



re   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    ) __doc__
__future__r   typerpyicloud.cli.contextr   r   pyicloud.cli.normalizer   r   r   r   pyicloud.cli.optionsr	   r
   r   r   r   r   r   r   r   r   pyicloud.cli.outputr   Typerappcommandr8   rN   rY   re   r%   r%   r%   r(   <module>   sX    0(44