offlineimap rev 527
"Automatic Subversion Change Mailer" <[email protected]> Sat, 26 Jul 2003 15:02:44 -0500 (CDT)
| Newsgroups | gmane.mail.imap.offlineimap.subversion |
|---|---|
| Message-ID | <[email protected]> |
You are receiving this message because
all commits get sent to this address.
Author: jgoerzen
Date: 2003-07-26 15:02:28 -0500 (Sat, 26 Jul 2003)
New Revision: 527
Modified:
offlineimap/branches/twisted/offlineimap/accounts.py
offlineimap/branches/twisted/offlineimap/imapserver.py
offlineimap/branches/twisted/offlineimap/repository/Base.py
offlineimap/branches/twisted/offlineimap/repository/IMAP.py
Log:
The thing connects now.
Diff:
Modified: offlineimap/branches/twisted/offlineimap/accounts.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/accounts.py 2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/accounts.py 2003-07-26 20:02:28 UTC (rev 527)
@@ -247,7 +247,7 @@
ui.validityproblem(self.remotefolder,
self.remotefolder.getsaveduidvalidity(),
self.validities['remotefolder_uidvalidity'])
- rause Exception, "Error: UID validity problem for remote folder."
+ raise Exception, "Error: UID validity problem for remote folder."
else:
self.localfolder.saveuidvalidity()
self.remotefolder.saveuidvalidity()
Modified: offlineimap/branches/twisted/offlineimap/imapserver.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/imapserver.py 2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/imapserver.py 2003-07-26 20:02:28 UTC (rev 527)
@@ -23,11 +23,17 @@
from twisted.protocols.imap4 import IMAP4Client
from twisted.internet.ssl import ClientContextFactory
+class MyIMAP(IMAP4Client):
+ def connectionMade(self):
+ print "Connectionmade."
+ self.factory.imapserver.connectionMade(self)
+
class IMAPClientFactory(protocol.ClientFactory):
- protocol = IMAP4Client
+ protocol = MyIMAP
def __init__(self, imapserver):
self.imapserver = imapserver
+ print "Client factory instantiated."
def startedConnection(self, connector):
print "Started to connect"
@@ -38,10 +44,6 @@
def clientconnectionFailed(self, connector, reason):
print "Connection failed. Reason:", reason
-class MyIMAP(IMAP4Client):
- def connectionMade(self):
- print "Connectionmade."
- self.factory.imapserver.connectionMade(self)
class IMAPFactory(protocol.ClientFactory):
protocol = IMAP4Client
@@ -118,11 +120,15 @@
def plainauth(self, imapobj):
UIBase.getglobalui().debug('imap',
'Attempting plain authentication')
+ print "imapobj is", imapobj
d = imapobj.login(self.username, self.getpassword())
d.addCallback(self.handOverConnection)
- d.addErrback(self.plainauth, (imapobj,))
-
+ d.addErrback(self.plainautherror, (imapobj,))
+ def plainautherror(self, error, imapobj):
+ UIBase.getglobalui().warn(str(error))
+ self.plainauth(imapobj)
+
def acquireconnection(self):
"""Fetches a connection from the pool, making sure to create a new one
if needed, to obey the maximum connection limits, etc.
@@ -138,6 +144,7 @@
return d
if self.usessl:
+ print "Using SSL."
reactor.connectSSL(self.hostname, self.port,
IMAPClientFactory(self),
ClientContextFactory())
@@ -151,9 +158,9 @@
def connectionMade(self, protocol):
print "This is IMAPServer.connectionMade; handing over to plainauth"
self.imapobj = protocol
- self.plainAuth(protocol)
+ self.plainauth(protocol)
- def handOverConnection(self):
+ def handOverConnection(self, d = None):
print "This is IMAPServer.handOverConnection"
self.connectiondefer.callback(self.imapobj)
return
Modified: offlineimap/branches/twisted/offlineimap/repository/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/repository/Base.py 2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/repository/Base.py 2003-07-26 20:02:28 UTC (rev 527)
@@ -18,6 +18,7 @@
from offlineimap import CustomConfig
import os.path
+from twisted.internet import defer
def LoadRepository(name, account, reqtype):
from offlineimap.repository.IMAP import IMAPRepository, MappedIMAPRepository
@@ -101,12 +102,19 @@
"""Syncs the folders in this repository to those in dest.
It does NOT sync the contents of those folders."""
src = self
- srcfolders = src.getfolders()
- destfolders = dest.getfolders()
+ maindefer = defer.Deferred()
+ d = src.getfolders()
+ d.addCallback(self.syncfoldersto_real1, (dest, maindefer))
+ return d
- # Create hashes with the names, but convert the source folders
- # to the dest folder's sep.
+ def syncfoldersto_real1(self, dest, maindefer, srcfolders):
+ d = dest.getfolders()
+ d.addCallback(self.syncfoldersto_real2, (dest, maindefer, srcfolders))
+ def syncfoldersto_real2(self, dest, maindefer, srcfolders,
+ destfolders):
+ src = srlf
+
srchash = {}
for folder in srcfolders:
srchash[folder.getvisiblename().replace(src.getsep(), dest.getsep())] = \
@@ -123,6 +131,8 @@
if not key in desthash:
dest.makefolder(key)
+
+ d.callback()
#
# Find deleted folders.
#
Modified: offlineimap/branches/twisted/offlineimap/repository/IMAP.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/repository/IMAP.py 2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/repository/IMAP.py 2003-07-26 20:02:28 UTC (rev 527)
@@ -133,6 +133,10 @@
return self.folders
retval = []
imapobj = self.imapserver.acquireconnection()
+ imapobj.addCallback(self.getfolders_real)
+ return imapobj
+
+ def getfolders_real(self, imapobj):
try:
listresult = imapobj.list(directory = self.imapserver.reference)[1]
finally: