From 5f09447da4eae78f1f30de0ab4c76e8411276e92 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Thu, 6 Aug 2020 14:02:22 -0700 Subject: [PATCH] feat(SLP balance): Removing redundent, non-functional SLP balance endpoint --- src/routes/v3/slp.js | 168 ------------------------------------------- 1 file changed, 168 deletions(-) diff --git a/src/routes/v3/slp.js b/src/routes/v3/slp.js index 8225dba..4b85bbb 100644 --- a/src/routes/v3/slp.js +++ b/src/routes/v3/slp.js @@ -64,10 +64,6 @@ class Slp { _this.router.get('/balancesForAddress/:address', _this.balancesForAddress) _this.router.post('/balancesForAddress', _this.balancesForAddressBulk) _this.router.get('/balancesForToken/:tokenId', _this.balancesForTokenSingle) - _this.router.get( - '/balance/:address/:tokenId', - _this.balancesForAddressByTokenID - ) _this.router.get('/convert/:address', _this.convertAddressSingle) _this.router.post('/convert', _this.convertAddressBulk) _this.router.post('/validateTxid', _this.validateBulk) @@ -830,170 +826,6 @@ class Slp { } } - /** - * @api {get} /slp/balance/{address}/{TokenId} List single slp token balance for address. - * @apiName List single slp token balance for address. - * @apiGroup SLP - * @apiDescription Returns List single slp token balance for address. - * - * - * @apiExample Example usage: - * curl -X GET "https://api.fullstack.cash/v3/slp/balance/simpleledger:qz9tzs6d5097ejpg279rg0rnlhz546q4fsnck9wh5m/1cda254d0a995c713b7955298ed246822bee487458cd9747a91d9e81d9d28125" -H "accept:application/json" - * - * - */ - // Retrieve token balances for a single token class, for a single address. - async balancesForAddressByTokenID (req, res, next) { - try { - // Validate input data. - const address = req.params.address - if (!address || address === '') { - res.status(400) - return res.json({ error: 'address can not be empty' }) - } - - const tokenId = req.params.tokenId - if (!tokenId || tokenId === '') { - res.status(400) - return res.json({ error: 'tokenId can not be empty' }) - } - - // Ensure the input is a valid BCH address. - try { - _this.bchjs.SLP.Address.toCashAddress(address) - } catch (err) { - res.status(400) - return res.json({ - error: `Invalid BCH address. Double check your address is valid: ${address}` - }) - } - - // Prevent a common user error. Ensure they are using the correct network address. - const cashAddr = _this.bchjs.SLP.Address.toCashAddress(address) - const networkIsValid = _this.routeUtils.validateNetwork(cashAddr) - if (!networkIsValid) { - res.status(400) - return res.json({ - error: - 'Invalid network. Trying to use a testnet address on mainnet, or vice versa.' - }) - } - - // Convert input to an simpleledger: address. - const slpAddr = _this.bchjs.SLP.Address.toSlpAddress(req.params.address) - - const query = { - v: 3, - q: { - db: ['g'], - aggregate: [ - { - $match: { - 'graphTxn.outputs': { - $elemMatch: { - address: slpAddr, - status: 'UNSPENT', - slpAmount: { $gte: 0 } - } - } - } - }, - { - $unwind: '$graphTxn.outputs' - }, - { - $match: { - 'graphTxn.outputs.address': slpAddr, - 'graphTxn.outputs.status': 'UNSPENT', - 'graphTxn.outputs.slpAmount': { $gte: 0 } - } - }, - { - $project: { - amount: '$graphTxn.outputs.slpAmount', - address: '$graphTxn.outputs.address', - txid: '$graphTxn.txid', - vout: '$graphTxn.outputs.vout', - tokenId: '$tokenDetails.tokenIdHex' - } - }, - { - $group: { - _id: '$tokenId', - balanceString: { - $sum: '$amount' - }, - slpAddress: { - $first: '$address' - } - } - } - ], - limit: 10000 - } - } - - const options = _this.generateCredentials() - - const s = JSON.stringify(query) - const b64 = Buffer.from(s).toString('base64') - const url = `${process.env.SLPDB_URL}q/${b64}` - - // Get data from SLPDB. - const opt = { - method: 'get', - baseURL: url, - headers: options.headers, - timeout: options.timeout - } - const tokenRes = await _this.axios.request(opt) - console.log(`tokenRes.data: ${JSON.stringify(tokenRes.data, null, 2)}`) - - let resVal = { - cashAddress: _this.bchjs.SLP.Address.toCashAddress(slpAddr), - legacyAddress: _this.bchjs.SLP.Address.toLegacyAddress(slpAddr), - slpAddress: slpAddr, - tokenId: tokenId, - balance: 0, - balanceString: '0' - } - - if (tokenRes.data.g.length > 0) { - tokenRes.data.g.forEach(async (token) => { - if (token._id === tokenId) { - resVal = { - cashAddress: _this.bchjs.SLP.Address.toCashAddress(slpAddr), - legacyAddress: _this.bchjs.SLP.Address.toLegacyAddress(slpAddr), - slpAddress: slpAddr, - tokenId: token._id, - balance: parseFloat(token.balanceString), - balanceString: token.balanceString - } - } - }) - } else { - resVal = { - cashAddress: _this.bchjs.SLP.Address.toCashAddress(slpAddr), - legacyAddress: _this.bchjs.SLP.Address.toLegacyAddress(slpAddr), - slpAddress: slpAddr, - tokenId: tokenId, - balance: 0, - balanceString: '0' - } - } - - res.status(200) - return res.json(resVal) - } catch (err) { - wlogger.error('Error in slp.ts/balancesForAddressByTokenID().', err) - - return _this.errorHandler(err, res) - // return res.json({ - // error: `Error in /balance/:address/:tokenId: ${err.message}` - // }) - } - } - /** * @api {get} /slp/convert/{address} Convert address to slpAddr, cashAddr and legacy. * @apiName Convert address to slpAddr, cashAddr and legacy.