@raiden_network/raiden-cli
Version:
Raiden Light Client standalone app with a REST API via HTTP
61 lines (60 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makePendingTransfersRouter = exports.ApiTransferRole = void 0;
const express_1 = require("express");
const validation_1 = require("../utils/validation");
var ApiTransferRole;
(function (ApiTransferRole) {
ApiTransferRole["initiator"] = "initiator";
ApiTransferRole["mediator"] = "mediator";
ApiTransferRole["target"] = "target,";
})(ApiTransferRole = exports.ApiTransferRole || (exports.ApiTransferRole = {}));
function transformSdkToApiPendingTransfer(transfer) {
let role;
if (transfer.direction === 'sent' && transfer.initiator === this.raiden.address)
role = ApiTransferRole.initiator;
else if (transfer.direction === 'received' && transfer.target === this.raiden.address)
role = ApiTransferRole.target;
else if (transfer.direction === 'sent')
role = ApiTransferRole.mediator;
else
return; // filter out duplicated 'received' side of mediated transfers
return {
channel_identifier: transfer.channelId.toString(),
initiator: transfer.initiator,
locked_amount: transfer.amount.toString(),
payment_identifier: transfer.paymentId.toString(),
role,
target: transfer.target,
token_address: transfer.token,
token_network_address: transfer.tokenNetwork,
transferred_amount: transfer.amount.sub(transfer.fee).toString(),
};
}
async function getPendingTransfers(request, response) {
let filter;
if (request.params.tokenAddress) {
filter = { pending: true, token: request.params.tokenAddress };
if (request.params.partnerAddress)
filter['partner'] = request.params.partnerAddress;
}
else
filter = { pending: true };
this.raiden
.getTransfers(filter, (0, validation_1.queryAsNumbers)(request.query))
.then((transfers) => transfers.map(transformSdkToApiPendingTransfer))
.then((r) => response.json(r), (e) => {
this.log.error(e);
response.status(400).send(e);
});
}
/**
* @param this - Cli object
* @returns Router instance
*/
function makePendingTransfersRouter() {
const router = (0, express_1.Router)();
router.get('/:tokenAddress?/:partnerAddress?', validation_1.validateOptionalAddressParameter.bind('tokenAddress'), validation_1.validateOptionalAddressParameter.bind('partnerAddress'), getPendingTransfers.bind(this));
return router;
}
exports.makePendingTransfersRouter = makePendingTransfersRouter;