forked from bunqCommunity/bunqJSClient
-
Notifications
You must be signed in to change notification settings - Fork 0
/
proxy_example.js
89 lines (75 loc) · 3.5 KB
/
proxy_example.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require("dotenv").config();
const setup = require("./common/setup");
setup()
.then(async BunqClient => {
const getMonetaryAccounts = async userid => {
return BunqClient.api.monetaryAccount.list(userid);
};
const getPayments = async (userid, monetaryaccountid) => {
return BunqClient.api.payment.list(userid, monetaryaccountid);
};
// enable proxy support
BunqClient.setRequestProxies([false, process.env.SOCKS5_PROXY_URL]);
// get user info connected to this account
const users = await BunqClient.getUsers(true);
// get the direct user object
const userInfo = users[Object.keys(users)[0]];
console.log("\nUsers: ", Object.keys(users).length);
// get accounts list
const accounts = await getMonetaryAccounts(userInfo.id);
console.log("\nAccounts: ", accounts.length);
// filter on the status to get a list of the active accounts
const activeAccounts = accounts.filter(account => {
// get the account type for this account
const accountType = Object.keys(account)[0];
return account[accountType].status === "ACTIVE";
});
if (activeAccounts.length > 0) {
const accountType = Object.keys(activeAccounts[0])[0];
const accountId = activeAccounts[0][accountType].id;
// get all payments for the first monetary account
console.log("\nStart WITH proxy:");
const withProxyStart = new Date();
await Promise.all([
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId)
]);
const withProxyDuration = new Date().getTime() - withProxyStart.getTime();
console.log(`${withProxyDuration.toLocaleString()}ms duration`);
console.log("\nSetting default connection proxy (none)");
// enable proxy support
BunqClient.setRequestProxies([false]);
console.log("Waiting 4s to reset the rate limit to reset");
await new Promise(resolve => setTimeout(resolve, 4000));
// get all payments for the first monetary account
console.log("\nStart regular:");
const noProxyStart = new Date();
await Promise.all([
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId),
getPayments(userInfo.id, accountId)
]);
const noProxyDuration = new Date().getTime() - noProxyStart.getTime();
console.log(`${noProxyDuration.toLocaleString()}ms duration`);
}
})
.catch(error => {
console.log(error);
if (error.response) {
console.log(error.response.data);
}
})
.finally(() => process.exit());