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._loggedIn = False
39 self._stateMachine.stop()
40 self._backend.logout()
45 def is_logged_in(self):
46 if self._username is None and self._password is None:
47 _moduleLogger.info("Hasn't even attempted to login yet")
49 elif self._backend.is_authed():
53 loggedIn = self._backend.login(self._username, self._password)
54 except RuntimeError, e:
55 _moduleLogger.exception("Re-authenticating and erroring")
60 _moduleLogger.info("Login failed")
67 Login enforcing backend
69 assert self.is_logged_in(), "User not logged in"
73 def addressbook(self):
75 Delay initialized addressbook
77 return self._addressbook
80 def conversations(self):
82 Delay initialized addressbook
84 return self._conversations