]> granicus.if.org Git - python/commitdiff
New version doesn't require REV1 capability.
authorGuido van Rossum <guido@python.org>
Sat, 11 Apr 1998 01:22:34 +0000 (01:22 +0000)
committerGuido van Rossum <guido@python.org>
Sat, 11 Apr 1998 01:22:34 +0000 (01:22 +0000)
Lib/imaplib.py

index 0ec6f03dd95a185bce57237025cc0c82bb4733b5..bea54987172611f3443abd48f4f3ad02c38829a9 100644 (file)
@@ -19,6 +19,7 @@ import re, socket, string, time, whrandom
 CRLF = '\r\n'
 Debug = 0
 IMAP4_PORT = 143
+AllowedVersions = ('IMAP4REV1', 'IMAP4')       # Most recent first
 
 #      Commands
 
@@ -133,12 +134,19 @@ class IMAP4:
                if not self.untagged_responses.has_key(cap):
                        raise self.error('no CAPABILITY response from server')
                self.capabilities = tuple(string.split(self.untagged_responses[cap][-1]))
-               if not 'IMAP4REV1' in self.capabilities:
-                       raise self.error('server not IMAP4REV1 compliant')
 
                if __debug__ and self.debug >= 3:
                        print '\tCAPABILITIES: %s' % `self.capabilities`
 
+               self.PROTOCOL_VERSION = None
+               for version in AllowedVersions:
+                       if not version in self.capabilities:
+                               continue
+                       self.PROTOCOL_VERSION = version
+                       break
+               if not self.PROTOCOL_VERSION:
+                       raise self.error('server not IMAP4 compliant')
+
 
        def __getattr__(self, attr):
                """Allow UPPERCASE variants of all following IMAP4 commands."""
@@ -267,7 +275,7 @@ class IMAP4:
 
                (typ, [data]) = <instance>.list(user, password)
                """
-               if not 'AUTH=LOGIN' in self.capabilities:
+               if not 'AUTH-LOGIN' in self.capabilities:
                        raise self.error("server doesn't allow LOGIN authorisation")
                typ, dat = self._simple_command('LOGIN', user, password)
                if typ != 'OK':
@@ -406,7 +414,8 @@ class IMAP4:
 
 
        def uid(self, command, args):
-               """Execute "command args" with messages identified by UID, rather than message number.
+               """Execute "command args" with messages identified by UID,
+                       rather than message number.
 
                (typ, [data]) = <instance>.uid(command, args)
 
@@ -432,7 +441,8 @@ class IMAP4:
 
 
        def xatom(self, name, arg1=None, arg2=None):
-               """Allow simple extension commands notified by server in CAPABILITY response.
+               """Allow simple extension commands
+                       notified by server in CAPABILITY response.
 
                (typ, [data]) = <instance>.xatom(name, arg1=None, arg2=None)
                """
@@ -773,18 +783,22 @@ if __debug__ and __name__ == '__main__':
                return dat
 
        Debug = 4
-       M = IMAP4()
+       M = IMAP4("newcnri")
+       print 'PROTOCOL_VERSION = %s' % M.PROTOCOL_VERSION
 
        for cmd,args in test_seq1:
                run(cmd, args)
 
-       for ml in M.list('/tmp/', 'yy%')[1]:
+       for ml in run('list', ('/tmp/', 'yy%')):
                path = string.split(ml)[-1]
-               print '%s %s' % M.delete(path)
+               run('delete', (path,))
 
        for cmd,args in test_seq2:
                dat = run(cmd, args)
 
-               if (cmd,args) == ('uid', ('SEARCH', 'ALL')):
-                       uid = string.split(dat[0])[-1]
-                       run('uid', ('FETCH', '%s (FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822)' % uid))
+               if (cmd,args) != ('uid', ('SEARCH', 'ALL')):
+                       continue
+
+               uid = string.split(dat[0])[-1]
+               run('uid', ('FETCH',
+                       '%s (FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822)' % uid))