diff --git a/weboob/backends/sfr/backend.py b/weboob/backends/sfr/backend.py index ba82bdba..72ec8c36 100644 --- a/weboob/backends/sfr/backend.py +++ b/weboob/backends/sfr/backend.py @@ -41,3 +41,8 @@ class SfrBackend(BaseBackend, ICapMessagesPost): def create_default_browser(self): return self.create_browser(self.config['login'], self.config['password']) + + # ICapMessagesPost methods + + def post_message(self, message): + self.browser.post_message(message) diff --git a/weboob/backends/sfr/browser.py b/weboob/backends/sfr/browser.py index 165beef3..6932e73c 100644 --- a/weboob/backends/sfr/browser.py +++ b/weboob/backends/sfr/browser.py @@ -18,9 +18,10 @@ import urllib +from .pages.compose import ComposePage, ConfirmPage from .pages.login import LoginPage -from weboob.tools.browser import BaseBrowser +from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword __all__ = ['SfrBrowser'] @@ -29,20 +30,25 @@ __all__ = ['SfrBrowser'] class SfrBrowser(BaseBrowser): DOMAIN = 'www.sfr.fr' PAGES = { + 'http://www.sfr.fr/xmscomposer/index.html\?todo=compose': ComposePage, + 'http://www.sfr.fr/xmscomposer/mc/envoyer-texto-mms/confirm.html': ConfirmPage, 'https://www.sfr.fr/cas/login\?service=.*': LoginPage, } - is_logging = False - def home(self): - pass + self.location('http://www.sfr.fr/xmscomposer/index.html?todo=compose') def is_logged(self): - return not self.is_on_page(LoginPage) or self.is_logging + return 'loginForm' not in [form.name for form in self.forms()] def login(self): - self.is_logging = True service_url = 'http://www.sfr.fr/xmscomposer/j_spring_cas_security_check' - self.location('https://www.sfr.fr/cas/login?service=%s' % urllib.quote_plus(service_url)) + self.location('https://www.sfr.fr/cas/login?service=%s' % urllib.quote_plus(service_url), no_login=True) self.page.login(self.username, self.password) - self.is_logging = False + if not self.is_logged(): + raise BrowserIncorrectPassword() + + def post_message(self, message): + if not self.is_on_page(ComposePage): + self.location('http://www.sfr.fr/xmscomposer/index.html\?todo=compose') + self.page.post_message(message) diff --git a/weboob/backends/sfr/pages/compose.py b/weboob/backends/sfr/pages/compose.py new file mode 100644 index 00000000..d5dcf4a6 --- /dev/null +++ b/weboob/backends/sfr/pages/compose.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2010 Christophe Benz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +from weboob.tools.browser import BasePage + + +__all__ = ['ComposePage', 'ConfirmPage'] + + +class ComposePage(BasePage): + def post_message(self, message): + self.browser.select_form(nr=0) + self.browser['msisdns'] = message.receiver + self.browser['textMessage'] = message.content + self.browser.submit() + + +class ConfirmPage(BasePage): + pass diff --git a/weboob/backends/sfr/pages/login.py b/weboob/backends/sfr/pages/login.py index 12b70bcb..af8c7723 100644 --- a/weboob/backends/sfr/pages/login.py +++ b/weboob/backends/sfr/pages/login.py @@ -25,9 +25,7 @@ __all__ = ['LoginPage'] class LoginPage(BasePage): def login(self, login, password): self.browser.select_form(nr=0) -# self.browser['internal'] = 'P' self.browser['username'] = login self.browser['password'] = password self.browser['remember-me'] = ['on'] -# self.browser['identifier'] = '' self.browser.submit()