Updating TOR to use latest GV bindings from Dialcentral, particularly a bug fix is...
authorEd Page <eopage@byu.net>
Sat, 6 Mar 2010 00:07:19 +0000 (18:07 -0600)
committerEd Page <eopage@byu.net>
Sat, 6 Mar 2010 00:07:19 +0000 (18:07 -0600)
src/channel/debug_prompt.py
src/channel/text.py
src/gvoice/backend.py

index ce284e0..2104917 100644 (file)
@@ -257,7 +257,7 @@ class DebugPromptChannel(tp.ChannelTypeText, cmd.Cmd):
                try:
                        number = args[0]
                        message = " ".join(args[1:])
-                       self._conn.session.backend.send_sms(number, message)
+                       self._conn.session.backend.send_sms([number], message)
                except Exception, e:
                        self._report_new_message(str(e))
 
index 2b34ee5..bd54a81 100644 (file)
@@ -74,7 +74,7 @@ class TextChannel(tp.ChannelTypeText):
                                )
 
                _moduleLogger.info("Sending message to %r" % (self.__otherHandle, ))
-               self._conn.session.backend.send_sms(self.__otherHandle.phoneNumber, text)
+               self._conn.session.backend.send_sms([self.__otherHandle.phoneNumber], text)
                self._conn.session.textsStateMachine.reset_timers()
 
                self.Sent(int(time.time()), messageType, text)
index 02ea1df..19275f8 100755 (executable)
@@ -364,12 +364,16 @@ class GVoiceBackend(object):
                )
                self._parse_with_validation(page)
 
-       def send_sms(self, phoneNumber, message):
-               phoneNumber = self._send_validation(phoneNumber)
+       def send_sms(self, phoneNumbers, message):
+               validatedPhoneNumbers = [
+                       self._send_validation(phoneNumber)
+                       for phoneNumber in phoneNumbers
+               ]
+               flattenedPhoneNumbers = ",".join(validatedPhoneNumbers)
                page = self._get_page_with_token(
                        self._sendSmsURL,
                        {
-                               'phoneNumber': phoneNumber,
+                               'phoneNumber': flattenedPhoneNumbers,
                                'text': message
                        },
                )
@@ -553,7 +557,7 @@ class GVoiceBackend(object):
                for messageId, messageHtml in itergroup(splitVoicemail[1:], 2):
                        exactTimeGroup = self._exactVoicemailTimeRegex.search(messageHtml)
                        exactTime = exactTimeGroup.group(1).strip() if exactTimeGroup else ""
-                       exactTime = datetime.datetime.strptime(exactTime, "%m/%d/%y %I:%M %p")
+                       exactTime = google_strptime(exactTime)
                        relativeTimeGroup = self._relativeVoicemailTimeRegex.search(messageHtml)
                        relativeTime = relativeTimeGroup.group(1).strip() if relativeTimeGroup else ""
                        locationGroup = self._voicemailLocationRegex.search(messageHtml)
@@ -601,7 +605,7 @@ class GVoiceBackend(object):
 
                        exactTimeGroup = self._exactVoicemailTimeRegex.search(messageHtml)
                        exactTimeText = exactTimeGroup.group(1).strip() if exactTimeGroup else ""
-                       conv.time = datetime.datetime.strptime(exactTimeText, "%m/%d/%y %I:%M %p")
+                       conv.time = google_strptime(exactTimeText)
                        relativeTimeGroup = self._relativeVoicemailTimeRegex.search(messageHtml)
                        conv.relTime = relativeTimeGroup.group(1).strip() if relativeTimeGroup else ""
                        locationGroup = self._voicemailLocationRegex.search(messageHtml)
@@ -651,7 +655,7 @@ class GVoiceBackend(object):
 
                        exactTimeGroup = self._exactVoicemailTimeRegex.search(messageHtml)
                        exactTimeText = exactTimeGroup.group(1).strip() if exactTimeGroup else ""
-                       conv.time = datetime.datetime.strptime(exactTimeText, "%m/%d/%y %I:%M %p")
+                       conv.time = google_strptime(exactTimeText)
                        relativeTimeGroup = self._relativeVoicemailTimeRegex.search(messageHtml)
                        conv.relTime = relativeTimeGroup.group(1).strip() if relativeTimeGroup else ""
                        conv.location = ""
@@ -718,6 +722,19 @@ class GVoiceBackend(object):
                return json
 
 
+def google_strptime(time):
+       """
+       Hack: Google always returns the time in the same locale.  Sadly if the
+       local system's locale is different, there isn't a way to perfectly handle
+       the time.  So instead we handle implement some time formatting
+       """
+       abbrevTime = time[:-3]
+       parsedTime = datetime.datetime.strptime(abbrevTime, "%m/%d/%y %I:%M")
+       if time[-2] == "PN":
+               parsedTime += datetime.timedelta(hours=12)
+       return parsedTime
+
+
 def itergroup(iterator, count, padValue = None):
        """
        Iterate in groups of 'count' values. If there