summaryrefslogtreecommitdiff
path: root/service/app/adapter
diff options
context:
space:
mode:
Diffstat (limited to 'service/app/adapter')
-rw-r--r--service/app/adapter/__init__.py0
-rw-r--r--service/app/adapter/mail_service.py98
-rw-r--r--service/app/adapter/pixelated_mail.py82
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
- }