First step on ING with Browser2

Login and listing of accounts work
This commit is contained in:
Florent 2014-03-27 23:48:16 +01:00
commit 15ca64f3d9
4 changed files with 105 additions and 111 deletions

View file

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright(C) 2009-2011 Romain Bignon, Florent Fourcot
# Copyright(C) 2009-2014 Florent Fourcot
#
# This file is part of weboob.
#
@ -19,74 +19,67 @@
import urllib
import hashlib
from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword
from weboob.tools.browser2 import LoginBrowser, URL, need_login
from weboob.tools.browser import BrowserIncorrectPassword
from weboob.capabilities.bank import Account, TransferError
from .pages import AccountsList, LoginPage, \
TransferPage, TransferConfirmPage, \
BillsPage, StopPage, TitrePage, \
TitreHistory
__all__ = ['Ing']
__all__ = ['IngBrowser']
class Ing(BaseBrowser):
DOMAIN = 'secure.ingdirect.fr'
PROTOCOL = 'https'
DEBUG_HTTP = False
#DEBUG_HTTP = True
ENCODING = None
PAGES = {'.*pages/index.jsf.*': AccountsList,
'.*displayLogin.jsf.*': LoginPage,
'.*transferManagement.jsf': TransferPage,
'.*onHoldTransferManagement.jsf': TransferPage,
'.*DisplayDoTransferCommand.*': TransferPage,
'.*transferCreateValidation.jsf': TransferConfirmPage,
'.*eStatement.jsf': BillsPage,
'.*displayCoordonneesCommand.*': StopPage,
'.*portefeuille-TR.*': (TitrePage, 'raw'),
'.*compteTempsReelCK.php.*': (TitrePage, 'raw'),
'.*compte.php\?ong=3': TitreHistory,
}
CERTHASH = "257100e5f69b3c24b27eaaa82951ca5539e9ca264dee433b7c8d4779e778a0b4"
class IngBrowser(LoginBrowser):
BASEURL = 'https://secure.ingdirect.fr'
# '.*onHoldTransferManagement.jsf': TransferPage,
# '.*displayCoordonneesCommand.*': StopPage,
# '.*compteTempsReelCK.php.*': (TitrePage, 'raw'),
# '.*compte.php\?ong=3': TitreHistory,
# Login and error
loginpage = URL('/public/displayLogin.jsf.*', LoginPage)
errorpage = URL('.*displayCoordonneesCommand.*', StopPage)
# CapBank
accountspage = URL('/protected/pages/index.jsf', AccountsList)
transferpage = URL('/protected/pages/cc/transfer/transferManagement.jsf', TransferPage)
dotransferpage = URL('/general?command=DisplayDoTransferCommand', TransferPage)
valtransferpage = URL('/protected/pages/cc/transfer/create/transferCreateValidation.jsf', TransferConfirmPage)
#transferonhold = URL('
titrepage = URL('https://bourse.ingdirect.fr/priv/portefeuille-TR.php', TitrePage)
titrehistory = URL('https://bourse.ingdirect.fr/priv/compte.php?ong=3', TitreHistory)
# CapBill
billpage = URL('/protected/pages/common/estatement/eStatement.jsf', BillsPage)
loginpage = '/public/displayLogin.jsf'
accountspage = '/protected/pages/index.jsf'
transferpage = '/protected/pages/cc/transfer/transferManagement.jsf'
dotransferpage = '/general?command=DisplayDoTransferCommand'
valtransferpage = '/protected/pages/cc/transfer/create/transferCreateValidation.jsf'
billpage = '/protected/pages/common/estatement/eStatement.jsf'
titrepage = 'https://bourse.ingdirect.fr/priv/portefeuille-TR.php'
where = None
def __init__(self, *args, **kwargs):
self.birthday = kwargs.pop('birthday', None)
BaseBrowser.__init__(self, *args, **kwargs)
LoginBrowser.__init__(self, *args, **kwargs)
def home(self):
self.location(self.loginpage)
def is_logged(self):
return not self.is_on_page(LoginPage)
def login(self):
def do_login(self):
assert isinstance(self.username, basestring)
assert isinstance(self.password, basestring)
assert isinstance(self.birthday, basestring)
assert self.password.isdigit()
assert self.birthday.isdigit()
if not self.is_on_page(LoginPage):
self.location(self.loginpage)
self.loginpage.stay_or_go()
self.page.prelogin(self.username, self.birthday)
self.page.login(self.password)
if self.page.error():
raise BrowserIncorrectPassword()
@need_login
def get_accounts_list(self):
if not self.is_on_page(AccountsList) or self.where != "start":
self.location(self.accountspage)
self.accountspage.go()
self.where = "start"
return self.page.get_list()