[Hepserver-commits] hep/hep/services imap.py,1.1,1.2
Status: Alpha
Brought to you by:
abefettig
|
From: <abe...@us...> - 2003-08-07 03:25:13
|
Update of /cvsroot/hepserver/hep/hep/services
In directory sc8-pr-cvs1:/tmp/cvs-serv14719/hep/services
Modified Files:
imap.py
Log Message:
IMAP support getting closer, but still not
working.
Index: imap.py
===================================================================
RCS file: /cvsroot/hepserver/hep/hep/services/imap.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** imap.py 10 Jul 2003 16:09:36 -0000 1.1
--- imap.py 7 Aug 2003 03:25:11 -0000 1.2
***************
*** 9,12 ****
--- 9,13 ----
from twisted.internet import reactor, defer
from twisted.python import components
+ from twisted.python.util import InsensitiveDict
class Service(ApplicationService):
***************
*** 49,53 ****
def loadMailboxes(self):
! self.mailboxes = []
d = defer.Deferred()
listing = self.original.messages.openChildStores()
--- 50,54 ----
def loadMailboxes(self):
! self.mailboxes = InsensitiveDict()
d = defer.Deferred()
listing = self.original.messages.openChildStores()
***************
*** 56,65 ****
def listMailboxes(self, ref, wildcard):
! return self.mailboxes
def finishedLoadingMailboxes(self, stores, d):
results = []
for path, store in stores.items():
! self.mailboxes.append([path, Mailbox(store)])
d.callback(self)
--- 57,68 ----
def listMailboxes(self, ref, wildcard):
! return self.mailboxes.items()
def finishedLoadingMailboxes(self, stores, d):
results = []
for path, store in stores.items():
! if not path.count('Connections/'):
! self.mailboxes[path.lower()] = Mailbox(store)
! self.mailboxes[path].refreshValues()
d.callback(self)
***************
*** 72,75 ****
--- 75,84 ----
def subscribe(self, path):
return 1
+
+ def unsubscribe(self, path):
+ return 1
+
+ def select(self, path, rw):
+ return self.mailboxes[path.lower()]
class Mailbox(components.Adapter):
***************
*** 80,82 ****
def getFlags(self):
! return []
\ No newline at end of file
--- 89,224 ----
def getFlags(self):
! return []
!
! def refreshValues(self):
! self.messageCount = 0
! self.uidMap = {}
! # this should be better
! import time
! self.timestamp = int(time.time())
! self.original.getCount().addCallback(self.setMessageCount)
! self.original.listMessages().addCallback(self.loadedMessageList)
!
! def setMessageCount(self, count):
! self.messageCount = count
!
! def loadedMessageList(self, messageIds):
! for mID in messageIds:
! self.uidMap[self.getUIDNext()] = mID
!
! def getMessageCount(self):
! return self.messageCount
!
! getUnseenCount = getRecentCount = getMessageCount
!
! def isWriteable(self):
! return self.original.canEdit
!
! def getUIDValidity(self):
! return self.timestamp
!
! def getUID(self, messageNo):
! uids = self.uidMap.keys()
! uids.sort()
! return uids[messageNo-1]
!
! def getUIDNext(self):
! return self.uidMap and max(self.uidMap.keys())+1 or 1
!
! def fetch(self, messages, uid):
! print "FETCH", messages, uid, self.uidMap
! d = defer.Deferred()
! d.responses = []
! d.messageCount = 0
! if not messages.last:
! messages.last = uid and max(self.uidMap.keys()) or len(self.uidMap.keys())
!
! idsToFetch = []
! for m in messages:
! if not uid:
! print 'NO UID', uid, 'looking up', m, self.uidMap
! idsToFetch.append(self.getUID(m))
! else:
! idsToFetch.append(m)
!
! d.messageCount = len(idsToFetch)
! for mID in idsToFetch:
! self.original.getMessage(self.uidMap[mID]).addCallback(
! self.fetchedMessage, d, m).addErrback(
! printError)
! return d
!
! def fetchedMessage(self, message, finished, mID):
! print "APPENDING MESSAGE, UID", mID, "of", finished.messageCount
! finished.responses.append((mID, MessageAdapter(message)))
! if len(finished.responses) == finished.messageCount:
! print "GOT ALL MESSAGES, CALLING BACK!"
! finished.callback(iter(finished.responses))
!
! def addListener(self, *args):
! return 1
!
! def removeListener(self, *args):
! return 1
!
! requestStatus = imap4.statusRequestHelper
!
! def search(self, query, uid):
! if uid:
! return self.uidMap.values()
! else:
! return self.uidMap.keys()
!
! class MessageAdapter(components.Adapter):
! __implements__ = (imap4.IMessage)
!
! def getHeaders(self, names, negate):
! print "names", names, "NEGATE", repr(negate)
! if not names: return self.original.getAllHeaders()
! headers = {}
! if negate:
! for header in self.original.keys():
! if header.upper() not in names:
! headers[header] = self.original[header]
! else:
! for name in names:
! name = str(name)
! print name,
! headers[name] = str(self.original[name])
! print "HEADERS:", headers
! return headers
!
! def getFlags(self):
! print "RETURNING FLAGS"
! return [r"\Recent"]
!
! def getInternalDate(self):
! print "RETURNING DATE"
! return self.original['Date']
!
! def getBodyFile(self):
! print "GETTING BODY FILE"
! from cStringIO import StringIO
! return StringIO(str(self.original))
!
! def getSize(self):
! print "RETURNING SIZE"
! return len(str(self.original))
!
! def getUID(self):
! print 'RETURNING UID'
! return 1
!
! def getSubPart(self, part):
! """Retrieve a MIME sub-message
!
! @type part: C{int}
! @param part: The number of the part to retrieve, indexed from 0.
!
! @rtype: Any object implementing C{IMessage}.
! @return: The specified sub-part.
! """
! return None
!
! def printError(*args):
! print args
\ No newline at end of file
|