self._widgetTree = gtk.glade.XML(path)
break
else:
- self.ErrPopUp("Cannot find gc_dialer.glade")
+ self.display_error_message("Cannot find gc_dialer.glade")
gtk.main_quit()
return
if self._gcBackend.isAuthed():
if self._gcBackend.getCallbackNumber() is None:
self._gcBackend.setSaneCallback()
+ self.setAccountNumber()
- self.setAccountNumber()
print "exit init_gc"
return False
dialog.hide()
times -= 1
- return False
-
- def ErrPopUp(self, msg):
+ def display_error_message(self, msg):
error_dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, msg)
def close(dialog, response, editor):
"""
@todo Potential blocking on web access, maybe we should defer parts of this or put up a dialog?
"""
- self.attemptLogin(3)
-
- if not self._gcBackend.isAuthed() or self._gcBackend.getCallbackNumber() == "":
- self.ErrPopUp("Backend link with grandcentral is not working, please try again")
+ loggedIn = self.attemptLogin(2)
+ if not loggedIn or not self._gcBackend.isAuthed() or self._gcBackend.getCallbackNumber() == "":
+ self.display_error_message("Backend link with grandcentral is not working, please try again")
return
try:
callSuccess = False
if not callSuccess:
- self.ErrPopUp(self._gcBackend._msg)
+ self.display_error_message(self._gcBackend._msg)
else:
self.setNumber("")
import os
import re
import urllib
+import urllib2
import time
+import warnings
from browser_emu import MozillaEmulator
if time.time() - self._lastAuthed < 60 and not force:
return True
- forwardSelectionPage = self._browser.download(GCDialer._forwardselectURL)
+ try:
+ forwardSelectionPage = self._browser.download(GCDialer._forwardselectURL)
+ except urllib2.URLError, e:
+ warnings.warn("%s is not accesible" % GCDialer._forwardselectURL, UserWarning, 2)
+ return False
+
self._browser.cookies.save()
if GCDialer._isLoginPageRe.search(forwardSelectionPage) is None:
self._grabToken(forwardSelectionPage)
"""
if self.isAuthed():
return True
+
loginPostData = urllib.urlencode( {'username' : username , 'password' : password } )
- loginSuccessOrFailurePage = self._browser.download(GCDialer._loginURL, loginPostData)
+
+ try:
+ loginSuccessOrFailurePage = self._browser.download(GCDialer._loginURL, loginPostData)
+ except urllib2.URLError, e:
+ warnings.warn("%s is not accesible" % GCDialer._loginURL, UserWarning, 2)
+ return False
+
return self.isAuthed()
def dial(self, number):
if len(number) == 11 and number[0] == 1:
number = number[1:]
- callSuccessPage = self._browser.download(
- GCDialer._clicktocallURL % (self._accessToken, number),
- None, {'Referer' : 'http://www.grandcentral.com/mobile/messages'} )
+ try:
+ callSuccessPage = self._browser.download(
+ GCDialer._clicktocallURL % (self._accessToken, number),
+ None,
+ {'Referer' : 'http://www.grandcentral.com/mobile/messages'}
+ )
+ except urllib2.URLError, e:
+ warnings.warn("%s is not accesible" % GCDialer._clicktocallURL, UserWarning, 2)
+ return False
if GCDialer._gcDialingStrRe.search(callSuccessPage) is not None:
return True
@param callbacknumber should be a proper 10 digit number
"""
print "setCallbackNumber %s" % (callbacknumber)
+
callbackPostData = urllib.urlencode({'a_t' : self._accessToken, 'default_number' : callbacknumber })
- callbackSetPage = self._browser.download(GCDialer._setforwardURL, callbackPostData)
+ try:
+ callbackSetPage = self._browser.download(GCDialer._setforwardURL, callbackPostData)
+ except urllib2.URLError, e:
+ warnings.warn("%s is not accesible" % GCDialer._setforwardURL, UserWarning, 2)
+ return False
+
self._browser.cookies.save()
+ return True
def getCallbackNumber(self):
"""
"""
@returns Iterable of (personsName, phoneNumber, date, action)
"""
- recentCallsPage = self._browser.download(GCDialer._inboxallURL)
+ try:
+ recentCallsPage = self._browser.download(GCDialer._inboxallURL)
+ except urllib2.URLError, e:
+ warnings.warn("%s is not accesible" % GCDialer._inboxallURL, UserWarning, 2)
+ return
+
for match in self._inboxRe.finditer(recentCallsPage):
phoneNumber = match.group(4)
action = match.group(1)