UNPKG

divvy-rest

Version:

A RESTful API for submitting payments and monitoring accounts on the Divvy network.

563 lines (528 loc) 16.2 kB
var _ = require('lodash'); var addresses = require('./addresses'); const DEFAULT_LIMIT = 200; module.exports.requestPath = function(address, params) { return '/v1/accounts/' + address + '/balances' + ( params || '' ); }; module.exports.accountInfoResponse = function(request, options) { options = options || {}; _.defaults(options, { validated: true }); return JSON.stringify({ id: request.id, status: 'success', type: 'response', result: { account_data: { Account: addresses.VALID, Balance: '922913243', Domain: '6578616D706C652E636F6D', EmailHash: '23463B99B62A72F26ED677CC556C44E8', Flags: 655360, LedgerEntryType: 'AccountRoot', OwnerCount: 1, PreviousTxnID: '19899273706A9E040FDB5885EE991A1DC2BAD878A0D6E7DBCFB714E63BF737F7', PreviousTxnLgrSeq: 6614625, Sequence: 2938, TransferRate: 1002000000, WalletLocator: '00000000000000000000000000000000000000000000000000000000DEADBEEF', index: '396400950EA27EB5710C0D5BE1D2B4689139F168AC5D07C13B8140EC3F82AE71', urlgravatar: 'http://www.gravatar.com/avatar/23463b99b62a72f26ed677cc556c44e8' }, ledger_index: options.ledger, validated: options.validated } }); }; module.exports.accountNotFoundResponse = function(request) { return JSON.stringify({ id: request.id, status: 'error', type: 'response', account: addresses.VALID, error: 'actNotFound', error_code: 15, error_message: 'Account not found.', ledger_current_index: 8861245, request: { account: addresses.VALID, command: 'account_info', id: request.id }, validated: false }); }; module.exports.accountLinesResponse = function(request, options) { var options = options || {}; _.defaults(options, { validated: true }); return JSON.stringify({ id: request.id, status: 'success', type: 'response', result: { account: addresses.VALID, marker: options.marker, limit: request.limit, ledger_index: options.ledger, validated: options.validated, lines: [ { account: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z', balance: '0', currency: 'ASP', limit: '0', limit_peer: '10', quality_in: 0, quality_out: 0 }, { account: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z', balance: '0', currency: 'XAU', limit: '0', limit_peer: '0', no_divvy: true, no_divvy_peer: true, quality_in: 0, quality_out: 0, freeze: true }, { account: 'rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q', balance: '2.497605752725159', currency: 'USD', limit: '5', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0, freeze: true }, { account: 'rHpXfibHgSb64n8kK9QWDpdbfqSpYbM9a4', balance: '481.992867407479', currency: 'MXN', limit: '1000', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun', balance: '0.793598266778297', currency: 'EUR', limit: '1', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rnuF96W4SZoCJmbHYBFoJZpR8eCaxNvekK', balance: '0', currency: 'CNY', limit: '3', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E', balance: '1.294889190631542', currency: 'DYM', limit: '3', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '0.3488146605801446', currency: 'CHF', limit: '0', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '2.114103174931847', currency: 'BTC', limit: '3', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '0', currency: 'USD', limit: '5000', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rpgKWEmNqSDAGFhy5WDnsyPqfQxbWxKeVd', balance: '-0.00111', currency: 'BTC', limit: '0', limit_peer: '10', quality_in: 0, quality_out: 0 }, { account: 'rBJ3YjwXi2MGbg7GVLuTXUWQ8DjL7tDXh4', balance: '-0.1010780000080207', currency: 'BTC', limit: '0', limit_peer: '10', quality_in: 0, quality_out: 0 }, { account: 'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun', balance: '1', currency: 'USD', limit: '1', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'razqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA', balance: '8.07619790068559', currency: 'CNY', limit: '100', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '7.292695098901099', currency: 'JPY', limit: '0', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z', balance: '0', currency: 'AUX', limit: '0', limit_peer: '0', no_divvy: true, no_divvy_peer: true, quality_in: 0, quality_out: 0 }, { account: 'r9vbV3EHvXWjSkeQ6CAcYVPGeq7TuiXY2X', balance: '0', currency: 'USD', limit: '1', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '12.41688780720394', currency: 'EUR', limit: '100', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rfF3PNkwkq1DygW2wum2HK3RGfgkJjdPVD', balance: '35', currency: 'USD', limit: '500', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rwUVoVMSURqNyvocPCcvLu3ygJzZyw8qwp', balance: '-5', currency: 'JOE', limit: '0', limit_peer: '50', no_divvy_peer: true, quality_in: 0, quality_out: 0 }, { account: 'rE6R3DWF9fBD7CyiQciePF9SqK58Ubp8o2', balance: '0', currency: 'USD', limit: '0', limit_peer: '100', no_divvy_peer: true, quality_in: 0, quality_out: 0 }, { account: 'rE6R3DWF9fBD7CyiQciePF9SqK58Ubp8o2', balance: '0', currency: 'JOE', limit: '0', limit_peer: '100', no_divvy_peer: true, quality_in: 0, quality_out: 0 }, { account: 'rs9M85karFkCRjvc6KMWn8Coigm9cbcgcx', balance: '0', currency: '015841551A748AD2C1F76FF6ECB0CCCD00000000', limit: '10.01037626125837', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rEhDDUUNxpXgEHVJtC2cjXAgyx5VCFxdMF', balance: '0', currency: 'USD', limit: '0', limit_peer: '1', quality_in: 0, quality_out: 0, freeze: true } ] } }); }; module.exports.accountLinesCounterpartyResponse = function(request, options) { var options = options || {}; _.defaults(options, { validated: true }); return JSON.stringify({ id: request.id, status: 'success', type: 'response', result: { account: addresses.VALID, marker: options.marker, limit: request.limit, ledger_index: options.ledger, validated: options.validated, lines: [ { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '0.3488146605801446', currency: 'CHF', limit: '0', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '2.114103174931847', currency: 'BTC', limit: '3', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '0', currency: 'USD', limit: '5000', limit_peer: '0', quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '7.292695098901099', currency: 'JPY', limit: '0', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 }, { account: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', balance: '12.41688780720394', currency: 'EUR', limit: '100', limit_peer: '0', no_divvy: true, quality_in: 0, quality_out: 0 } ] } }); }; module.exports.accountLinesNoCounterpartyResponse = function(request) { return JSON.stringify({ id: request.id, status: 'success', type: 'response', result: { account: addresses.VALID, lines: [ ] } }); }; module.exports.RESTAccountBalancesResponse = function(options) { options = options || {}; _.defaults(options, { validated: true, limit: DEFAULT_LIMIT }); return JSON.stringify({ success: true, marker: options.marker, limit: options.limit, ledger: options.ledger, validated: options.validated, balances: [ { value: '922.913243', currency: 'XDV', counterparty: '' }, { value: '0', currency: 'ASP', counterparty: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z' }, { value: '0', currency: 'XAU', counterparty: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z' }, { value: '2.497605752725159', currency: 'USD', counterparty: 'rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q' }, { value: '481.992867407479', currency: 'MXN', counterparty: 'rHpXfibHgSb64n8kK9QWDpdbfqSpYbM9a4' }, { value: '0.793598266778297', currency: 'EUR', counterparty: 'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun' }, { value: '0', currency: 'CNY', counterparty: 'rnuF96W4SZoCJmbHYBFoJZpR8eCaxNvekK' }, { value: '1.294889190631542', currency: 'DYM', counterparty: 'rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E' }, { value: '0.3488146605801446', currency: 'CHF', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '2.114103174931847', currency: 'BTC', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '0', currency: 'USD', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '-0.00111', currency: 'BTC', counterparty: 'rpgKWEmNqSDAGFhy5WDnsyPqfQxbWxKeVd' }, { value: '-0.1010780000080207', currency: 'BTC', counterparty: 'rBJ3YjwXi2MGbg7GVLuTXUWQ8DjL7tDXh4' }, { value: '1', currency: 'USD', counterparty: 'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun' }, { value: '8.07619790068559', currency: 'CNY', counterparty: 'razqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA' }, { value: '7.292695098901099', currency: 'JPY', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '0', currency: 'AUX', counterparty: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z' }, { value: '0', currency: 'USD', counterparty: 'r9vbV3EHvXWjSkeQ6CAcYVPGeq7TuiXY2X' }, { value: '12.41688780720394', currency: 'EUR', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '35', currency: 'USD', counterparty: 'rfF3PNkwkq1DygW2wum2HK3RGfgkJjdPVD' }, { value: '-5', currency: 'JOE', counterparty: 'rwUVoVMSURqNyvocPCcvLu3ygJzZyw8qwp' }, { value: '0', currency: 'USD', counterparty: 'rE6R3DWF9fBD7CyiQciePF9SqK58Ubp8o2' }, { value: '0', currency: 'JOE', counterparty: 'rE6R3DWF9fBD7CyiQciePF9SqK58Ubp8o2' }, { value: '0', currency: '015841551A748AD2C1F76FF6ECB0CCCD00000000', counterparty: 'rs9M85karFkCRjvc6KMWn8Coigm9cbcgcx' }, { value: '0', currency: 'USD', counterparty: 'rEhDDUUNxpXgEHVJtC2cjXAgyx5VCFxdMF' } ] }); }; module.exports.RESTAccountBalancesUSDResponse = function(options) { options = options || {}; _.defaults(options, { validated: true, limit: DEFAULT_LIMIT }); return JSON.stringify({ success: true, marker: options.marker, limit: options.limit, ledger: options.ledger, validated: options.validated, balances: [ { value: '2.497605752725159', currency: 'USD', counterparty: 'rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q' }, { value: '0', currency: 'USD', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '1', currency: 'USD', counterparty: 'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun' }, { value: '0', currency: 'USD', counterparty: 'r9vbV3EHvXWjSkeQ6CAcYVPGeq7TuiXY2X' }, { value: '35', currency: 'USD', counterparty: 'rfF3PNkwkq1DygW2wum2HK3RGfgkJjdPVD' }, { value: '0', currency: 'USD', counterparty: 'rE6R3DWF9fBD7CyiQciePF9SqK58Ubp8o2' }, { value: '0', currency: 'USD', counterparty: 'rEhDDUUNxpXgEHVJtC2cjXAgyx5VCFxdMF' } ] }); }; module.exports.RESTAccountBalancesXDVResponse = function(options) { options = options || {}; _.defaults(options, { validated: true }); return JSON.stringify({ success: true, limit: options.limit, ledger: options.ledger, validated: options.validated, balances: [ { value: '922.913243', currency: 'XDV', counterparty: '' } ] }); }; module.exports.RESTAccountBalancesCounterpartyResponse = function(options) { options = options || {}; _.defaults(options, { validated: true, limit: DEFAULT_LIMIT }); return JSON.stringify({ success: true, marker: options.marker, limit: options.limit, ledger: options.ledger, validated: options.validated, balances: [ { value: '0.3488146605801446', currency: 'CHF', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '2.114103174931847', currency: 'BTC', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '0', currency: 'USD', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '7.292695098901099', currency: 'JPY', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' }, { value: '12.41688780720394', currency: 'EUR', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' } ] }); }; module.exports.RESTAccountBalancesNoCounterpartyResponse = JSON.stringify({ success: true, balances: [ ] }); module.exports.RESTAccountBalancesCounterpartyCurrencyResponse = function(options) { options = options || {}; _.defaults(options, { validated: true, limit: DEFAULT_LIMIT }); return JSON.stringify({ success: true, marker: options.marker, limit: options.limit, ledger: options.ledger, validated: options.validated, balances: [ { value: '12.41688780720394', currency: 'EUR', counterparty: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' } ] }); }; module.exports.RESTAccountBalancesFrozenResponse = function(options) { options = options || {}; _.defaults(options, { validated: true, limit: DEFAULT_LIMIT }); return JSON.stringify({ success: true, marker: options.marker, limit: options.limit, ledger: options.ledger, validated: options.validated, balances: [ { value: '0', currency: 'XAU', counterparty: 'r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z' }, { value: '2.497605752725159', currency: 'USD', counterparty: 'rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q' }, { value: '0', currency: 'USD', counterparty: 'rEhDDUUNxpXgEHVJtC2cjXAgyx5VCFxdMF' } ] }); };