diff options
author | Bruno Wagner Goncalves <bwagner@thoughtworks.com> | 2014-08-20 15:43:50 -0300 |
---|---|---|
committer | Bruno Wagner Goncalves <bwagner@thoughtworks.com> | 2014-08-20 18:27:01 -0300 |
commit | 31289cb156540a95dfe51737d9fd4e1a7393f2f2 (patch) | |
tree | 238480ca562c9c65e1aeaaeaebe063549b3718f4 /service/app/adapter | |
parent | 02df978f9faa4a00b07d2c70d3bd47a25287d0e1 (diff) |
Added setup.py and changed app to pixelated because it will be a package
Diffstat (limited to 'service/app/adapter')
-rw-r--r-- | service/app/adapter/__init__.py | 0 | ||||
-rw-r--r-- | service/app/adapter/mail_service.py | 98 | ||||
-rw-r--r-- | service/app/adapter/pixelated_mail.py | 82 |
3 files changed, 0 insertions, 180 deletions
diff --git a/service/app/adapter/__init__.py b/service/app/adapter/__init__.py deleted file mode 100644 index e69de29b..00000000 --- a/service/app/adapter/__init__.py +++ /dev/null diff --git a/service/app/adapter/mail_service.py b/service/app/adapter/mail_service.py deleted file mode 100644 index 0704f0bb..00000000 --- a/service/app/adapter/mail_service.py +++ /dev/null @@ -1,98 +0,0 @@ -import traceback -import sys -import os -from twisted.internet import defer -from app.bitmask_libraries.config import LeapConfig -from app.bitmask_libraries.provider import LeapProvider -from app.bitmask_libraries.session import LeapSessionFactory -from app.bitmask_libraries.auth import LeapCredentials -from app.adapter.pixelated_mail import PixelatedMail -from app.tags import Tags - - -class MailService: - - def __init__(self): - try: - self.username = 'testuser_a003' - self.password = 'testpassword' - self.server_name = 'example.wazokazi.is' - self.mailbox_name = 'INBOX' - self.certs_home = os.path.join(os.path.abspath("."), "leap") - self.tags = Tags() - self._open_leap_session() - except: - traceback.print_exc(file=sys.stdout) - raise - - def _open_leap_session(self): - self.leap_config = LeapConfig(certs_home=self.certs_home) - self.provider = LeapProvider(self.server_name, self.leap_config) - self.leap_session = LeapSessionFactory(self.provider).create(LeapCredentials(self.username, self.password)) - self.account = self.leap_session.account - self.mailbox = self.account.getMailbox(self.mailbox_name) - - def mails(self, query): - mails = self.mailbox.messages or [] - mails = [PixelatedMail(mail) for mail in mails] - return mails - - def update_tags(self, mail_id, new_tags): - mail = self.mail(mail_id) - new_tags = mail.update_tags(new_tags) - self._update_flags(new_tags, mail_id) - self._update_tag_list(new_tags) - return new_tags - - def _update_tag_list(self, tags): - for tag in tags: - self.tags.add(tag) - - def _update_flags(self, new_tags, mail_id): - new_tags_flag_name = ['tag_' + tag.name for tag in new_tags] - self.set_flags(mail_id, new_tags_flag_name) - - def set_flags(self, mail_id, new_tags_flag_name): - observer = defer.Deferred() - self.mailbox.messages.set_flags(self.mailbox, [mail_id], tuple(new_tags_flag_name), 1, observer) - - def mail(self, mail_id): - for message in self.mailbox.messages: - if message.getUID() == int(mail_id): - return PixelatedMail(message) - - def all_tags(self): - return self.tags - - def thread(self, thread_id): - raise NotImplementedError() - - def mark_as_read(self, mail_id): - raise NotImplementedError() - - def tags_for_thread(self, thread): - raise NotImplementedError() - - def add_tag_to_thread(self, thread_id, tag): - raise NotImplementedError() - - def remove_tag_from_thread(self, thread_id, tag): - raise NotImplementedError() - - def delete_mail(self, mail_id): - raise NotImplementedError() - - def save_draft(self, draft): - raise NotImplementedError() - - def send_draft(self, draft): - raise NotImplementedError() - - def draft_reply_for(self, mail_id): - raise NotImplementedError() - - def all_contacts(self, query): - raise NotImplementedError() - - def drafts(self): - raise NotImplementedError() diff --git a/service/app/adapter/pixelated_mail.py b/service/app/adapter/pixelated_mail.py deleted file mode 100644 index 2f1e14e9..00000000 --- a/service/app/adapter/pixelated_mail.py +++ /dev/null @@ -1,82 +0,0 @@ -from app.tags import Tag -from app.tags import Tags -import dateutil.parser as dateparser - - -class PixelatedMail: - - LEAP_FLAGS = ['\\Seen', - '\\Answered', - '\\Flagged', - '\\Deleted', - '\\Draft', - '\\Recent', - 'List'] - - LEAP_FLAGS_STATUSES = { - '\\Seen': 'read', - '\\Answered': 'replied' - } - - LEAP_FLAGS_TAGS = { - '\\Deleted': 'trash', - '\\Draft': 'drafts', - '\\Recent': 'inbox' - } - - def __init__(self, leap_mail): - self.leap_mail = leap_mail - self.body = leap_mail.bdoc.content['raw'] - self.headers = self.extract_headers() - self.date = dateparser.parse(self.headers['date']) - self.ident = leap_mail.getUID() - self.status = self.extract_status() - self.security_casing = {} - self.tags = self.extract_tags() - - def extract_status(self): - flags = self.leap_mail.getFlags() - return [converted for flag, converted in self.LEAP_FLAGS_STATUSES.items() if flag in flags] - - def extract_headers(self): - temporary_headers = {} - for header, value in self.leap_mail.hdoc.content['headers'].items(): - temporary_headers[header.lower()] = value - if(temporary_headers.get('to') is not None): - temporary_headers['to'] = [temporary_headers['to']] - return temporary_headers - - def extract_tags(self): - flags = self.leap_mail.getFlags() - tag_names = self._converted_tags(flags) + self._custom_tags(flags) - tags = [] - for tag in tag_names: - tags.append(Tag(tag)) - return tags - - def _converted_tags(self, flags): - return [converted for flag, converted in self.LEAP_FLAGS_TAGS.items() if flag in flags] - - def _custom_tags(self, flags): - return [self._remove_prefix(flag) for flag in self.leap_mail.getFlags() if flag.startswith('tag_')] - - def _remove_prefix(self, flag_name): - return flag_name.replace('tag_', '', 1) - - def update_tags(self, tags): - self.tags = [Tag(tag) for tag in tags] - return self.tags - - def has_tag(self, tag): - return Tag(tag) in self.tags - - def as_dict(self): - tags = [tag.name for tag in self.tags] - return { - 'header': self.headers, - 'ident': self.ident, - 'tags': tags, - 'status': self.status, - 'security_casing': self.security_casing, - 'body': self.body - } |