From 90e3bac8d3d66c7bdef46610d1bd0bc66254df9b Mon Sep 17 00:00:00 2001 From: Evan Schwartz Date: Tue, 5 Dec 2017 14:43:05 -0500 Subject: [PATCH] fix: convert forwarded_by string -> array for serialization resolves https://github.com/interledgerjs/ilp-plugin-mini-accounts/issues/4 --- btp-plugin.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/btp-plugin.js b/btp-plugin.js index ca075b3..08548e8 100644 --- a/btp-plugin.js +++ b/btp-plugin.js @@ -408,12 +408,23 @@ class AbstractBtpPlugin extends EventEmitter { async rejectIncomingTransfer (transferId, reason) { const transfer = this._getIncomingTransferById(transferId) const requestId = await _requestId() + // reason.forwarded_by should be a string according to LPIv1 + // but we might as well accept an array also since the ILP error + // expects an array + let forwardedBy + if (Array.isArray(reason.forwarded_by)) { + forwardedBy = reason.forwarded_by + } else if (typeof reason.forwarded_by === 'string') { + forwardedBy = [reason.forwarded_by] + } else { + forwardedBy = [] + } const rejectionReason = IlpPacket.serializeIlpError({ code: reason.code, name: reason.name, message: reason.message, triggeredBy: reason.triggered_by || '', - forwardedBy: reason.forwarded_by || [], + forwardedBy, triggeredAt: (reason.triggered_at && new Date(reason.triggered_at)) || new Date(), data: (reason.additional_info && JSON.stringify(reason.additional_info)) || '' })