
    Ϫfw                         d dl Z d dlmZ  G d dej                        Z G d dej                        Z G d dej                        Z G d	 d
ej                        Zy)    N)pbc                   j    e Zd Zd Zd Zd Zd ZeZd ZeZ	d Z
e
Zd ZeZd ZeZd	 ZeZd
 ZeZd Zy)Maildirc                 j    || _         || _        t        j                  j	                  ||      | _        y N)virtualDirectoryrootDirectoryospathjoin	directory)selfr   r	   s      1/usr/lib/python3/dist-packages/twisted/mail/pb.py__init__zMaildir.__init__   s(     )*mY?    c                     d|v rt        d|z        t        t        j                  j	                  | j
                  d|            5 }|j                         cd d d        S # 1 sw Y   y xY w)N/z&can only open files in '%s' directory'new)OSErroropenr
   r   r   r   read)r   foldernamefps       r   getFolderMessagezMaildir.getFolderMessage   sW    $;BVKLL"'',,t~~ud;< 	779	 	 	s   A!!A*c           	          d|v rt        d|z        t        j                  t        j                  j	                  | j
                  ||      t        j                  j	                  | j                  d||             y )Nr   z(can only delete files in '%s' directory'z.Trash)r   r
   renamer   r   r   r	   )r   r   r   s      r   deleteFolderMessagezMaildir.deleteFolderMessage   sZ    $;DvMNN
		GGLL6GGLL++XvtD	
r   c                 &    | j                  d|      S Nr   r   r   r   s     r   deleteNewMessagezMaildir.deleteNewMessage       ''t44r   c                 &    | j                  d|      S Ncurr!   r"   s     r   deleteCurMessagezMaildir.deleteCurMessage#   r$   r   c                 |    t        j                  t         j                  j                  | j                  d            S r    r
   listdirr   r   r   r   s    r   getNewMessageszMaildir.getNewMessages(   $    zz"'',,t~~u=>>r   c                 |    t        j                  t         j                  j                  | j                  d            S r&   r*   r,   s    r   getCurMessageszMaildir.getCurMessages-   r.   r   c                 &    | j                  d|      S r    r   r"   s     r   getNewMessagezMaildir.getNewMessage2       $$UD11r   c                 &    | j                  d|      S r&   r2   r"   s     r   getCurMessagezMaildir.getCurMessage7   r4   r   c                     |d   dk(  rt        d      |j                  dd      }| j                  dk(  rd|z   }n| j                  dz   |z   }| j	                  |      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"   s     r   getSubFolderzMaildir.getSubFolder<   s    7c>BCC||C%3&:D((3.5D  &+,,tT//00r   c                 (   t         j                  j                  t         j                  j                  | j                  |             xsI t         j                  j                  t         j                  j                  | j                  |d             S )Nmaildirfolder)r
   r   isdirr   r	   isfiler"   s     r   r<   zMaildir._isSubFolderJ   se    77==GGLL++T2
 
 YT-?-? WXX	Yr   N)__name__
__module____qualname__r   r   r   r#   remote_deleteNewMessager(   remote_deleteCurMessager-   remote_getNewMessagesr0   remote_getCurMessagesr3   remote_getNewMessager6   remote_getCurMessager=   remote_getSubFolderr<    r   r   r   r   
   ss    @

5 /5 /? +? +2 )2 )
1 'Yr   r   c                   &    e Zd Zd Zd ZeZd ZeZy)MaildirCollectionc                     || _         y r   )root)r   rP   s     r   r   zMaildirCollection.__init__Q   s	    	r   c                 H    t        j                  | j                               S r   )r
   r+   getRootr,   s    r   getSubFolderszMaildirCollection.getSubFoldersT   s    zz$,,.))r   c                     d|v s|d   dk(  rt        d      t        dt        j                  j	                  | j                         |            S )Nr   r   r8   zinvalid name)r   r   r
   r   r   rR   r"   s     r   r=   zMaildirCollection.getSubFolderY   s@    $;$q'S..))sBGGLL>??r   N)rB   rC   rD   r   rS   remote_getSubFoldersr=   rK   rL   r   r   rN   rN   P   s"    * )@
 'r   rN   c                       e Zd Zd Zd Zy)MaildirBrokerc                 r    | j                         }|| j                  |d       y | j                  ||       y )Nzpermission denied)_getCollection	sendError
sendAnswer)r   	requestIDr   domainpassword
collections         r   proto_getCollectionz!MaildirBroker.proto_getCollectionb   s3    ((*
NN9&9:OOIz2r   c                     || j                   vry | j                   |   }||j                  v r-|j                  |   |k(  rt        |j                  |            S y y r   )domainsdbmrN   userDirectory)r   r   r]   r^   s       r   getCollectionzMaildirBroker.getCollectioni   sY    %f%6::&**T"2h">$V%9%9$%?@@ #?r   N)rB   rC   rD   r`   re   rL   r   r   rW   rW   a   s    3Ar   rW   c                       e Zd Zd Zy)MaildirClientc                 p    | j                         }||f| j                  |<   | j                  d||||       y )Nre   )newRequestIDwaitingForAnswerssendCall)r   r   r]   r^   callbackerrbackr\   s          r   re   zMaildirClient.getCollectionr   s9    %%'	,4g,=y)oy$Ir   N)rB   rC   rD   re   rL   r   r   rg   rg   q   s    Jr   rg   )	r
   twisted.spreadr   Referenceabler   rN   BrokerrW   rg   rL   r   r   <module>rq      sZ   
 
 CYb CYL'(( '"ABII A JBII Jr   