Beispiel #1
0
class Downloader:
    def get_config(self):
        with open('config.yml', 'r') as f:
            doc = yaml.load(f)
        return doc

    def __init__(self, uuid):
        self.config = self.get_config()

        if self.config['develop'] == True:
            print(uuid)
            return

        self.cpf = self.config['cpf']
        self.password = self.config['password']

        self.nu = Nubank()
        self.nu.authenticate_with_qr_code(self.cpf, self.password, uuid)

    def download_account_data(self):
        if self.config['develop'] == True:
            f = open("account_statements.json", "r")
            data = f.read()
            f.close()
            return json.loads(data)

        account_statements = self.nu.get_account_statements()

        app_json = json.dumps(account_statements)
        f = open("account_statements.json", "w+")
        f.write(app_json)
        f.close()

        return account_statements

    def download_credit_card_data(self):
        if self.config['develop'] == True:
            f = open("card_statements.json", "r")
            data = f.read()
            f.close()
            return json.loads(data)

        card_statements = self.nu.get_card_statements()

        app_json = json.dumps(card_statements)
        f = open("card_statements.json", "w+")
        f.write(app_json)
        f.close()

        return card_statements
Beispiel #2
0
def test_get_card_statements():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')

    statements = nubank_client.get_card_statements()

    assert len(statements) == 1
    assert statements[0]['description'] == 'Shopping Iguatemi'
    assert statements[0]['category'] == 'transaction'
    assert statements[0]['amount'] == 700
    assert statements[0]['time'] == '2017-09-09T02:03:55Z'
    assert statements[0]['title'] == 'transporte'
    assert statements[0]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[0]['details']['lat'] == -12.9818258
    assert statements[0]['details']['lon'] == -38.4652058
    assert statements[0]['details']['subcategory'] == 'card_present'
    assert statements[0]['href'] == 'nuapp://transaction/abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[0]['_links']['self']['href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/_links_123'
Beispiel #3
0
def test_get_card_statements():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    statements = nubank_client.get_card_statements()

    assert len(statements) == 5
    assert statements[0]['description'] == 'Netflix.Com'
    assert statements[0]['category'] == 'transaction'
    assert statements[0]['amount'] == 3290
    assert statements[0]['time'] == '2021-04-21T10:01:48Z'
    assert statements[0]['title'] == 'serviços'
    assert statements[0]['id'] == '43e713a0-07b7-43bb-9700-8d7ad2d5eee6'
    assert statements[0]['details']['subcategory'] == 'card_not_present'
    assert statements[0][
        'href'] == 'nuapp://transaction/43e713a0-07b7-43bb-9700-8d7ad2d5eee6'
    assert statements[0]['_links']['self'][
        'href'] == 'https://prod-s0-facade.nubank.com.br/api/transactions/43e713a0-07b7-43bb-9700-8d7ad2d5eee6'
def test_get_card_statements(monkeypatch, events_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    monkeypatch.setattr(HttpClient, 'get', MagicMock(return_value=events_return))
    nubank_client = Nubank()

    statements = nubank_client.get_card_statements()

    assert len(statements) == 1
    assert statements[0]['description'] == 'Shopping Iguatemi'
    assert statements[0]['category'] == 'transaction'
    assert statements[0]['amount'] == 700
    assert statements[0]['time'] == '2017-09-09T02:03:55Z'
    assert statements[0]['title'] == 'transporte'
    assert statements[0]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[0]['details']['lat'] == -12.9818258
    assert statements[0]['details']['lon'] == -38.4652058
    assert statements[0]['details']['subcategory'] == 'card_present'
    assert statements[0]['href'] == 'nuapp://transaction/abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[0]['_links']['self']['href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/_links_123'
def test_get_card_statements(monkeypatch, authentication_return, events_return):
    response = create_fake_response(authentication_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    nubank_client = Nubank('12345678909', '12345678')

    response = create_fake_response(events_return)
    monkeypatch.setattr('requests.get', MagicMock(return_value=response))
    statements = nubank_client.get_card_statements()

    assert len(statements) == 1
    assert statements[0]['description'] == 'Shopping Iguatemi'
    assert statements[0]['category'] == 'transaction'
    assert statements[0]['amount'] == 700
    assert statements[0]['time'] == '2017-09-09T02:03:55Z'
    assert statements[0]['title'] == 'transporte'
    assert statements[0]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[0]['details']['lat'] == -12.9818258
    assert statements[0]['details']['lon'] == -38.4652058
    assert statements[0]['details']['subcategory'] == 'card_present'
    assert statements[0]['href'] == 'nuapp://transaction/abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[0]['_links']['self']['href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/_links_123'
Beispiel #6
0
    if bi['charges'] > 1:
        description = description + ' ({}/{})'.format(bi['index'] + 1,
                                                      bi['charges'])
    return description


nu = Nubank()
uuid, qr_code = nu.get_qr_code()
qr_code.print_ascii(invert=True)
input('Após escanear o QRCode pressione enter para continuar')

# Somente após escanear o QRCode você pode chamar a linha abaixo
nu.authenticate_with_qr_code(cpf, pwd, uuid)

#recupera as transacoes
nubank_transactions = nu.get_card_statements()

#recupera as faturas
nubank_bills = nu.get_bills()

#busca fatura com base em uma data
nubank_bill = get_bill_by_date(nubank_bills, bill_date)

#recupera os detalhes da fatura
nubank_bill_details = nu.get_bill_details(nubank_bill)

csv_output = open(output_file_path, 'w')
csv_output.write('DATA;DESCRICAO;VALOR')

for bi in nubank_bill_details['bill']['line_items']:
    if 'href' in bi: