11 _moduleLogger = logging.getLogger("gvoice.session")
14 class Session(object):
16 def __init__(self, cookiePath = None):
20 self._backend = backend.GVoiceBackend(cookiePath)
21 self._addressbook = addressbook.Addressbook(self._backend)
22 self._conversations = conversations.Conversations(self._backend)
23 self._stateMachine = state_machine.StateMachine([self.addressbook], [self.conversations])
25 self._conversations.updateSignalHandler.register_sink(
26 self._stateMachine.request_reset_timers
29 def login(self, username, password):
30 self._username = username
31 self._password = password
32 if not self._backend.is_authed():
33 self._backend.login(self._username, self._password)
35 self._stateMachine.start()
38 self._stateMachine.stop()
39 self._backend.logout()
44 def is_logged_in(self):
45 if self._username is None and self._password is None:
46 _moduleLogger.info("Hasn't even attempted to login yet")
48 elif self._backend.is_authed():
52 loggedIn = self._backend.login(self._username, self._password)
53 except RuntimeError, e:
54 _moduleLogger.exception("Re-authenticating and erroring")
59 _moduleLogger.info("Login failed")
66 Login enforcing backend
68 assert self.is_logged_in(), "User not logged in"
72 def addressbook(self):
74 Delay initialized addressbook
76 return self._addressbook
79 def conversations(self):
81 Delay initialized addressbook
83 return self._conversations
86 def stateMachine(self):
87 return self._stateMachine