summaryrefslogtreecommitdiff
path: root/service/pixelated/config/services.py
diff options
context:
space:
mode:
authorBruno Wagner <bwgpro@gmail.com>2015-06-09 18:00:19 -0300
committerBruno Wagner <bwgpro@gmail.com>2015-06-09 18:00:19 -0300
commit786c26b37a89b6f7afc5524dafd35242688dc13b (patch)
tree4773492dd43c5466ccb2e499844fae425774ce41 /service/pixelated/config/services.py
parentb509ff2f5faa63cca507505ede3d6708bfc4a8fa (diff)
Extracted services setup in a separate class
We removed app factory and moved root resource initialization to application.py
Diffstat (limited to 'service/pixelated/config/services.py')
-rw-r--r--service/pixelated/config/services.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/service/pixelated/config/services.py b/service/pixelated/config/services.py
new file mode 100644
index 00000000..80932a94
--- /dev/null
+++ b/service/pixelated/config/services.py
@@ -0,0 +1,38 @@
+from pixelated.resources.root_resource import RootResource
+from pixelated.adapter.services.mail_service import MailService
+from pixelated.adapter.model.mail import InputMail
+from pixelated.adapter.services.mail_sender import MailSender
+from pixelated.adapter.services.mailboxes import Mailboxes
+from pixelated.adapter.soledad.soledad_querier import SoledadQuerier
+from pixelated.adapter.search import SearchEngine
+from pixelated.adapter.services.draft_service import DraftService
+from pixelated.adapter.listeners.mailbox_indexer_listener import MailboxIndexerListener
+
+
+class Services(object):
+
+ def __init__(self, leap_home, leap_session):
+ keymanager = leap_session.nicknym.keymanager
+
+ soledad_querier = SoledadQuerier(soledad=leap_session.account._soledad)
+
+ search_engine = SearchEngine(soledad_querier, agent_home=leap_home)
+ pixelated_mail_sender = MailSender(leap_session.account_email(), leap_session.smtp)
+
+ pixelated_mailboxes = Mailboxes(leap_session.account, soledad_querier, search_engine)
+
+ pixelated_mailboxes.add_welcome_mail_for_fresh_user()
+
+ draft_service = DraftService(pixelated_mailboxes)
+ mail_service = MailService(pixelated_mailboxes, pixelated_mail_sender, soledad_querier, search_engine)
+ soledad_querier.remove_duplicates()
+ search_engine.index_mails(mails=mail_service.all_mails(),
+ callback=soledad_querier.mark_all_as_not_recent)
+
+ MailboxIndexerListener.SEARCH_ENGINE = search_engine
+ InputMail.FROM_EMAIL_ADDRESS = leap_session.account_email()
+
+ self.keymanager = keymanager
+ self.search_engine = search_engine
+ self.mail_service = mail_service
+ self.draft_service = draft_service