import re
import urllib
import urllib2
+import cookielib
import time
import datetime
import itertools
if cookieFile is None:
cookieFile = os.path.join(os.path.expanduser("~"), ".gv_cookies.txt")
self._browser.cookies.filename = cookieFile
- if os.path.isfile(cookieFile):
+ try:
self._browser.cookies.load()
+ self._loadedFromCookies = True
+ except cookielib.LoadError:
+ _moduleLogger.exception("Bad cookie file")
+ self._loadedFromCookies = False
+ except IOError:
+ _moduleLogger.exception("No cookie file")
+ self._loadedFromCookies = False
+ except Exception, e:
+ self._loadedFromCookies = False
self._token = ""
self._accountNum = ""
self._smsTimeRegex = re.compile(r"""<span class="gc-message-sms-time">(.*?)</span>""", re.MULTILINE | re.DOTALL)
self._smsTextRegex = re.compile(r"""<span class="gc-message-sms-text">(.*?)</span>""", re.MULTILINE | re.DOTALL)
+ def is_quick_login_possible(self):
+ """
+ @returns True then is_authed might be enough to login, else full login is required
+ """
+ return self._loadedFromCookies or 0.0 < self._lastAuthed
+
def is_authed(self, force = False):
"""
Attempts to detect a current session
# print contact
# pprint.pprint(list(backend.get_contact_details(contact[0])))
- print "Messages: ",
- for message in backend.get_messages():
- message["messageParts"] = list(message["messageParts"])
- pprint.pprint(message)
+ #print "Messages: ",
+ #for message in backend.get_messages():
+ # message["messageParts"] = list(message["messageParts"])
+ # pprint.pprint(message)
#for message in sort_messages(backend.get_messages()):
# pprint.pprint(decorate_message(message))
if __name__ == "__main__":
import sys
logging.basicConfig(level=logging.DEBUG)
- #test_backend(sys.argv[1], sys.argv[2])
- grab_debug_info(sys.argv[1], sys.argv[2])
+ if True:
+ grab_debug_info(sys.argv[1], sys.argv[2])
+ else:
+ test_backend(sys.argv[1], sys.argv[2])
@note Thread agnostic
"""
loggedIn = False
- if self._credentials == ("", ""):
- # Disallow logging in by cookie alone, without credentials
- loggedIn = False
- if not loggedIn:
- loggedIn = self._phoneBackends[self._defaultBackendId].is_authed()
+ isQuickLoginPossible = self._phoneBackends[self._defaultBackendId].is_quick_login_possible()
+ if self._credentials != ("", "") and isQuickLoginPossible:
+ if not loggedIn:
+ loggedIn = self._phoneBackends[self._defaultBackendId].is_authed()
if loggedIn:
_moduleLogger.info("Logged into %r through cookies" % self._phoneBackends[self._defaultBackendId])
__changelog__ = """
1.0.8
* Sped up login time by delay loading contact list
+* Sped up login when you do not have a cookie file (first launch)
* Ability to narrow down messages either by type or status
* Fremantle: Notification Support including testing of custom notifications
* UI Tweak: Cut down the number of times the login dialog is needlessly displayed
* Bug Fix: Switching to accounts tab when callback is blank
+* Bug Fix: Corrupt cookie files prevent login
+* Bug Fix: Logging in without credentials through cookies
* Debugging: Log contents now accessible through Ctrl+l
1.0.7