# Connection init must come first
self.__options = TheOneRingOptions(parameters)
self.__session = gvoice.session.Session(
- cookiePath = None,
+ cookiePath = os.path.join(constants._data_path_, "%s.cookies" % account),
defaults = {
"contacts": (self.__options.contactsPollPeriodInHours, "hours"),
"voicemail": (self.__options.voicemailPollPeriodInMinutes, "minutes"),
self.manager.disconnected(self)
self.session.save(self.__cachePath)
- self.session.logout()
+ self.session.shutdown()
self.session.close()
# In case one of the above items takes too long (which it should never
self._lastAuthed = time.time()
return True
+ def shutdown(self):
+ self._browser.save_cookies()
+ self._token = None
+ self._lastAuthed = 0.0
+
def logout(self):
self._browser.clear_cookies()
self._browser.save_cookies()
self.trycount = trycount
self._cookies = cookielib.LWPCookieJar()
self._loadedFromCookies = False
+ self._usingCookies = False
def load_cookies(self, path):
assert not self._loadedFromCookies, "Load cookies only once"
- if path is None:
+ if not path:
return
self._cookies.filename = path
else:
self._loadedFromCookies = True
+ self._usingCookies = True
return self._loadedFromCookies
def save_cookies(self):
- if self._loadedFromCookies:
+ if self._usingCookies:
self._cookies.save()
def clear_cookies(self):
- if self._loadedFromCookies:
+ if self._usingCookies:
self._cookies.clear()
def download(self, url,
def _login(self, username, password, on_success, on_error):
self._username = username
self._password = password
- try:
- isLoggedIn = yield (
- self._backend.login,
- (self._username, self._password),
- {},
- )
- except Exception, e:
- on_error(e)
- return
+
+ isLoggedIn = False
+
+ if not isLoggedIn and self._backend.is_quick_login_possible():
+ try:
+ isLoggedIn = yield (
+ self._backend.is_authed,
+ (),
+ {},
+ )
+ except Exception, e:
+ on_error(e)
+ return
+ if isLoggedIn:
+ _moduleLogger.info("Logged in through cookies")
+
+ if not isLoggedIn:
+ try:
+ isLoggedIn = yield (
+ self._backend.login,
+ (self._username, self._password),
+ {},
+ )
+ except Exception, e:
+ on_error(e)
+ return
+ if isLoggedIn:
+ _moduleLogger.info("Logged in through credentials")
self._masterStateMachine.start()
on_success(isLoggedIn)
+ def shutdown(self):
+ self._asyncPool.stop()
+ self._masterStateMachine.stop()
+ self._backend.shutdown()
+
+ self._username = None
+ self._password = None
+
def logout(self):
self._asyncPool.stop()
self._masterStateMachine.stop()