APIs for getSink and getConvertValues

- floExchangeAPI.getSink: resolves an active sink id (for a service, default: exchange)
- services can be listed in floExchangeAPI.serviceList

- floExchangeAPI.getConvertValues: resolves the available convert values
This commit is contained in:
sairajzero 2022-11-15 03:29:23 +05:30
parent b029c0ec30
commit c8b70e3fec
4 changed files with 78 additions and 19 deletions

View File

@ -600,6 +600,26 @@
CONVERT_MODE_PUT: 0, CONVERT_MODE_PUT: 0,
} }
const serviceList = exchangeAPI.serviceList = {
EXCHANGE: "exchange",
CONVERT: "convert",
BLOCKCHAIN_BOND: "blockchain-bond",
BOBS_FUND: "bobs-fund"
}
exchangeAPI.getSink = function (service = serviceList.EXCHANGE) {
return new Promise((resolve, reject) => {
if (!(service in serviceList))
return reject(ExchangeError(ExchangeError.BAD_REQUEST_CODE, 'service required', errorCode.INVALID_TYPE));
fetch_api('/get-sink?service=' + service)
.then(result => {
responseParse(result, false)
.then(result => resolve(result))
.catch(error => reject(error))
}).catch(error => reject(error));
})
}
exchangeAPI.getAccount = function (floID, proxySecret) { exchangeAPI.getAccount = function (floID, proxySecret) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let request = { let request = {
@ -1241,6 +1261,17 @@
}) })
} }
exchangeAPI.getConvertValues = function () {
return new Promise((resolve, reject) => {
fetch_api('/get-convert-values')
.then(result => {
responseParse(result)
.then(result => resolve(result))
.catch(error => reject(error))
}).catch(error => reject(error));
})
}
exchangeAPI.convertToBTC = function (amount, floID, sinkID, privKey) { exchangeAPI.convertToBTC = function (amount, floID, sinkID, privKey) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!floCrypto.verifyPrivKey(privKey, floID)) if (!floCrypto.verifyPrivKey(privKey, floID))

View File

@ -76,6 +76,7 @@ module.exports = function App(secret) {
app.get('/rate-history', Request.GetRateHistory); app.get('/rate-history', Request.GetRateHistory);
app.get('/get-balance', Request.GetBalance); app.get('/get-balance', Request.GetBalance);
app.get('/get-transaction', Request.GetTransaction); app.get('/get-transaction', Request.GetTransaction);
app.get('/get-sink', Request.GetSink);
//get account details //get account details
app.post('/account', Request.Account); app.post('/account', Request.Account);
@ -88,6 +89,7 @@ module.exports = function App(secret) {
app.post('/get-transact', Request.GetUserTransacts); app.post('/get-transact', Request.GetUserTransacts);
//convert from or to coin //convert from or to coin
app.get('/get-convert-values', Request.GetConvertValues);
app.post('/convert-to', Request.ConvertTo); app.post('/convert-to', Request.ConvertTo);
app.post('/convert-from', Request.ConvertFrom); app.post('/convert-from', Request.ConvertFrom);
app.post('/deposit-convert-coin-fund', Request.DepositConvertCoinFund); app.post('/deposit-convert-coin-fund', Request.DepositConvertCoinFund);
@ -127,14 +129,6 @@ module.exports = function App(secret) {
set: (assets) => Request.assetList = assets set: (assets) => Request.assetList = assets
}); });
Object.defineProperty(self, "chests", {
set: (chests) => Request.chests = chests
});
Object.defineProperty(self, "collectAndCall", {
set: (fn) => Request.collectAndCall = fn
});
//Refresh data (from blockchain) //Refresh data (from blockchain)
self.refreshData = (nodeList) => Request.refreshData(nodeList); self.refreshData = (nodeList) => Request.refreshData(nodeList);

View File

@ -248,6 +248,5 @@ function auditBalance(sellerID, buyerID, asset) {
module.exports = { module.exports = {
initiate: startCouplingForAsset, initiate: startCouplingForAsset,
stopAll: stopAllInstance, stopAll: stopAllInstance,
updateBalance, updateBalance
price
} }

View File

@ -5,6 +5,8 @@ const market = require("./market");
const conversion = require('./services/conversion'); const conversion = require('./services/conversion');
const blockchain_bonds = require("./services/bonds"); const blockchain_bonds = require("./services/bonds");
const bobs_fund = require("./services/bobs-fund"); const bobs_fund = require("./services/bobs-fund");
const background = require("./background");
const keys = require("./keys");
const { const {
SIGN_EXPIRE_TIME, SIGN_EXPIRE_TIME,
@ -12,6 +14,7 @@ const {
} = require("./_constants")["request"]; } = require("./_constants")["request"];
const eCode = require('../docs/scripts/floExchangeAPI').errorCode; const eCode = require('../docs/scripts/floExchangeAPI').errorCode;
const serviceList = require('../docs/scripts/floExchangeAPI').serviceList;
var trustedIDs, secret; //containers for trusted IDs and secret var trustedIDs, secret; //containers for trusted IDs and secret
@ -132,7 +135,6 @@ function Account(req, res) {
timestamp: data.timestamp timestamp: data.timestamp
}, data.sign, data.floID, data.pubKey).then(req_str => { }, data.sign, data.floID, data.pubKey).then(req_str => {
market.getAccountDetails(data.floID).then(result => { market.getAccountDetails(data.floID).then(result => {
result.sinkID = market.chests.pick;
if (trustedIDs.includes(data.floID)) if (trustedIDs.includes(data.floID))
result.subAdmin = true; result.subAdmin = true;
res.send(result); res.send(result);
@ -493,6 +495,43 @@ function ListTradeTransactions(req, res) {
} }
} }
function GetConvertValues(req, res) {
if (!serving)
res.status(INVALID.e_code).send(INCORRECT_SERVER_ERROR.toString());
else conversion.getConvertValues()
.then(result => res.send(result))
.catch(error => {
if (error instanceof INVALID)
res.status(INVALID.e_code).send(error.toString());
else {
console.error(error);
res.status(INTERNAL.e_code).send(INTERNAL.str("Unable to process! Try again later!"));
}
});
}
function GetSink(req, res) {
if (!serving)
res.status(INVALID.e_code).send(INCORRECT_SERVER_ERROR.toString());
else {
let service = req.query.service;
if (!service)
res.status(INVALID.e_code).send(INVALID.str(eCode.MISSING_PARAMETER, "Missing service parameter"));
else if (!(service in serviceList))
res.status(INVALID.e_code).send(INVALID.str(eCode.INVALID_TYPE, "Invalid service parameter"));
else {
let group;
switch (service) {
case serviceList[EXCHANGE]: group = keys.sink_groups.EXCHANGE; break;
case serviceList[CONVERT]: group = keys.sink_groups.CONVERT; break;
case serviceList[BLOCKCHAIN_BOND]: group = keys.sink_groups.BLOCKCHAIN_BONDS; break;
case serviceList[BOBS_FUND]: group = keys.sink_groups.BOBS_FUND; break;
}
res.send(keys.sink_chest.active_pick(group));
}
}
}
function GetRates(req, res) { function GetRates(req, res) {
if (!serving) if (!serving)
res.status(INVALID.e_code).send(INCORRECT_SERVER_ERROR.toString()); res.status(INVALID.e_code).send(INCORRECT_SERVER_ERROR.toString());
@ -590,6 +629,7 @@ module.exports = {
GetRateHistory, GetRateHistory,
GetTransaction, GetTransaction,
GetBalance, GetBalance,
GetSink,
Account, Account,
DepositFLO, DepositFLO,
WithdrawFLO, WithdrawFLO,
@ -600,6 +640,7 @@ module.exports = {
RemoveUserTag, RemoveUserTag,
AddDistributor, AddDistributor,
RemoveDistributor, RemoveDistributor,
GetConvertValues,
ConvertTo, ConvertTo,
ConvertFrom, ConvertFrom,
DepositConvertCoinFund, DepositConvertCoinFund,
@ -614,12 +655,6 @@ module.exports = {
set assetList(assets) { set assetList(assets) {
market.assetList = assets; market.assetList = assets;
}, },
set chests(c) {
market.chests = c;
},
set collectAndCall(fn) {
market.collectAndCall = fn;
},
set secret(s) { set secret(s) {
secret = s; secret = s;
}, },
@ -629,10 +664,10 @@ module.exports = {
}, },
pause() { pause() {
serving = false; serving = false;
market.periodicProcess.stop(); background.periodicProcess.stop();
}, },
resume() { resume() {
serving = true; serving = true;
market.periodicProcess.start(); background.periodicProcess.start();
} }
}; };