exchangemarket/src/app.js
sairajzero c8b70e3fec 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
2022-11-15 03:29:23 +05:30

153 lines
4.8 KiB
JavaScript

'use strict';
const express = require('express');
//const cookieParser = require("cookie-parser");
//const sessions = require('express-session');
const Request = require('./request');
const path = require('path');
const PUBLIC_DIR = path.resolve(__dirname, '..', 'docs');
module.exports = function App(secret) {
if (!(this instanceof App))
return new App(secret);
var server = null;
const app = express();
//session middleware
/*app.use(sessions({
secret: secret,
saveUninitialized: true,
resave: false,
name: "session"
}));*/
// parsing the incoming data
app.use(express.json());
app.use(express.urlencoded({
extended: true
}));
//serving public file
app.use(express.static(PUBLIC_DIR));
// cookie parser middleware
//app.use(cookieParser());
/* Decentralising - Users will load from user-end files and request via APIs only
//Initital page loading
app.get('/', (req, res) => res.sendFile('home.html', {
root: PUBLIC_DIR
}));
*/
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', "*");
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Pass to next layer of middleware
next();
})
//get code for login
app.get('/get-login-code', Request.GetLoginCode);
//login request
app.post('/login', Request.Login);
//logout request
app.post('/logout', Request.Logout);
//place sell or buy order
app.post('/buy', Request.PlaceBuyOrder);
app.post('/sell', Request.PlaceSellOrder);
//cancel sell or buy order
app.post('/cancel', Request.CancelOrder);
//transfer amount to another user
app.post('/transfer-token', Request.TransferToken);
//list all orders and trades
app.get('/list-sellorders', Request.ListSellOrders);
app.get('/list-buyorders', Request.ListBuyOrders);
app.get('/list-trades', Request.ListTradeTransactions);
//get rates, balance and tx
app.get('/get-rates', Request.GetRates);
app.get('/rate-history', Request.GetRateHistory);
app.get('/get-balance', Request.GetBalance);
app.get('/get-transaction', Request.GetTransaction);
app.get('/get-sink', Request.GetSink);
//get account details
app.post('/account', Request.Account);
//withdraw and deposit request
app.post('/deposit-flo', Request.DepositFLO);
app.post('/withdraw-flo', Request.WithdrawFLO);
app.post('/deposit-token', Request.DepositToken);
app.post('/withdraw-token', Request.WithdrawToken);
app.post('/get-transact', Request.GetUserTransacts);
//convert from or to coin
app.get('/get-convert-values', Request.GetConvertValues);
app.post('/convert-to', Request.ConvertTo);
app.post('/convert-from', Request.ConvertFrom);
app.post('/deposit-convert-coin-fund', Request.DepositConvertCoinFund);
app.post('/deposit-convert-currency-fund', Request.DepositConvertCurrencyFund);
app.post('/withdraw-convert-coin-fund', Request.WithdrawConvertCoinFund);
app.post('/withdraw-convert-currency-fund', Request.WithdrawConvertCurrencyFund);
//close blockchain-bond
app.post('/close-blockchain-bonds', Request.CloseBlockchainBond);
app.post('/close-bobs-fund-investment', Request.CloseBobsFund);
//Manage user tags (Access to trusted IDs only)
app.post('/add-tag', Request.AddUserTag);
app.post('/remove-tag', Request.RemoveUserTag);
app.post('/add-distributor', Request.AddDistributor);
app.post('/remove-distributor', Request.RemoveDistributor);
Request.secret = secret;
//Properties
let self = this;
//return server, express-app
Object.defineProperty(self, "server", {
get: () => server
});
Object.defineProperty(self, "express", {
get: () => app
});
//set trustedID for subAdmin requests
Object.defineProperty(self, "trustedIDs", {
set: (ids) => Request.trustedIDs = ids
});
Object.defineProperty(self, "assetList", {
set: (assets) => Request.assetList = assets
});
//Refresh data (from blockchain)
self.refreshData = (nodeList) => Request.refreshData(nodeList);
//Start (or) Stop servers
self.start = (port) => new Promise(resolve => {
server = app.listen(port, () => {
resolve(`Server Running at port ${port}`);
});
});
self.stop = () => new Promise(resolve => {
server.close(() => {
server = null;
resolve('Server stopped');
});
});
//(Node is not master) Pause serving the clients
self.pause = () => Request.pause();
//(Node is master) Resume serving the clients
self.resume = () => Request.resume();
}