
    Djg                     ^    d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
  G d de          ZdS )	zHide my email service.    )Any	GeneratorOptional)Response)BaseService)PyiCloudSessionc                   d    e Zd ZdZdededeeef         ddf fdZde	e         fdZ
dd
ededeeef         fdZdefdZdeeedf         fdZdedeeef         fdZ	 ddedede	e         deeef         fdZdedeeef         fdZdedeeef         fdZdedeeef         fdZ xZS )HideMyEmailServiceal  
    The 'Hide My Email' iCloud service connects to iCloud and manages email aliases.

    This service allows users to:
    - Generate new email aliases
    - Reserve specific aliases
    - List all existing aliases
    - Get alias details by ID
    - Update alias metadata (label, note)
    - Delete aliases
    - Deactivate aliases
    - Reactivate aliases
    service_rootsessionparamsreturnNc                 f   t                                          |||           | d| _        | j         d| _        | j         d| _        | j         d| _        | j         d| _        | j         d| _        | j         d| _        | d| _	        | j	         d	| _
        | j	         d
| _        d S )Nz/v1/hmez	/generatez/reservez/updateMetaDataz/deletez/deactivatez/reactivatez/v2/hmez/listz/get)super__init___v1_endpoint_generate_endpoint_reserve_endpoint_update_metadata_endpoint_delete_endpoint_deactivate_endpoint_reactivate_endpoint_v2_endpoint_list_endpoint_get_endpoint)selfr   r   r   	__class__s       X/home/thesage/.hermes/venv/lib/python3.11/site-packages/pyicloud/services/hidemyemail.pyr   zHideMyEmailService.__init__   s     	w777 %1!9!9!9*.*;'F'F'F)-):&D&D&D151B.S.S.S&(,(9%B%B%B,0,=)J)J)J!,0,=)J)J)J! %1!9!9!9&*&7#>#>#>%)%6"<"<"<    c                     | j                             | j        | j                  }|                                }|                    d          }|r|                    d          S dS )z
        Generate a new email alias.

        Returns:
            The generated email address string or None if generation failed.
        r   resulthmeN)r   postr   r   jsongetr   reqresponser"   s       r   generatezHideMyEmailService.generate-   s`     ))$*A$+)VV.1hhjj+3<<+A+A 	%::e$$$tr   	Generatedemaillabelc                     | j                             | j        | j        |||d          }|                                }|                    di           S )a0  
        Reserve an alias for emails.

        Args:
            email: The email alias to reserve.
            label: A label for the email alias.
            note: An optional note for the email alias.

        Returns:
            The API's result containing details about the reserved alias.
        )r#   r-   noter   r%   r"   )r   r$   r   r   r%   r&   )r   r,   r-   r/   r(   r)   s         r   reservezHideMyEmailService.reserve;   sa     ))";  * 
 
 88::||Hb)))r   c                     | j                             | j        | j                  }|                                }|                    d          }|r#t          |                    dg                     S dS )z*
        Get the number of emails
        r!   r"   	hmeEmailsr   )r   r&   r   r   r%   lenr'   s       r   __len__zHideMyEmailService.__len__S   sj     (()<T[(QQ.1hhjj+3<<+A+A 	4vzz+r22333qr   c              #      K   | j                             | j        | j                  }|                                }|                    d          }|r|                    dg           E d{V  dS dS )z1
        Iterate over the list of emails
        r!   r"   r3   N)r   r&   r   r   r%   r'   s       r   __iter__zHideMyEmailService.__iter__^   s       (()<T[(QQ.1hhjj+3<<+A+A 	3zz+r22222222222	3 	3r   anonymous_idc                     | j                             | j        | j        d|i          }|                                }|                    di           S )z
        Get alias email details by anonymous_id.

        Args:
            anonymous_id: The unique identifier for the alias.

        Returns:
            A dictionary containing details about the alias.
        anonymousIdr0   r"   )r   r$   r   r   r%   r&   r   r8   r(   r)   s       r   __getitem__zHideMyEmailService.__getitem__h   sV     ));. * 
 

 88::||Hb)))r   r/   c                     ||d}|||d<   | j                             | j        | j        |          }|                                }|                    di           S )a4  
        Update metadata for an alias email.

        Args:
            anonymous_id: The unique identifier for the alias.
            label: The new label for the alias.
            note: The new note for the alias (optional).

        Returns:
            A dictionary containing the API response.
        )r:   r-   Nr/   r0   r"   )r   r$   r   r   r%   r&   )r   r8   r-   r/   payloadr(   r)   s          r   update_metadataz"HideMyEmailService.update_metadataz   st     (#
 #
 "GFO))*; * 
 

 88::||Hb)))r   c                     | j                             | j        | j        d|i          }|                                }|                    di           S )z
        Delete an alias email.

        Args:
            anonymous_id: The unique identifier for the alias to delete.

        Returns:
            A dictionary containing the API response.
        r:   r0   r"   )r   r$   r   r   r%   r&   r;   s       r   deletezHideMyEmailService.delete   sV     ))!;. * 
 

 88::||Hb)))r   c                     | j                             | j        | j        d|i          }|                                }|                    di           S )am  
        Deactivate an alias email.

        Deactivating an alias means emails sent to it will no longer be forwarded,
        but the alias remains in your list and can be reactivated later.

        Args:
            anonymous_id: The unique identifier for the alias to deactivate.

        Returns:
            A dictionary containing the API response.
        r:   r0   r"   )r   r$   r   r   r%   r&   r;   s       r   
deactivatezHideMyEmailService.deactivate   V     ))%;. * 
 

 88::||Hb)))r   c                     | j                             | j        | j        d|i          }|                                }|                    di           S )aT  
        Reactivate a previously deactivated alias email.

        Reactivating an alias means emails sent to it will be forwarded again
        to your primary inbox.

        Args:
            anonymous_id: The unique identifier for the alias to reactivate.

        Returns:
            A dictionary containing the API response.
        r:   r0   r"   )r   r$   r   r   r%   r&   r;   s       r   
reactivatezHideMyEmailService.reactivate   rD   r   )r+   )N)__name__
__module____qualname____doc__strr   dictr   r   r   r*   r1   intr5   r   r7   r<   r?   rA   rC   rF   __classcell__)r   s   @r   r
   r
      s        ==*9=CGS>=	= = = = = =&(3-    * *S * *4S> * * * *0	 	 	 	 	3)CdN3 3 3 3 3* *S#X * * * *& DH* **(+*3;C=*	c3h* * * *:*3 *4S> * * * *$*s *tCH~ * * * ***s *tCH~ * * * * * * * *r   r
   N)rJ   typingr   r   r   requestsr   pyicloud.services.baser   pyicloud.sessionr   r
    r   r   <module>rT      s      + + + + + + + + + +       . . . . . . , , , , , ,F* F* F* F* F* F* F* F* F* F*r   