U
    ª€ljw  ã                   @   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   ú3/tmp/pip-unpacked-wheel-aghyhbke/twisted/mail/pb.pyÚ__init__   s    zMaildir.__init__c              
   C   sJ   d|krt d| ƒ‚ttj | jd|¡ƒ�}| ¡ W  5 Q R £ S Q R X 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|k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   s   |   d|¡S ©Nr   ©r   ©r   r   r   r   r   ÚdeleteNewMessage   s    zMaildir.deleteNewMessagec                 C   s   |   d|¡S ©NÚcurr   r   r   r   r   ÚdeleteCurMessage#   s    zMaildir.deleteCurMessagec                 C   s   t  t j | jd¡¡S r   ©r   Úlistdirr   r	   r
   ©r   r   r   r   ÚgetNewMessages(   s    zMaildir.getNewMessagesc                 C   s   t  t j | jd¡¡S r   r!   r#   r   r   r   ÚgetCurMessages-   s    zMaildir.getCurMessagesc                 C   s   |   d|¡S r   ©r   r   r   r   r   ÚgetNewMessage2   s    zMaildir.getNewMessagec                 C   s   |   d|¡S r   r&   r   r   r   r   ÚgetCurMessage7   s    zMaildir.getCurMessagec                 C   s`   |d dkrt dƒ‚| dd¡}| jdkr4d| }n| jd | }|  |¡sTt dƒ‚t|| jƒS )Nr   Ú.z&subfolder name cannot begin with a '.'r   ú:znot a subfolder)r   ÚreplaceZvirtualDirectoyr   Ú_isSubFolderr   r   r   r   r   r   ÚgetSubFolder<   s    


zMaildir.getSubFolderc                 C   s6   t j t j | j|¡¡ p4t j t j | j|d¡¡ S )NZmaildirfolder)r   r   Úisdirr	   r   Úisfiler   r   r   r   r,   J   s
    ÿþzMaildir._isSubFolderN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Zremote_deleteNewMessager    Zremote_deleteCurMessager$   Zremote_getNewMessagesr%   Zremote_getCurMessagesr'   Zremote_getNewMessager(   Zremote_getCurMessager-   Úremote_getSubFolderr,   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   r5   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|ks|d dkrt dƒ‚tdtj |  ¡ |¡ƒS )Nr   r   r)   zinvalid name)r   r   r   r   r	   r6   r   r   r   r   r-   Y   s    zMaildirCollection.getSubFolderN)r0   r1   r2   r   r7   Zremote_getSubFoldersr-   r3   r   r   r   r   r4   P   s
   r4   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMaildirBrokerc                 C   s.   |   ¡ }|d kr|  |d¡ n|  ||¡ d S )Nzpermission denied)Z_getCollectionZ	sendErrorZ
sendAnswer)r   Ú	requestIDr   ÚdomainÚpasswordZ
collectionr   r   r   Úproto_getCollectionb   s    z!MaildirBroker.proto_getCollectionc                 C   sB   || j krd S | j | }||jkr>|j| |kr>t| |¡ƒS d S r   )ÚdomainsÚdbmr4   ZuserDirectory)r   r   r:   r;   r   r   r   ÚgetCollectioni   s
    

zMaildirBroker.getCollectionN)r0   r1   r2   r<   r?   r   r   r   r   r8   a   s   r8   c                   @   s   e Zd Zdd„ ZdS )ÚMaildirClientc                 C   s,   |   ¡ }||f| j|< |  d||||¡ d S )Nr?   )ZnewRequestIDZwaitingForAnswersZsendCall)r   r   r:   r;   ÚcallbackZerrbackr9   r   r   r   r?   r   s    zMaildirClient.getCollectionN)r0   r1   r2   r?   r   r   r   r   r@   q   s   r@   )	r   Ztwisted.spreadr   ZReferenceabler   r4   ZBrokerr8   r@   r   r   r   r   Ú<module>   s
   F