Trying to provide more helpful error messages on failed calls
authorEd Page <eopage@byu.net>
Sat, 18 Dec 2010 15:01:56 +0000 (09:01 -0600)
committerEd Page <eopage@byu.net>
Sat, 18 Dec 2010 15:01:56 +0000 (09:01 -0600)
src/backends/gvoice/gvoice.py
src/util/qui_utils.py

index 716b7b9..36f4ac1 100755 (executable)
@@ -791,9 +791,27 @@ class GVoiceBackend(object):
 
        def _parse_with_validation(self, page):
                json = parse_json(page)
-               validate_response(json)
+               self._validate_response(json)
                return json
 
+       def _validate_response(self, response):
+               """
+               Validates that the JSON response is A-OK
+               """
+               try:
+                       assert response is not None, "Response not provided"
+                       assert 'ok' in response, "Response lacks status"
+                       assert response['ok'], "Response not good"
+               except AssertionError:
+                       try:
+                               if response["data"]["code"] == 20:
+                                       raise RuntimeError(
+"""Ambiguous error 20 returned by Google Voice.
+Please verify you have configured your callback number (currently "%s").  If it is configured some other suspected causes are: non-verified callback numbers, and Gizmo5 callback numbers.""" % self._callbackNumber)
+                       except KeyError:
+                               pass
+                       raise RuntimeError('There was a problem with GV: %s' % response)
+
 
 _UNESCAPE_ENTITIES = {
  "&quot;": '"',
@@ -895,18 +913,6 @@ def extract_payload(flatXml):
        return jsonTree, flatHtml
 
 
-def validate_response(response):
-       """
-       Validates that the JSON response is A-OK
-       """
-       try:
-               assert response is not None, "Response not provided"
-               assert 'ok' in response, "Response lacks status"
-               assert response['ok'], "Response not good"
-       except AssertionError:
-               raise RuntimeError('There was a problem with GV: %s' % response)
-
-
 def guess_phone_type(number):
        if number.startswith("747") or number.startswith("1747") or number.startswith("+1747"):
                return GVoiceBackend.PHONE_TYPE_GIZMO
index 41ed1bd..de5d1fb 100644 (file)
@@ -116,6 +116,7 @@ class ErrorDisplay(object):
                self._message = QtGui.QLabel()
                self._message.setText("Boo")
                self._message.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
+               self._message.setWordWrap(True)
 
                closeIcon = get_theme_icon(("window-close", "general_close", "gtk-close"), self._SENTINEL_ICON)
                if closeIcon is not self._SENTINEL_ICON: