@raiden_network/raiden-cli
Version:
Raiden Light Client standalone app with a REST API via HTTP
61 lines (60 loc) • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeTokensRouter = void 0;
const express_1 = require("express");
const rxjs_1 = require("rxjs");
const validation_1 = require("../utils/validation");
async function getAllTokens(_request, response) {
const tokensList = await this.raiden.getTokenList();
response.json(tokensList);
}
async function getTokenNetwork(request, response) {
// Attention: this also enables monitoring token
try {
const tokenNetwork = await this.raiden.monitorToken(request.params.tokenAddress);
response.json(tokenNetwork);
}
catch (error) {
response.status(404).send(error.message);
}
}
async function getTokenPartners(request, response) {
const token = request.params.tokenAddress;
const channelsDict = await (0, rxjs_1.firstValueFrom)(this.raiden.channels$);
const baseUrl = request.baseUrl.replace(/\/\w+$/, '');
response.json(Object.values(channelsDict[token] ?? {}).map((channel) => ({
partner_address: channel.partner,
channel: `${baseUrl}/channels/${token}/${channel.partner}`,
})));
}
async function registerToken(request, response) {
const token = request.params.tokenAddress;
try {
const address = await this.raiden.registerToken(token);
response.status(201).json({ token_network_address: address });
}
catch (error) {
if ((0, validation_1.isInsuficientFundsError)(error)) {
response.status(402).send(error.message);
}
else if ((0, validation_1.isInvalidParameterError)(error) || (0, validation_1.isConflictError)(error)) {
response.status(409).send({ message: error.message });
}
else {
response.status(500).send(error.message);
}
}
}
/**
* @param this - Cli object
* @returns Router instance
*/
function makeTokensRouter() {
const router = (0, express_1.Router)();
router.get('/', getAllTokens.bind(this));
router.get('/:tokenAddress', validation_1.validateAddressParameter.bind('tokenAddress'), getTokenNetwork.bind(this));
router.get('/:tokenAddress/partners', validation_1.validateAddressParameter.bind('tokenAddress'), getTokenPartners.bind(this));
router.put('/:tokenAddress', validation_1.validateAddressParameter.bind('tokenAddress'), registerToken.bind(this));
return router;
}
exports.makeTokensRouter = makeTokensRouter;