Пример #1
0
    def iter_accounts(self):
        for line in self.doc.xpath(
                '//script[@id="initial-state"]')[0].text.split('\n'):
            m = re.search('window.__INITIAL_STATE__ = (.*);', line)
            if m:
                data = json.loads(literal_eval(m.group(1)))
                break
        else:
            assert False, "data was not found"

        assert data[13] == 'core'
        assert len(data[14]) == 3

        # search for products to get products list
        for index, el in enumerate(data[14][2]):
            if 'products' in el:
                accounts_data = data[14][2][index + 1]

        assert len(accounts_data) == 2
        assert accounts_data[1][4] == 'productsList'

        accounts_data = accounts_data[1][5]
        token = []

        for account_data in accounts_data:
            if isinstance(account_data, basestring):
                balances_token = account_data

            elif isinstance(account_data,
                            list) and not account_data[4][2][0] == "Canceled":
                acc = Account()
                if len(account_data) > 15:
                    token.append(account_data[-11])
                    acc._idforJSON = account_data[10][-1]
                else:
                    acc._idforJSON = account_data[-5][-1]
                acc._idforJSON = re.sub('\s+', ' ', acc._idforJSON)
                acc.number = '-%s' % account_data[2][2]
                acc.label = '%s %s' % (account_data[6][4],
                                       account_data[10][-1])
                acc._balances_token = acc.id = balances_token
                acc._token = token[-1]
                acc.type = Account.TYPE_CARD
                yield acc
Пример #2
0
    def iter_accounts(self):
        for line in self.doc.xpath(
                '//script[@id="initial-state"]')[0].text.split('\n'):
            m = re.search('window.__INITIAL_STATE__ = (.*);', line)
            if m:
                data = list(flatten(json.loads(literal_eval(m.group(1)))))
                break
        else:
            assert False, "data was not found"

        assert data.count(
            'display_account_number') == 1, 'there should be exactly one card'

        acc = Account()
        acc.id = 'XXX-%s' % data[1 + data.index('display_account_number')]
        acc.label = '%s %s' % (data[1 + data.index('description')],
                               data[1 + data.index('embossed_name')])
        acc._index = data[1 + data.index('sorted_index')]
        acc._token = data[1 + data.index('account_token')]
        yield acc