Multi-asset: User API

This commit is contained in:
sairajzero 2022-02-04 02:54:05 +05:30
parent 92caef2c37
commit df69ee0f7b
4 changed files with 37 additions and 30 deletions

View File

@ -151,9 +151,9 @@ function getTransactionList() {
}); });
} }
function getRate() { function getRates() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
exchangeAPI('/get-rate') exchangeAPI('/get-rates')
.then(result => responseParse(result, false) .then(result => responseParse(result, false)
.then(result => resolve(result)) .then(result => resolve(result))
.catch(error => reject(error))) .catch(error => reject(error)))
@ -268,7 +268,7 @@ function logout(floID, proxySecret) {
}) })
} }
function buy(quantity, max_price, floID, proxySecret) { function buy(asset, quantity, max_price, floID, proxySecret) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (typeof quantity !== "number" || quantity <= 0) if (typeof quantity !== "number" || quantity <= 0)
return reject(`Invalid quantity (${quantity})`); return reject(`Invalid quantity (${quantity})`);
@ -276,12 +276,14 @@ function buy(quantity, max_price, floID, proxySecret) {
return reject(`Invalid max_price (${max_price})`); return reject(`Invalid max_price (${max_price})`);
let request = { let request = {
floID: floID, floID: floID,
asset: asset,
quantity: quantity, quantity: quantity,
max_price: max_price, max_price: max_price,
timestamp: Date.now() timestamp: Date.now()
}; };
request.sign = signRequest({ request.sign = signRequest({
type: "buy_order", type: "buy_order",
asset: asset,
quantity: quantity, quantity: quantity,
max_price: max_price, max_price: max_price,
timestamp: request.timestamp timestamp: request.timestamp
@ -302,7 +304,7 @@ function buy(quantity, max_price, floID, proxySecret) {
} }
function sell(quantity, min_price, floID, proxySecret) { function sell(asset, quantity, min_price, floID, proxySecret) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (typeof quantity !== "number" || quantity <= 0) if (typeof quantity !== "number" || quantity <= 0)
return reject(`Invalid quantity (${quantity})`); return reject(`Invalid quantity (${quantity})`);
@ -310,6 +312,7 @@ function sell(quantity, min_price, floID, proxySecret) {
return reject(`Invalid min_price (${min_price})`); return reject(`Invalid min_price (${min_price})`);
let request = { let request = {
floID: floID, floID: floID,
asset: asset,
quantity: quantity, quantity: quantity,
min_price: min_price, min_price: min_price,
timestamp: Date.now() timestamp: Date.now()
@ -317,6 +320,7 @@ function sell(quantity, min_price, floID, proxySecret) {
request.sign = signRequest({ request.sign = signRequest({
type: "sell_order", type: "sell_order",
quantity: quantity, quantity: quantity,
asset: asset,
min_price: min_price, min_price: min_price,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
@ -379,7 +383,7 @@ function depositFLO(quantity, floID, sinkID, privKey, proxySecret) {
}; };
request.sign = signRequest({ request.sign = signRequest({
type: "deposit_FLO", type: "deposit_FLO",
txid: request.txid, txid: txid,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
console.debug(request); console.debug(request);
@ -407,7 +411,7 @@ function withdrawFLO(quantity, floID, proxySecret) {
}; };
request.sign = signRequest({ request.sign = signRequest({
type: "withdraw_FLO", type: "withdraw_FLO",
amount: request.amount, amount: quantity,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
console.debug(request); console.debug(request);
@ -425,24 +429,24 @@ function withdrawFLO(quantity, floID, proxySecret) {
}) })
} }
function depositRupee(quantity, floID, sinkID, privKey, proxySecret) { function depositToken(token, quantity, floID, sinkID, privKey, proxySecret) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!floCrypto.verifyPrivKey(privKey, floID)) if (!floCrypto.verifyPrivKey(privKey, floID))
return reject("Invalid Private Key"); return reject("Invalid Private Key");
tokenAPI.sendToken(privKey, quantity, sinkID, 'Deposit Rupee in market').then(txid => { tokenAPI.sendToken(privKey, quantity, sinkID, 'Deposit Rupee in market', token).then(txid => {
let request = { let request = {
floID: floID, floID: floID,
txid: txid, txid: txid,
timestamp: Date.now() timestamp: Date.now()
}; };
request.sign = signRequest({ request.sign = signRequest({
type: "deposit_Rupee", type: "deposit_Token",
txid: request.txid, txid: txid,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
console.debug(request); console.debug(request);
exchangeAPI('/deposit-rupee', { exchangeAPI('/deposit-token', {
method: "POST", method: "POST",
headers: { headers: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
@ -456,21 +460,23 @@ function depositRupee(quantity, floID, sinkID, privKey, proxySecret) {
}) })
} }
function withdrawRupee(quantity, floID, proxySecret) { function withdrawToken(token, quantity, floID, proxySecret) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let request = { let request = {
floID: floID, floID: floID,
token: token,
amount: quantity, amount: quantity,
timestamp: Date.now() timestamp: Date.now()
}; };
request.sign = signRequest({ request.sign = signRequest({
type: "withdraw_Rupee", type: "withdraw_Token",
amount: request.amount, token: token,
amount: quantity,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
console.debug(request); console.debug(request);
exchangeAPI('/withdraw-rupee', { exchangeAPI('/withdraw-token', {
method: "POST", method: "POST",
headers: { headers: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
@ -493,8 +499,8 @@ function addUserTag(tag_user, tag, floID, proxySecret) {
}; };
request.sign = signRequest({ request.sign = signRequest({
command: "add_Tag", command: "add_Tag",
user: request.user, user: tag_user,
tag: request.tag, tag: tag,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
console.debug(request); console.debug(request);
@ -522,8 +528,8 @@ function removeUserTag(tag_user, tag, floID, proxySecret) {
}; };
request.sign = signRequest({ request.sign = signRequest({
command: "remove_Tag", command: "remove_Tag",
user: request.user, user: tag_user,
tag: request.tag, tag: tag,
timestamp: request.timestamp timestamp: request.timestamp
}, proxySecret); }, proxySecret);
console.debug(request); console.debug(request);

View File

@ -1052,9 +1052,9 @@
showProcess('trade_button_wrapper') showProcess('trade_button_wrapper')
try { try {
if (tradeType === 'buy') { if (tradeType === 'buy') {
await buy(quantity, price, proxy.userID, await proxy.secret) await buy(quantity, price, proxy.userID, await proxy.secret) //TODO: asset_name
} else { } else {
await sell(quantity, price, proxy.userID, await proxy.secret) await sell(quantity, price, proxy.userID, await proxy.secret) //TODO: asset_name
} }
getRef('trade_button_wrapper').append(getRef('success_template').content.cloneNode(true)) getRef('trade_button_wrapper').append(getRef('success_template').content.cloneNode(true))
notify(`Placed ${tradeType} order`, 'success') notify(`Placed ${tradeType} order`, 'success')
@ -1197,14 +1197,14 @@
if (asset === 'FLO') { if (asset === 'FLO') {
await depositFLO(quantity, proxy.userID, proxy.sinkID, privKey, proxySecret) await depositFLO(quantity, proxy.userID, proxy.sinkID, privKey, proxySecret)
} else { } else {
await depositRupee(quantity, proxy.userID, proxy.sinkID, privKey, proxySecret) await depositToken(quantity, proxy.userID, proxy.sinkID, privKey, proxySecret) //TODO: token_name
} }
showWalletResult('success', `Sent ${asset} deposit request`, 'This may take upto 30 mins to reflect in your wallet.') showWalletResult('success', `Sent ${asset} deposit request`, 'This may take upto 30 mins to reflect in your wallet.')
} else { } else {
if (asset === 'FLO') { if (asset === 'FLO') {
await withdrawFLO(quantity, proxy.userID, proxySecret) await withdrawFLO(quantity, proxy.userID, proxySecret)
} else { } else {
await withdrawRupee(quantity, proxy.userID, proxySecret) await withdrawToken(quantity, proxy.userID, proxySecret) //TODO: token_name
} }
showWalletResult('success', `Sent ${asset} withdraw request`, 'This may take upto 30 mins to reflect in your wallet.') showWalletResult('success', `Sent ${asset} withdraw request`, 'This may take upto 30 mins to reflect in your wallet.')
} }
@ -1630,10 +1630,11 @@
let floExchangeRate = 0 let floExchangeRate = 0
function updateRate() { function updateRate() {
getRate().then(rate => { getRates().then(rates => {
floExchangeRate = parseFloat(rate) let flo_rate = rates["FLO"];
getRef('flo_rate').textContent = formatAmount(parseFloat(rate)) floExchangeRate = parseFloat(flo_rate)
getRef('get_price').value = parseFloat(parseFloat(rate).toFixed(2)) getRef('flo_rate').textContent = formatAmount(parseFloat(flo_rate))
getRef('get_price').value = parseFloat(parseFloat(flo_rate).toFixed(2))
}).catch(error => console.error(error)) }).catch(error => console.error(error))
} }

View File

@ -72,7 +72,7 @@ module.exports = function App(secret, DB) {
//list all process transactions and rate //list all process transactions and rate
app.get('/list-transactions', Request.ListTransactions); app.get('/list-transactions', Request.ListTransactions);
app.get('/get-rate', Request.getRate) app.get('/get-rates', Request.getRates)
//get account details //get account details
app.post('/account', Request.Account); app.post('/account', Request.Account);

View File

@ -268,7 +268,7 @@ function ListTransactions(req, res) {
.catch(error => res.status(INTERNAL.e_code).send("Try again later!")); .catch(error => res.status(INTERNAL.e_code).send("Try again later!"));
} }
function getRate(req, res) { function getRates(req, res) {
if (!serving) if (!serving)
res.status(INVALID.e_code).send(INVALID_SERVER_MSG); res.status(INVALID.e_code).send(INVALID_SERVER_MSG);
else else
@ -484,7 +484,7 @@ module.exports = {
ListSellOrders, ListSellOrders,
ListBuyOrders, ListBuyOrders,
ListTransactions, ListTransactions,
getRate, getRates,
Account, Account,
DepositFLO, DepositFLO,
WithdrawFLO, WithdrawFLO,