diff --git a/class/User.js b/class/User.js index 23ba5bc..c203b22 100644 --- a/class/User.js +++ b/class/User.js @@ -234,8 +234,11 @@ export class User { return await this._redis.get('ispaid_' + payment_hash); } - async getUserInvoices() { + async getUserInvoices(limit) { let range = await this._redis.lrange('userinvoices_for_' + this._userid, 0, -1); + if (limit && !isNaN(parseInt(limit))) { + range = range.slice(parseInt(limit) * -1); + } let result = []; for (let invoice of range) { invoice = JSON.parse(invoice); diff --git a/controllers/api.js b/controllers/api.js index 767a657..650e1a3 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -32,7 +32,7 @@ bitcoinclient.request('getblockchaininfo', false, function(err, info) { lightning.getInfo({}, function(err, info) { if (err) { - console.error('lnd failure shuuu'); + console.error('lnd failure'); console.dir(err); process.exit(3); } @@ -272,12 +272,27 @@ router.get('/checkpayment/:payment_hash', async function(req, res) { router.get('/balance', postLimiter, async function(req, res) { logger.log('/balance', [req.id]); + try { let u = new User(redis, bitcoinclient, lightning); - if (!(await u.loadByAuthorization(req.headers.authorization))) { + await u.loadByAuthorization(req.headers.authorization); + + if (!u.getUserId()) { return errorBadAuth(res); } + let paid = !!(await u.getPaymentHashPaid(req.params.payment_hash)); + res.send({ paid: paid }); +}); + +router.get('/balance', postLimiter, async function(req, res) { try { + logger.log('/balance', [req.id]); + let u = new User(redis, bitcoinclient, lightning); + if (!(await u.loadByAuthorization(req.headers.authorization))) { + return errorBadAuth(res); + } + logger.log('/balance', [req.id, 'userid: ' + u.getUserId()]); + if (!(await u.getAddress())) await u.generateAddress(); // onchain address needed further await u.accountForPosibleTxids(); let balance = await u.getBalance(); @@ -308,6 +323,7 @@ router.get('/gettxs', async function(req, res) { if (!(await u.loadByAuthorization(req.headers.authorization))) { return errorBadAuth(res); } + logger.log('/gettxs', [req.id, 'userid: ' + u.getUserId()]); if (!(await u.getAddress())) await u.generateAddress(); // onchain addr needed further try { @@ -330,20 +346,17 @@ router.get('/gettxs', async function(req, res) { } }); -router.get('/getuserinvoices', async function(req, res) { +router.get('/getuserinvoices', postLimiter, async function(req, res) { logger.log('/getuserinvoices', [req.id]); let u = new User(redis, bitcoinclient, lightning); if (!(await u.loadByAuthorization(req.headers.authorization))) { return errorBadAuth(res); } + logger.log('/getuserinvoices', [req.id, 'userid: ' + u.getUserId()]); try { - let invoices = await u.getUserInvoices(); - if (req.query.limit && !isNaN(parseInt(req.query.limit))) { - res.send(invoices.slice(parseInt(req.query.limit) * -1)); - } else { - res.send(invoices); - } + let invoices = await u.getUserInvoices(req.query.limit); + res.send(invoices); } catch (Err) { logger.log('', [req.id, 'error getting user invoices:', Err.message, 'userid:', u.getUserId()]); res.send([]); @@ -372,6 +385,7 @@ router.get('/getpending', async function(req, res) { if (!(await u.loadByAuthorization(req.headers.authorization))) { return errorBadAuth(res); } + logger.log('/getpending', [req.id, 'userid: ' + u.getUserId()]); if (!(await u.getAddress())) await u.generateAddress(); // onchain address needed further await u.accountForPosibleTxids(); diff --git a/package-lock.json b/package-lock.json index 7a8b8ce..265dec7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "LndHub", - "version": "1.1.3", + "version": "1.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8cd0a45..726f254 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LndHub", - "version": "1.1.3", + "version": "1.1.4", "description": "", "main": "index.js", "scripts": {