
    Dji                     t    d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	  G d de          Z
 G d d	          Zd
S )zContacts service.    )AnyOptional)Response)BaseService)PyiCloudSessionc                        e Zd ZdZdededeeef         ddf fdZddZ	e
deeeef                  dz  fd	            Ze
dd            Z xZS )ContactsServicezQ
    The 'Contacts' iCloud service, connects to iCloud and returns contacts.
    service_rootsessionparamsreturnNc                     t                                          |||           | j         d| _        | j         d| _        | j         d| _        | j         d| _        | j         d| _        d | _        d S )Nz/coz/startupz	/contactsz
/changesetz/mecard)	super__init__r
   _contacts_endpoint_contacts_refresh_url_contacts_next_url_contacts_changeset_url_contacts_me_card_url	_contacts)selfr
   r   r   	__class__s       U/home/thesage/.hermes/venv/lib/python3.11/site-packages/pyicloud/services/contacts.pyr   zContactsService.__init__   s     	w777*.*;'@'@'@-1-D*N*N*N"*.*A'L'L'L/3/F,R,R,R$-1-D*M*M*M"9=    c                    t          | j                  }|                    ddddd           | j                            | j        |          }|                                }t          |          }|                    |d         |d         ddd	           | j                            | j        |          }|                                }|                    d
          | _        dS )zp
        Refreshes the ContactsService endpoint, ensuring that the
        contacts data is up-to-date.
        en_USz
last,firstT)localeorderincludePhoneNumbersincludePhotosr   	prefToken	syncToken0)r"   r#   limitoffsetcontactsN)	dictr   updater   getr   jsonr   r   )r   params_contactsreqresponseparams_nexts        r   refresh_clientzContactsService.refresh_client   s    
 +/t{*;*;!%'+!%	 	
 	
 	
 ((& ) 
 
 $'88::&*?&;&;%k2%k2	 	
 	
 	
 lt6{KK88::!j11r   c                 8    |                                   | j        S )z)
        Retrieves all contacts.
        )r0   r   r   s    r   allzContactsService.all<   s    
 	~r   MeCardc                     t          | j                  }| j                            | j        |          }|                                }t          |          S )z?
        Retrieves the user's own contact information.
        r!   )r(   r   r   r*   r   r+   r4   )r   r,   r-   r.   s       r   mezContactsService.meD   sT    
 t{++((& ) 
 
 88::hr   )r   N)r   r4   )__name__
__module____qualname____doc__strr   r(   r   r   r0   propertylistr3   r6   __classcell__)r   s   @r   r	   r	      s         
>
>*9
>CGS>
>	
> 
> 
> 
> 
> 
>2 2 2 2@ T$sCx.)D0    X 	  	  	  X	  	  	  	  	 r   r	   c                       e Zd ZdZdeeef         ddfdZedefd            Z	edefd            Z
ed             Zdefd	Zdefd
Zedeeef         fd            ZdS )r4   zK
    The 'MeCard' class represents the user's own contact information.
    datar   Nc                     || _         |                    d          }t          |t                    r*t          |d         t                    r|d         | _        d S t          d          )Nr'   r   zcontacts not found in data)_datar*   
isinstancer=   r(   _contactKeyError)r   r@   r'   s      r   r   zMeCard.__init__V   s_    %)
88J''h%% 	9*Xa[$*G*G 	9,4QKDMMM7888r   c                     | j         d         S )z(
        The user's first name.
        	firstNamerD   r2   s    r   
first_namezMeCard.first_name^   s    
 }[))r   c                     | j         d         S )z'
        The user's last name.
        lastNamerH   r2   s    r   	last_namezMeCard.last_namee   s    
 }Z((r   c                     | j         d         S )z#
        The user's photo.
        photorH   r2   s    r   rN   zMeCard.photol   s    
 }W%%r   c                 $    | j          d| j         S )N rI   rL   r2   s    r   __str__zMeCard.__str__s   s    /44DN444r   c                 (    d| j          d| j         dS )Nz<MeCard(-z)>rQ   r2   s    r   __repr__zMeCard.__repr__v   s    >$/>>DN>>>>r   c                     | j         S )z-
        The raw data of the mecard.
        )rB   r2   s    r   raw_datazMeCard.raw_datay   s    
 zr   )r7   r8   r9   r:   r(   r;   r   r   r<   rI   rL   rN   rR   rU   rW    r   r   r4   r4   Q   s        9T#s(^ 9 9 9 9 9 *C * * * X* )3 ) ) ) X) & & X&5 5 5 5 5?# ? ? ? ? $sCx.    X  r   r4   N)r:   typingr   r   requestsr   pyicloud.services.baser   pyicloud.sessionr   r	   r4   rX   r   r   <module>r]      s                            . . . . . . , , , , , ,C  C  C  C  C k C  C  C L- - - - - - - - - -r   