diff --git a/weboob/backends/sfr/backend.py b/weboob/backends/sfr/backend.py index 72ec8c36..fd7fdb90 100644 --- a/weboob/backends/sfr/backend.py +++ b/weboob/backends/sfr/backend.py @@ -18,7 +18,7 @@ from __future__ import with_statement -from weboob.capabilities.messages import ICapMessagesPost +from weboob.capabilities.messages import CantSendMessage, ICapMessagesPost from weboob.tools.backend import BaseBackend from weboob.tools.value import ValuesDict, Value @@ -45,4 +45,6 @@ class SfrBackend(BaseBackend, ICapMessagesPost): # ICapMessagesPost methods def post_message(self, message): + if not message.content.strip(): + raise CantSendMessage(u'Message content is empty.') self.browser.post_message(message) diff --git a/weboob/backends/sfr/browser.py b/weboob/backends/sfr/browser.py index c8220353..e4b2099f 100644 --- a/weboob/backends/sfr/browser.py +++ b/weboob/backends/sfr/browser.py @@ -21,7 +21,6 @@ import urllib from .pages.compose import ClosePage, ComposePage, ConfirmPage, SentPage from .pages.login import LoginPage -from weboob.capabilities.messages import CantSendMessage from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword @@ -57,5 +56,4 @@ class SfrBrowser(BaseBrowser): self.page.post_message(message) if self.is_on_page(ConfirmPage): self.page.confirm() - if self.is_on_page(ClosePage): - raise CantSendMessage('Invalid receiver.') + assert self.is_on_page(ClosePage) or self.is_on_page(SentPage) diff --git a/weboob/backends/sfr/pages/compose.py b/weboob/backends/sfr/pages/compose.py index 2791dc99..ca00e4ea 100644 --- a/weboob/backends/sfr/pages/compose.py +++ b/weboob/backends/sfr/pages/compose.py @@ -16,6 +16,9 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +import re + +from weboob.capabilities.messages import CantSendMessage from weboob.tools.browser import BasePage @@ -27,7 +30,13 @@ class ClosePage(BasePage): class ComposePage(BasePage): + phone_regex = re.compile('^(\+33|0033|0)(6|7)(\d{8})$') + def post_message(self, message): + receiver_list = [receiver.strip() for receiver in message.receiver.split(',')] + for receiver in receiver_list: + if self.phone_regex.match(receiver) is None: + raise CantSendMessage(u'Invalid receiver: %s' % receiver) self.browser.select_form(nr=0) self.browser['msisdns'] = message.receiver self.browser['textMessage'] = message.content