UNPKG

@raiden_network/raiden-cli

Version:

Raiden Light Client standalone app with a REST API via HTTP

61 lines (60 loc) 2.44 kB
"use strict"; 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;