]> code.delx.au - offlineimap/blobdiff - offlineimap/repository/Gmail.py
Add Gmail IMAP special support.
[offlineimap] / offlineimap / repository / Gmail.py
diff --git a/offlineimap/repository/Gmail.py b/offlineimap/repository/Gmail.py
new file mode 100644 (file)
index 0000000..f26e7b9
--- /dev/null
@@ -0,0 +1,68 @@
+# Gmail IMAP repository support
+# Copyright (C) 2008 Riccardo Murri <riccardo.murri@gmail.com>
+#
+#    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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+from IMAP import IMAPRepository
+from offlineimap import folder, imaputil
+from offlineimap.imapserver import IMAPServer
+
+class GmailRepository(IMAPRepository):
+    """Gmail IMAP repository.
+
+    Uses hard-coded host name and port, see:
+      http://mail.google.com/support/bin/answer.py?answer=78799&topic=12814
+    """
+
+    #: Gmail IMAP server hostname
+    HOSTNAME = "imap.gmail.com"
+
+    #: Gmail IMAP server port
+    PORT = 993
+    
+    def __init__(self, reposname, account):
+        """Initialize a GmailRepository object."""
+        account.getconfig().set('Repository ' + reposname,
+                                'remotehost', GmailRepository.HOSTNAME)
+        account.getconfig().set('Repository ' + reposname,
+                                'remoteport', GmailRepository.PORT)
+        account.getconfig().set('Repository ' + reposname,
+                                'ssl', 'yes')
+        IMAPRepository.__init__(self, reposname, account)
+
+    def gethost(self):
+        return GmailRepository.HOSTNAME
+
+    def getport(self):
+        return GmailRepository.PORT
+
+    def getssl(self):
+        return 1
+
+    def getpreauthtunnel(self):
+        return None
+
+    def getfolder(self, foldername):
+        return self.getfoldertype()(self.imapserver, foldername,
+                                    self.nametrans(foldername),
+                                    self.accountname, self)
+
+    def getfoldertype(self):
+        return folder.Gmail.GmailFolder
+
+    def getrealdelete(self, foldername):
+        # XXX: `foldername` is currently ignored - the `realdelete`
+        # setting is repository-wide
+        return self.getconfboolean('realdelete', 0)