From ab27fdaad7ef73de6b75069fe1677a51a3f3b265 Mon Sep 17 00:00:00 2001 From: jgoerzen Date: Wed, 19 Jun 2002 05:39:00 +0100 Subject: [PATCH] /head: changeset 5 Updated --- head/offlineimap.py | 12 +++---- head/offlineimap/folder/__init__.py | 0 head/offlineimap/imapserver.py | 47 +++++++++++++++++++++++++ head/offlineimap/repository/Base.py | 23 ++++++++++++ head/offlineimap/repository/IMAP.py | 26 ++++++++++++++ head/offlineimap/repository/__init__.py | 0 6 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 head/offlineimap/folder/__init__.py create mode 100644 head/offlineimap/imapserver.py create mode 100644 head/offlineimap/repository/Base.py create mode 100644 head/offlineimap/repository/IMAP.py create mode 100644 head/offlineimap/repository/__init__.py diff --git a/head/offlineimap.py b/head/offlineimap.py index 5f86347..0b66096 100644 --- a/head/offlineimap.py +++ b/head/offlineimap.py @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -from imapsync import imaplib +from imapsync import imaplib, imaputil, imapserver import re import getpass @@ -25,10 +25,6 @@ host = raw_input('Host: ') user = raw_input('Username: ') passwd = getpass.getpass('Password: ') -imapobj = imaplib.IMAP4_SSL(host) -imapobj.login(user, passwd) - -def parselistresult(liststr): - return re.match('^(\(.*\))\s+(\".*\")\s+(\".*\")$', liststr).groups() - -delim, root = parselistresult(imapobj.list('""', '""')[1][0])[1:] +server = imapserver.IMAPServer(user, passwd, host, ssl = 1) +imapobj = server.makeconnection() +delim, root = imaputil.imapsplit(imapobj.list('""', '""')[1][0])[1:] diff --git a/head/offlineimap/folder/__init__.py b/head/offlineimap/folder/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/head/offlineimap/imapserver.py b/head/offlineimap/imapserver.py new file mode 100644 index 0000000..6e4a032 --- /dev/null +++ b/head/offlineimap/imapserver.py @@ -0,0 +1,47 @@ +# IMAP server support +# Copyright (C) 2002 John Goerzen +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from imapsync import imaplib + +class IMAPServer: + def __init__(self, username, password, hostname, port = None, ssl = 1): + self.username = username + self.password = password + self.hostname = hostname + self.port = port + self.usessl = ssl + if port == None: + if ssl: + self.port = 993 + else: + self.port = 143 + + def makeconnection(self): + """Opens a connection to the server and returns an appropriate + object.""" + + imapobj = None + if self.usessl: + imapobj = imaplib.IMAP4_SSL(self.hostname, self.port) + else: + imapobj = imaplib.IMAP4(self.hostname, self.port) + + imapobj.login(self.username, self.password) + return imapobj + + diff --git a/head/offlineimap/repository/Base.py b/head/offlineimap/repository/Base.py new file mode 100644 index 0000000..76aa9d6 --- /dev/null +++ b/head/offlineimap/repository/Base.py @@ -0,0 +1,23 @@ +# Base repository support +# Copyright (C) 2002 John Goerzen +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +class BaseRepository: + def getfolders(self): + """Returns a list of ALL folders on this server.""" + return [] + diff --git a/head/offlineimap/repository/IMAP.py b/head/offlineimap/repository/IMAP.py new file mode 100644 index 0000000..59d19db --- /dev/null +++ b/head/offlineimap/repository/IMAP.py @@ -0,0 +1,26 @@ +# IMAP repository support +# Copyright (C) 2002 John Goerzen +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from Base import BaseRepository + +class IMAPRepository(BaseRepository): + def __init__(self, imapserver): + """Initialize an IMAPRepository object. Takes an IMAPServer + object.""" + self.imapserver = imapserver + diff --git a/head/offlineimap/repository/__init__.py b/head/offlineimap/repository/__init__.py new file mode 100644 index 0000000..e69de29