# -*- coding: utf-8 -*-
# Copyright(C) 2018 Vincent A
#
# This file is part of a weboob module.
#
# This weboob module is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This weboob module 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this weboob module. If not, see .
from __future__ import unicode_literals
from weboob.browser import LoginBrowser, need_login, URL
from weboob.capabilities.bank import Investment
from .pages import LoginPage, AccountsPage, AccountPage, InvestPage
class NaloBrowser(LoginBrowser):
BASEURL = 'https://nalo.fr'
login = URL(r'/api/v1/login', LoginPage)
accounts = URL(r'/api/v1/projects/mine/without-details', AccountsPage)
history = URL(r'/api/v1/projects/(?P\d+)/history')
account = URL(r'/api/v1/projects/(?P\d+)', AccountPage)
invests = URL(r'https://app.nalo.fr/scripts/data/data.json', InvestPage)
token = None
def do_login(self):
self.login.go(json={
'email': self.username,
'password': self.password,
'userToken': False,
})
self.token = self.page.get_token()
def build_request(self, *args, **kwargs):
if 'json' in kwargs:
kwargs.setdefault('headers', {})['Accept'] = 'application/json'
if self.token:
kwargs.setdefault('headers', {})['Authorization'] = 'Token %s' % self.token
return super(NaloBrowser, self).build_request(*args, **kwargs)
@need_login
def iter_accounts(self):
self.accounts.go()
return self.page.iter_accounts()
@need_login
def iter_history(self, account):
self.history.go(id=account.id)
return self.page.iter_history()
@need_login
def iter_investment(self, account):
self.account.go(id=account.id)
key = self.page.get_invest_key()
self.invests.go()
data = self.page.get_invest(*key)
for item in data:
inv = Investment()
inv.code = item['isin']
inv.label = item['name']
inv.portfolio_share = item['share']
inv.valuation = account.balance * inv.portfolio_share
yield inv