diff --git a/weboob/backends/sfr/__init__.py b/weboob/backends/sfr/__init__.py new file mode 100644 index 00000000..787cd7fd --- /dev/null +++ b/weboob/backends/sfr/__init__.py @@ -0,0 +1,3 @@ +from .backend import SfrBackend + +__all__ = ['SfrBackend'] diff --git a/weboob/backends/sfr/backend.py b/weboob/backends/sfr/backend.py new file mode 100644 index 00000000..ba82bdba --- /dev/null +++ b/weboob/backends/sfr/backend.py @@ -0,0 +1,43 @@ +# -*- 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 __future__ import with_statement + +from weboob.capabilities.messages import ICapMessagesPost +from weboob.tools.backend import BaseBackend +from weboob.tools.value import ValuesDict, Value + +from .browser import SfrBrowser + + +__all__ = ['SfrBackend'] + + +class SfrBackend(BaseBackend, ICapMessagesPost): + NAME = 'sfr' + MAINTAINER = 'Christophe Benz' + EMAIL = 'christophe.benz@gmail.com' + VERSION = '0.4' + DESCRIPTION = 'SFR french mobile phone provider' + LICENSE = 'GPLv3' + CONFIG = ValuesDict(Value('login', label='Login'), + Value('password', label='Password', masked=True)) + BROWSER = SfrBrowser + + def create_default_browser(self): + return self.create_browser(self.config['login'], self.config['password']) diff --git a/weboob/backends/sfr/browser.py b/weboob/backends/sfr/browser.py new file mode 100644 index 00000000..165beef3 --- /dev/null +++ b/weboob/backends/sfr/browser.py @@ -0,0 +1,48 @@ +# -*- 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. + + +import urllib + +from .pages.login import LoginPage + +from weboob.tools.browser import BaseBrowser + + +__all__ = ['SfrBrowser'] + + +class SfrBrowser(BaseBrowser): + DOMAIN = 'www.sfr.fr' + PAGES = { + 'https://www.sfr.fr/cas/login\?service=.*': LoginPage, + } + + is_logging = False + + def home(self): + pass + + def is_logged(self): + return not self.is_on_page(LoginPage) or self.is_logging + + 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.page.login(self.username, self.password) + self.is_logging = False diff --git a/weboob/backends/sfr/pages/__init__.py b/weboob/backends/sfr/pages/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/weboob/backends/sfr/pages/login.py b/weboob/backends/sfr/pages/login.py new file mode 100644 index 00000000..12b70bcb --- /dev/null +++ b/weboob/backends/sfr/pages/login.py @@ -0,0 +1,33 @@ +# -*- 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__ = ['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() diff --git a/weboob/backends/sfr/test.py b/weboob/backends/sfr/test.py new file mode 100644 index 00000000..1fe6222f --- /dev/null +++ b/weboob/backends/sfr/test.py @@ -0,0 +1,25 @@ +# -*- 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.test import BackendTest + +class SFRTest(BackendTest): + BACKEND = 'sfr' + + def test_sfr(self): + pass