o
    bw                     @   s`   d dl Z d dlmZ G dd dejZG dd dejZG dd dejZG d	d
 d
ejZdS )    N)pbc                   @   s   e Zd Zdd Zdd Zdd Zdd ZeZd	d
 ZeZ	dd Z
e
Zdd ZeZdd ZeZdd ZeZdd ZeZdd ZdS )Maildirc                 C   s    || _ || _tj||| _d S N)virtualDirectoryrootDirectoryospathjoin	directory)selfr
   r    r   1/usr/lib/python3/dist-packages/twisted/mail/pb.py__init__   s   zMaildir.__init__c                 C   sV   d|v r
t d| ttj| jd|}| W  d    S 1 s$w   Y  d S )N/z&can only open files in '%s' directory'new)OSErroropenr   r   r	   r
   read)r   foldernamefpr   r   r   getFolderMessage   s
   $zMaildir.getFolderMessagec              	   C   sB   d|v r
t d| ttj| j||tj| jd|| d S )Nr   z(can only delete files in '%s' directory'z.Trash)r   r   renamer   r	   r
   r   )r   r   r   r   r   r   deleteFolderMessage   s   zMaildir.deleteFolderMessagec                 C      |  d|S Nr   r   r   r   r   r   r   deleteNewMessage      zMaildir.deleteNewMessagec                 C   r   Ncurr   r   r   r   r   deleteCurMessage#   r   zMaildir.deleteCurMessagec                 C      t t j| jdS r   r   listdirr   r	   r
   r   r   r   r   getNewMessages(      zMaildir.getNewMessagesc                 C   r#   r    r$   r&   r   r   r   getCurMessages-   r(   zMaildir.getCurMessagesc                 C   r   r   r   r   r   r   r   getNewMessage2   r   zMaildir.getNewMessagec                 C   r   r    r*   r   r   r   r   getCurMessage7   r   zMaildir.getCurMessagec                 C   s`   |d dkr
t d|dd}| jdkrd| }n| jd | }| |s*t dt|| jS )Nr   .z&subfolder name cannot begin with a '.'r   :znot a subfolder)r   replacevirtualDirectoyr   _isSubFolderr   r   r   r   r   r   getSubFolder<   s   


zMaildir.getSubFolderc                 C   s6   t jt j| j| pt jt j| j|d S )Nmaildirfolder)r   r   isdirr	   r   isfiler   r   r   r   r1   J   s
   zMaildir._isSubFolderN)__name__
__module____qualname__r   r   r   r   remote_deleteNewMessager"   remote_deleteCurMessager'   remote_getNewMessagesr)   remote_getCurMessagesr+   remote_getNewMessager,   remote_getCurMessager2   remote_getSubFolderr1   r   r   r   r   r   
   s&    r   c                   @   s,   e Zd Zdd Zdd ZeZdd ZeZdS )MaildirCollectionc                 C   s
   || _ d S r   )root)r   rA   r   r   r   r   Q   s   
zMaildirCollection.__init__c                 C   s   t |  S r   )r   r%   getRootr&   r   r   r   getSubFoldersT   s   zMaildirCollection.getSubFoldersc                 C   s4   d|v s
|d dkrt dtdtj|  |S )Nr   r   r-   zinvalid name)r   r   r   r   r	   rB   r   r   r   r   r2   Y   s   zMaildirCollection.getSubFolderN)r6   r7   r8   r   rC   remote_getSubFoldersr2   r?   r   r   r   r   r@   P   s    r@   c                   @   s   e Zd Zdd Zdd ZdS )MaildirBrokerc                 C   s0   |   }|d u r| |d d S | || d S )Nzpermission denied)_getCollection	sendError
sendAnswer)r   	requestIDr   domainpassword
collectionr   r   r   proto_getCollectionb   s   z!MaildirBroker.proto_getCollectionc                 C   sF   || j vrd S | j | }||jv r|j| |kr!t||S d S d S r   )domainsdbmr@   userDirectory)r   r   rJ   rK   r   r   r   getCollectioni   s   

zMaildirBroker.getCollectionN)r6   r7   r8   rM   rQ   r   r   r   r   rE   a   s    rE   c                   @   s   e Zd Zdd ZdS )MaildirClientc                 C   s,   |   }||f| j|< | d|||| d S )NrQ   )newRequestIDwaitingForAnswerssendCall)r   r   rJ   rK   callbackerrbackrI   r   r   r   rQ   r   s   zMaildirClient.getCollectionN)r6   r7   r8   rQ   r   r   r   r   rR   q   s    rR   )	r   twisted.spreadr   Referenceabler   r@   BrokerrE   rR   r   r   r   r   <module>   s   F