summaryrefslogtreecommitdiff
path: root/service/pixelated/config
diff options
context:
space:
mode:
authorNavaL <ayoyo@thoughtworks.com>2016-06-23 12:01:17 +0200
committerNavaL <ayoyo@thoughtworks.com>2016-06-23 12:01:17 +0200
commit3b678f8d23a116a231be04e6f4da2219bd636362 (patch)
tree074d7e14dacd56538cb3b14ac0ed2601e439791e /service/pixelated/config
parentde888b1d14df2981038b419e824b3df8908cd78d (diff)
refactoring: moved Service factories to the service config file
Diffstat (limited to 'service/pixelated/config')
-rw-r--r--service/pixelated/config/services.py52
1 files changed, 51 insertions, 1 deletions
diff --git a/service/pixelated/config/services.py b/service/pixelated/config/services.py
index de0e2537..cec4803e 100644
--- a/service/pixelated/config/services.py
+++ b/service/pixelated/config/services.py
@@ -9,7 +9,7 @@ from pixelated.adapter.services.mail_sender import MailSender
from pixelated.adapter.search import SearchEngine
from pixelated.adapter.services.draft_service import DraftService
from pixelated.adapter.listeners.mailbox_indexer_listener import listen_all_mailboxes
-from twisted.internet import defer
+from twisted.internet import defer, reactor
from pixelated.adapter.search.index_storage_key import SearchIndexStorageKey
from pixelated.adapter.services.feedback_service import FeedbackService
@@ -78,3 +78,53 @@ class Services(object):
def _setup_feedback_service(self):
return FeedbackService(self._leap_session)
+
+
+class ServicesFactory(object):
+
+ def __init__(self, mode):
+ self._services_by_user = {}
+ self.mode = mode
+ self._map_email = {}
+
+ def map_email(self, username, user_id):
+ self._map_email[username] = user_id
+
+ def is_logged_in(self, user_id):
+ return user_id in self._services_by_user
+
+ def services(self, user_id):
+ return self._services_by_user[user_id]
+
+ def log_out_user(self, user_id, using_email=False):
+ if using_email:
+ user_id = self._map_email[user_id.split('@')[0]]
+
+ if self.is_logged_in(user_id):
+ _services = self._services_by_user[user_id]
+ _services.close()
+ del self._services_by_user[user_id]
+
+ def add_session(self, user_id, services):
+ self._services_by_user[user_id] = services
+
+ @defer.inlineCallbacks
+ def create_services_from(self, leap_session):
+ _services = Services(leap_session)
+ yield _services.setup()
+ self._services_by_user[leap_session.user_auth.uuid] = _services
+
+
+class SingleUserServicesFactory(object):
+ def __init__(self, mode):
+ self._services = None
+ self.mode = mode
+
+ def add_session(self, user_id, services):
+ self._services = services
+
+ def services(self, user_id):
+ return self._services
+
+ def log_out_user(self, user_id, using_email=False):
+ reactor.stop()