Skip to content

Commit a1fcf55

Browse files
committed
Wallet.(balance/total_sent/total_received/fee_per_kb)
1 parent c297d5f commit a1fcf55

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

python/bindings.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,46 @@ PyObject *b_WalletGetChangeAddress(b_Wallet *self, void *closure) {
11781178
return (PyObject *)addrObj;
11791179
}
11801180

1181+
PyObject *b_WalletGetBalance(b_Wallet *self, void *closure) {
1182+
return Py_BuildValue("K", BRWalletBalance(self->ob_fval));
1183+
}
1184+
1185+
PyObject *b_WalletGetTotalSent(b_Wallet *self, void *closure) {
1186+
return Py_BuildValue("K", BRWalletTotalSent(self->ob_fval));
1187+
}
1188+
1189+
PyObject *b_WalletGetTotalReceived(b_Wallet *self, void *closure) {
1190+
return Py_BuildValue("K", BRWalletTotalReceived(self->ob_fval));
1191+
}
1192+
1193+
PyObject *b_WalletGetFeePerKB(b_Wallet *self, void *closure) {
1194+
return Py_BuildValue("K", BRWalletFeePerKb(self->ob_fval));
1195+
}
1196+
1197+
int b_WalletSetFeePerKB(b_Wallet *self, PyObject *value, void *closure) {
1198+
if (!PyLong_Check(value)) {
1199+
PyErr_SetString(PyExc_TypeError, "fee per kb must be a number");
1200+
return -1;;
1201+
}
1202+
BRWalletSetFeePerKb(self->ob_fval, PyLong_AsUnsignedLongLong(value));
1203+
return 0;
1204+
}
1205+
11811206
static PyGetSetDef b_WalletGetSetters[] = {
1207+
// props
1208+
{"balance", (getter)b_WalletGetBalance, NULL,
1209+
"gets the total balance int he wallet, not including transactions known to be invalid",
1210+
NULL},
1211+
{"total_sent", (getter)b_WalletGetTotalSent, NULL,
1212+
"gets the total amount sent not including change addresses",
1213+
NULL},
1214+
{"total_received", (getter)b_WalletGetTotalReceived, NULL,
1215+
"gets the total amount received not including change addresses",
1216+
NULL},
1217+
{"fee_per_kb", (getter)b_WalletGetFeePerKB, (setter)b_WalletSetFeePerKB,
1218+
"fee-per-kb size to use when creating a transaction, in satoshis",
1219+
NULL},
1220+
// callbacks
11821221
{"on_balance_changed",
11831222
(getter)b_WalletGetBalanceChanged, (setter)b_WalletSetBalanceChanged,
11841223
"callback fired when sync is started",

python/tests.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,24 @@ def test_get_change_address(self):
229229
wallet = self._get_wallet()
230230
self.assertNotEqual(wallet.change_address, None)
231231
self.assertEqual(wallet.change_address, wallet.change_address)
232+
233+
def test_get_balance(self):
234+
wallet = self._get_wallet()
235+
self.assertEqual(wallet.balance, 0)
236+
237+
def test_get_total_sent(self):
238+
wallet = self._get_wallet()
239+
self.assertEqual(wallet.total_sent, 0)
240+
241+
def test_get_total_received(self):
242+
wallet = self._get_wallet()
243+
self.assertEqual(wallet.total_received, 0)
244+
245+
def test_get_fee(self):
246+
wallet = self._get_wallet()
247+
self.assertGreater(wallet.fee_per_kb, 1)
248+
249+
def test_set_fee(self):
250+
wallet = self._get_wallet()
251+
wallet.fee_per_kb = 123
252+
self.assertEqual(wallet.fee_per_kb, 123)

0 commit comments

Comments
 (0)