From 3b678f8d23a116a231be04e6f4da2219bd636362 Mon Sep 17 00:00:00 2001 From: NavaL Date: Thu, 23 Jun 2016 12:01:17 +0200 Subject: refactoring: moved Service factories to the service config file --- service/pixelated/config/services.py | 52 +++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) (limited to 'service/pixelated/config') 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() -- cgit v1.2.3