# -*- 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