
    Dj+                         d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ dZ G d d	e          Z G d
 de          Z G d d          Z G d d          Z G d d          Z G d d          ZdS )zAccount service.    )AnyOptional)Response)BaseService)PyiCloudSessionunderscore_to_camelcase20288408776c            
            e Zd ZdZdedededeeef         ddf
 fdZ	e
ded	         fd
            Ze
ded         fd            Ze
dd            Ze
d             ZdefdZdefdZ xZS )AccountServicezThe 'Account' iCloud service.service_rootsessionchina_mainlandparamsreturnNc                    t                                          |||           g | _        g | _        d | _        | j         d| _        | j         d| _        | j         d| _        | j         d| _	        | j         d| _
        d|sdnd | _        | j         d	| _        | j                            d
t                    }| j         d| d| _        | j         d| d| _        d S )Nz
/setup/webz/device/getDevicesz/family/getFamilyDetailsz/family/getMemberPhotoz/setup/ws/1/storageUsageInfozhttps://gatewayws.icloud.com z.cnz/acsegatewaydsidz/v1/accounts/z/plans/icloud/pricingz/v3/accounts/z2/subscriptions/features/cloud.storage/plan-summary)super__init___devices_family_storager   _acc_endpoint_acc_devices_url_acc_family_details_url_acc_family_member_photo_url_acc_storage_url_gateway_gateway_rootr   getDEFAULT_DSID_gateway_pricing_url_gateway_summary_plan_url)selfr   r   r   r   r   	__class__s         T/home/thesage/.hermes/venv/lib/python3.11/site-packages/pyicloud/services/account.pyr   zAccountService.__init__   s<    	w777/1-/26%)%6"B"B"B(,(:%N%N%N!;;; 	$ !999 	) )-(9%W%W%W Q^+N22PP 	 &*]"@"@"@KOOFL99!KKKKK 	! ! 3 3 3 3 3 	&&&    AccountDevicec                     | j         sl| j                            | j        | j                  }|                                }|d         D ])}| j                             t          |                     *| j         S )zReturns current paired devices.r   devices)r   r   r!   r   r   jsonappendr)   )r%   reqresponsedevice_infos       r'   r,   zAccountService.devices5   sz     } 	A L,,T-B4;,WWCxxzzH'	2 A A$$];%?%?@@@@}r(   FamilyMemberc           	      6   | j         s| j                            | j        | j                  }|                                }|                    dg           D ];}| j                             t          || j        | j        | j                             <| j         S )zReturns family members.r+   familyMembers)	r   r   r!   r   r   r-   r.   r2   r   )r%   r/   r0   member_infos       r'   familyzAccountService.familyA   s     | 	 L,,,T[ -  C xxzzH'||OR@@  ## #9	     |r(   AccountStoragec                     | j         sN| j                            | j        | j                  }|                                }t          |          | _         | j         S )zReturns storage infos.r+   )r   r   postr   r   r-   r7   r%   r/   r0   s      r'   storagezAccountService.storageV   sQ     } 	5 L--d.CDK-XXCxxzzH*844DM}r(   c                 z    | j                             | j        | j                  }|                                }|S )zReturns your subscription plan.r+   )r   r!   r$   r   r-   r:   s      r'   summary_planzAccountService.summary_plana   s>     ((*4; ) 
 
 88::r(   c                     dt          | j                   dt          | j                   d| j        j        j         dS )Nz
{devices: z
, family: z, storage: z bytes free})lenr,   r6   r;   usageavailable_storage_in_bytesr%   s    r'   __str__zAccountService.__str__j   sZ    U#dl++ U Us4;7G7G U U*EU U U	
r(   c                 8    dt          |           j         d|  dS N<z: >type__name__rB   s    r'   __repr__zAccountService.__repr__p   $    14::&11$1111r(   )r   r7   )rJ   
__module____qualname____doc__strr   booldictr   r   propertylistr,   r6   r;   r=   rC   rK   __classcell__)r&   s   @r'   r   r      sE       ''"
"
 !"
 	"

 S#X"
 
"
 "
 "
 "
 "
 "
H 	o. 	 	 	 X	 ^,    X(    X   X
 
 
 
 
2# 2 2 2 2 2 2 2 2r(   r   c                   6    e Zd ZdZdefdZdefdZdefdZdS )r)   zAccount device.keyc                 ,    | t          |                   S Nr   r%   rW   s     r'   __getattr__zAccountDevice.__getattr__w   s    +C0011r(   r   c                 (    d| j          d| j         dS )Nz{model: z, name: })model_display_namenamerB   s    r'   rC   zAccountDevice.__str__z   s     I42IIDIIIIIr(   c                 8    dt          |           j         d|  dS rE   rH   rB   s    r'   rK   zAccountDevice.__repr__}   rL   r(   N)rJ   rM   rN   rO   rP   r[   rC   rK    r(   r'   r)   r)   t   sp        2s 2 2 2 2J J J J J2# 2 2 2 2 2 2r(   r)   c            
       V   e Zd ZdZdeeef         dedeeef         deddf
dZe	de
e         fd	            Ze	de
e         fd
            Ze	de
e         fd            Ze	de
e         fd            Ze	d             Ze	de
e         fd            Ze	de
e         fd            Ze	d             Ze	de
e         fd            Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             ZdefdZd ZdefdZdefdZdS )r2   zA family member.r5   r   r   acc_family_member_photo_urlr   Nc                 >    || _         || _        || _        || _        d S rY   )_attrs_session_paramsr   )r%   r5   r   r   rc   s        r'   r   zFamilyMember.__init__   s'     '2)0'-1L)))r(   c                 6    | j                             d          S )zGets the last name.lastNamere   r!   rB   s    r'   	last_namezFamilyMember.last_name        {z***r(   c                 6    | j                             d          S )zGets the dsid.r   rj   rB   s    r'   r   zFamilyMember.dsid   s     {v&&&r(   c                 6    | j                             d          S )zGets the original invitation.originalInvitationEmailrj   rB   s    r'   original_invitation_emailz&FamilyMember.original_invitation_email   s     {8999r(   c                 6    | j                             d          S )zGets the full name.fullNamerj   rB   s    r'   	full_namezFamilyMember.full_name   rl   r(   c                 6    | j                             d          S )zGets the age classification.ageClassificationrj   rB   s    r'   age_classificationzFamilyMember.age_classification   s     {2333r(   c                 6    | j                             d          S )z Gets the apple id for purchases.appleIdForPurchasesrj   rB   s    r'   apple_id_for_purchasesz#FamilyMember.apple_id_for_purchases   s     {4555r(   c                 6    | j                             d          S )zGets the apple id.appleIdrj   rB   s    r'   apple_idzFamilyMember.apple_id   s     {y)))r(   c                 6    | j                             d          S )zGets the family id.familyIdrj   rB   s    r'   	family_idzFamilyMember.family_id   rl   r(   c                 6    | j                             d          S )zGets the first name.	firstNamerj   rB   s    r'   
first_namezFamilyMember.first_name   s     {{+++r(   c                 6    | j                             d          S )zHas parental privileges.hasParentalPrivilegesrj   rB   s    r'   has_parental_privilegesz$FamilyMember.has_parental_privileges   s     {6777r(   c                 6    | j                             d          S )zHas screen time enabled.hasScreenTimeEnabledrj   rB   s    r'   has_screen_time_enabledz$FamilyMember.has_screen_time_enabled   s     {5666r(   c                 6    | j                             d          S )zHas to ask for buying.hasAskToBuyEnabledrj   rB   s    r'   has_ask_to_buy_enabledz#FamilyMember.has_ask_to_buy_enabled   s     {3444r(   c                 6    | j                             d          S )zHas share purshases.hasSharePurchasesEnabledrj   rB   s    r'   has_share_purchases_enabledz(FamilyMember.has_share_purchases_enabled   s     {9:::r(   c                 6    | j                             d          S )z"Has share my location with family.#shareMyLocationEnabledFamilyMembersrj   rB   s    r'   (share_my_location_enabled_family_membersz5FamilyMember.share_my_location_enabled_family_members   s     {DEEEr(   c                 6    | j                             d          S )zHas share my location.hasShareMyLocationEnabledrj   rB   s    r'   has_share_my_location_enabledz*FamilyMember.has_share_my_location_enabled   s     {:;;;r(   c                 6    | j                             d          S )zGets the dsid for purchases.dsidForPurchasesrj   rB   s    r'   dsid_for_purchaseszFamilyMember.dsid_for_purchases   s     {1222r(   c                     t          | j                  }|                    d| j        i           | j                            | j        |d          S )zReturns the photo.memberIdT)r   stream)rR   rg   updater   rf   r!   r   )r%   params_photos     r'   	get_photozFamilyMember.get_photo   sU    DL))Z3444}  -l4 ! 
 
 	
r(   c                 p    | j                             |          r| j         |         S t          | |          S rY   )re   r!   getattrrZ   s     r'   __getitem__zFamilyMember.__getitem__   s5    ;??3 	$;s##tS!!!r(   c                 (    d| j          d| j         dS )Nz{name: z, age_classification: r]   )rs   rv   rB   s    r'   rC   zFamilyMember.__str__   s"    Xt~XXT=TXXX	
r(   c                 8    dt          |           j         d|  dS rE   rH   rB   s    r'   rK   zFamilyMember.__repr__   rL   r(   ) rJ   rM   rN   rO   rR   rP   r   r   r   rS   r   rk   r   rp   rs   rv   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   rC   rK   ra   r(   r'   r2   r2      s       
M#s(^
M !
M S#X	
M
 &)
M 

M 
M 
M 
M +8C= + + + X+ 'hsm ' ' ' X' :8C= : : : X: +8C= + + + X+ 4 4 X4 6 6 6 6 X6 *(3- * * * X* + + X+ ,HSM , , , X, 8 8 X8 7 7 X7 5 5 X5 ; ; X; F F XF < < X< 3 3 X3
8 
 
 
 
" " "

 
 
 
 

2# 2 2 2 2 2 2r(   r2   c                       e Zd ZdZddZed             Zed             Zed             Zed             Z	de
fd	Zde
fd
ZdS )AccountStorageUsageForMedia8Storage used for a specific media type into the account.r   Nc                     || _         d S rY   
usage_data)r%   r   s     r'   r   z$AccountStorageUsageForMedia.__init__   s    *4r(   c                     | j         d         S )zGets the key.mediaKeyr   rB   s    r'   rW   zAccountStorageUsageForMedia.key   s     z**r(   c                     | j         d         S )zGets the label.displayLabelr   rB   s    r'   labelz!AccountStorageUsageForMedia.label       ~..r(   c                     | j         d         S )zGets the HEX color.displayColorr   rB   s    r'   colorz!AccountStorageUsageForMedia.color  r   r(   c                     | j         d         S )zGets the usage in bytes.usageInBytesr   rB   s    r'   usage_in_bytesz*AccountStorageUsageForMedia.usage_in_bytes  r   r(   c                 (    d| j          d| j         dS )Nz{key: z	, usage: z bytes})rW   r   rB   s    r'   rC   z#AccountStorageUsageForMedia.__str__  s     IIID,?IIIIr(   c                 8    dt          |           j         d|  dS rE   rH   rB   s    r'   rK   z$AccountStorageUsageForMedia.__repr__  rL   r(   r   N)rJ   rM   rN   rO   r   rS   rW   r   r   r   rP   rC   rK   ra   r(   r'   r   r      s        BB5 5 5 5 + + X+ / / X/ / / X/ / / X/J J J J J2# 2 2 2 2 2 2r(   r   c                   $   e Zd ZdZddZed             Zed             Zed             Zed             Z	ed	             Z
ed
             Zed             Zed             Zed             Zed             Zed             ZdefdZdefdZdS )AccountStorageUsager   r   Nc                 "    || _         || _        d S rY   )r   
quota_data)r%   r   r   s      r'   r   zAccountStorageUsage.__init__  s    *4*4r(   c                     | j         d         S )zGets the comp storage in bytes.compStorageInBytesr   rB   s    r'   comp_storage_in_bytesz)AccountStorageUsage.comp_storage_in_bytes       344r(   c                     | j         d         S )zGets the used storage in bytes.usedStorageInBytesr   rB   s    r'   used_storage_in_bytesz)AccountStorageUsage.used_storage_in_bytes#  r   r(   c                 B    t          | j        dz  | j        z  d          S )z!Gets the used storage in percent.d      )roundr   total_storage_in_bytesrB   s    r'   used_storage_in_percentz+AccountStorageUsage.used_storage_in_percent(  s%     T/#58SSUVWWWr(   c                      | j         | j        z
  S )z$Gets the available storage in bytes.)r   r   rB   s    r'   rA   z.AccountStorageUsage.available_storage_in_bytes-  s     *T-GGGr(   c                 B    t          | j        dz  | j        z  d          S )z&Gets the available storage in percent.r   r   )r   rA   r   rB   s    r'   available_storage_in_percentz0AccountStorageUsage.available_storage_in_percent2  s,     +c1D4OOQR
 
 	
r(   c                     | j         d         S )z Gets the total storage in bytes.totalStorageInBytesr   rB   s    r'   r   z*AccountStorageUsage.total_storage_in_bytes9  s     455r(   c                     | j         d         S )z#Gets the commerce storage in bytes.commerceStorageInBytesr   rB   s    r'   commerce_storage_in_bytesz-AccountStorageUsage.commerce_storage_in_bytes>  s     788r(   c                     | j         d         S )zGets the over quota.	overQuotar   rB   s    r'   
quota_overzAccountStorageUsage.quota_overC       {++r(   c                     | j         d         S )zGets the max tier quota.haveMaxQuotaTierr   rB   s    r'   quota_tier_maxz"AccountStorageUsage.quota_tier_maxH  s     122r(   c                     | j         d         S )zGets the almost full quota.zalmost-fullr   rB   s    r'   quota_almost_fullz%AccountStorageUsage.quota_almost_fullM  s     }--r(   c                     | j         d         S )zGets the paid quota.	paidQuotar   rB   s    r'   
quota_paidzAccountStorageUsage.quota_paidR  r   r(   c                 &    | j          d| j         dS )Nz
% used of z bytes)r   r   rB   s    r'   rC   zAccountStorageUsage.__str__W  s    .]]$:U]]]]r(   c                 8    dt          |           j         d|  dS rE   rH   rB   s    r'   rK   zAccountStorageUsage.__repr__Z  rL   r(   r   )rJ   rM   rN   rO   r   rS   r   r   r   rA   r   r   r   r   r   r   r   rP   rC   rK   ra   r(   r'   r   r     s       BB5 5 5 5 5 5 X5 5 5 X5 X X XX H H XH 
 
 X
 6 6 X6 9 9 X9 , , X, 3 3 X3 . . X. , , X,^ ^ ^ ^ ^2# 2 2 2 2 2 2r(   r   c                   2    e Zd ZdZddZdefdZdefdZdS )r7   zStorage of the account.r   Nc                     t          |                    d          |                    d                    | _        i | _        |                    d          D ]}t	          |          | j        |d         <    d S )NstorageUsageInfoquotaStatusstorageUsageByMediar   )r   r!   r@   usages_by_mediar   )r%   storage_datausage_medias      r'   r   zAccountStorage.__init__a  s    (/00,2B2B=2Q2Q
 

 HJ'++,ABB 	 	K<W= =D Z!899	 	r(   c                 (    d| j          d| j         dS )Nz{usage: z, usages_by_media: r]   )r@   r   rB   s    r'   rC   zAccountStorage.__str__l  s     R4:RR$:NRRRRr(   c                 8    dt          |           j         d|  dS rE   rH   rB   s    r'   rK   zAccountStorage.__repr__o  rL   r(   r   )rJ   rM   rN   rO   r   rP   rC   rK   ra   r(   r'   r7   r7   ^  si        !!	 	 	 	S S S S S2# 2 2 2 2 2 2r(   r7   N)rO   typingr   r   requestsr   pyicloud.services.baser   pyicloud.sessionr   pyicloud.utilsr	   r"   r   rR   r)   r2   r   r   r7   ra   r(   r'   <module>r      s                           . . . . . . , , , , , , 2 2 2 2 2 2c2 c2 c2 c2 c2[ c2 c2 c2L
2 
2 
2 
2 
2D 
2 
2 
2r2 r2 r2 r2 r2 r2 r2 r2j2 2 2 2 2 2 2 2BD2 D2 D2 D2 D2 D2 D2 D2N2 2 2 2 2 2 2 2 2 2r(   