From 23f0aafe4490b4126af6c8e12aaa340170f042c6 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Thu, 23 Jul 2015 13:31:50 +0200 Subject: Started work on MailStore abstraction. --- .../pixelated/adapter/mailstore/leap_mailstore.py | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 service/pixelated/adapter/mailstore/leap_mailstore.py (limited to 'service/pixelated/adapter/mailstore/leap_mailstore.py') diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py new file mode 100644 index 00000000..9d41c988 --- /dev/null +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -0,0 +1,52 @@ +# +# Copyright (c) 2015 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . +from leap.mail.adaptors.soledad import SoledadMailAdaptor +from twisted.internet import defer +from pixelated.adapter.mailstore import MailStore + +from leap.mail.mail import Message +from pixelated.adapter.model.mail import Mail + + +class LeapMail(Mail): + + def __init__(self, headers, body=None): + self.headers = headers + self._body = body + + @property + def body(self): + return self._body + +class LeapMailStore(MailStore): + __slots__ = ('account', 'soledad') + + def __init__(self, imapAccount, soledad): + self.account = imapAccount + self.soledad = soledad + + @defer.inlineCallbacks + def get_mail(self, mail_id): + try: + message = yield SoledadMailAdaptor().get_msg_from_mdoc_id(Message, self.soledad, mail_id) + + defer.returnValue(self._leap_message_to_leap_mail(message)) + except AttributeError: + defer.returnValue(None) + + def _leap_message_to_leap_mail(self, message): + return LeapMail(message.get_headers()) + -- cgit v1.2.3