o
    Òó·iw  ã                   @   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   úUC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-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   ÚreplaceZ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 )NZmaildirfolder)r   r   Úisdirr	   r   Úisfiler   r   r   r   r0   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_getCurMessager1   Úremote_getSubFolderr0   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   r9   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	   r:   r   r   r   r   r1   Y   s   zMaildirCollection.getSubFolderN)r4   r5   r6   r   r;   Zremote_getSubFoldersr1   r7   r   r   r   r   r8   P   s    r8   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)Z_getCollectionZ	sendErrorZ
sendAnswer)r   Ú	requestIDr   ÚdomainÚpasswordZ
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Údbmr8   ZuserDirectory)r   r   r>   r?   r   r   r   ÚgetCollectioni   s   

ÿzMaildirBroker.getCollectionN)r4   r5   r6   r@   rC   r   r   r   r   r<   a   s    r<   c                   @   s   e Zd Zdd„ ZdS )ÚMaildirClientc                 C   s,   |   ¡ }||f| j|< |  d||||¡ d S )NrC   )ZnewRequestIDZwaitingForAnswersZsendCall)r   r   r>   r?   ÚcallbackZerrbackr=   r   r   r   rC   r   s   zMaildirClient.getCollectionN)r4   r5   r6   rC   r   r   r   r   rD   q   s    rD   )	r   Ztwisted.spreadr   ZReferenceabler   r8   ZBrokerr<   rD   r   r   r   r   Ú<module>   s   F