divvy-rest
Version:
A RESTful API for submitting payments and monitoring accounts on the Divvy network.
231 lines (217 loc) • 7.17 kB
JavaScript
var _ = require('lodash');
const DEFAULTS = {
require_destination_tag: true,
require_authorization: true,
disallow_xdv: true,
domain: 'example.com',
email_hash: '23463B99B62A72F26ED677CC556C44E8',
wallet_locator: 'DEADBEEF',
wallet_size: 1,
transfer_rate: 2,
no_freeze: false,
global_freeze: true,
last_ledger: 9903915,
flags: -2146107392,
hash: 'AD922400CB1CE0876CA7203DBE0B1277D0D0EAC56A64F26CEC6C78D447EFEA5E'
};
module.exports.requestPath = function(address, params) {
return '/v1/accounts/' + address + '/settings' + ( params || '' );
};
module.exports.settings = function(options) {
options = options || {};
_.defaults(options, DEFAULTS);
return options;
};
module.exports.accountInfoResponse = function(request) {
return JSON.stringify({
id: request.id,
status: 'success',
type: 'response',
result: {
account_data: {
Account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
Balance: '922913243',
Domain: '6578616D706C652E636F6D',
EmailHash: '23463B99B62A72F26ED677CC556C44E8',
Flags: 9043968,
LedgerEntryType: 'AccountRoot',
OwnerCount: 1,
PreviousTxnID: '19899273706A9E040FDB5885EE991A1DC2BAD878A0D6E7DBCFB714E63BF737F7',
PreviousTxnLgrSeq: 6614625,
Sequence: 2938,
TransferRate: 1002000000,
WalletLocator: '00000000000000000000000000000000000000000000000000000000DEADBEEF',
index: '396400950EA27EB5710C0D5BE1D2B4689139F168AC5D07C13B8140EC3F82AE71',
urlgravatar: 'http://www.gravatar.com/avatar/23463b99b62a72f26ed677cc556c44e8'
},
ledger_current_index: 6614628
}
});
};
module.exports.accountNotFoundResponse = function(request) {
return JSON.stringify({
id: request.id,
status: 'error',
type: 'response',
account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
error: 'actNotFound',
error_code: 15,
error_message: 'Account not found.',
ledger_current_index: 8941468,
request: {
account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
command: 'account_info',
id: request.id
},
validated: false
});
};
module.exports.submitSettingsResponse = function(request, options) {
options = options || {};
_.defaults(options, DEFAULTS);
return JSON.stringify({
id: request.id,
status: 'success',
type: 'response',
result: {
engine_result: 'tesSUCCESS',
engine_result_code: 0,
engine_result_message: 'The transaction was applied.',
tx_blob: request.tx_blob,
tx_json: {
Account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
Fee: '12',
Flags: options.flags,
clearFlag: 6,
SetFlag: 7,
LastLedgerSequence: options.last_ledger,
Sequence: 2938,
SigningPubKey: '02F89EAEC7667B30F33D0687BBA86C3FE2A08CCA40A9186C5BDE2DAA6FA97A37D8',
TransactionType: 'AccountSet',
TxnSignature: '3044022013ED8E41507111736B4C5EC9E4C01A7B570B273B3DE21302F72D4D1B1F20C4EF0220180C1419108CA39A9FF89E12810EC7429E28468E8D0BA61F793E14DB8D9FEA72',
hash: options.hash
}
}
});
};
module.exports.settingsValidatedResponse = function(options) {
options = options || {};
_.defaults(options, DEFAULTS);
return JSON.stringify({
engine_result: 'tesSUCCESS',
engine_result_code: 0,
engine_result_message: 'The transaction was applied.',
ledger_hash: 'F344F3ADB34FF3636B3A5D1005CFF613D24D5969BC646AF490C07B627BF3765D',
ledger_index: 9903908,
meta: {
AffectedNodes: [
{
ModifiedNode: {
FinalFields: {
Account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
Balance: '790495028',
Flags: 0,
OwnerCount: 5,
Sequence: 19
},
LedgerEntryType: 'AccountRoot',
LedgerIndex: '25FF5CC1037AE7E2C491A2E4C6206CBE31D0F1609B6426E6E8C3626BAC8C3439',
PreviousFields: {
Balance: '790495040',
Sequence: 18
},
PreviousTxnID: 'A6023206583A66E5FFDE81B0E6BAEEF3E3FFFF906F370AD675B5BE4B7BB68C42',
PreviousTxnLgrSeq: 9886121
}
}
],
TransactionIndex: 10,
TransactionResult: 'tesSUCCESS'
},
status: 'closed',
transaction: {
Account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
Fee: '12',
Flags: options.flags,
LastLedgerSequence: options.last_ledger,
Sequence: 18,
SigningPubKey: '02F89EAEC7667B30F33D0687BBA86C3FE2A08CCA40A9186C5BDE2DAA6FA97A37D8',
TransactionType: 'AccountSet',
TxnSignature: '3044022013ED8E41507111736B4C5EC9E4C01A7B570B273B3DE21302F72D4D1B1F20C4EF0220180C1419108CA39A9FF89E12810EC7429E28468E8D0BA61F793E14DB8D9FEA72',
hash: options.hash,
date: 469144180
},
type: 'transaction',
validated: true
});
};
module.exports.ledgerSequenceTooHighResponse = function(request) {
return JSON.stringify({
id: request.id,
result: {
engine_result: 'tefMAX_LEDGER',
engine_result_code: -186,
engine_result_message: "Ledger sequence too high.",
tx_blob: request.tx_blob,
tx_json: {
Account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
Fee: '12',
Flags: -2146107392,
clearFlag: 6,
SetFlag: 7,
LastLedgerSequence: 8819963,
Sequence: 2938,
SigningPubKey: '02F89EAEC7667B30F33D0687BBA86C3FE2A08CCA40A9186C5BDE2DAA6FA97A37D8',
TransactionType: 'AccountSet',
TxnSignature: '3044022013ED8E41507111736B4C5EC9E4C01A7B570B273B3DE21302F72D4D1B1F20C4EF0220180C1419108CA39A9FF89E12810EC7429E28468E8D0BA61F793E14DB8D9FEA72',
hash: 'AD922400CB1CE0876CA7203DBE0B1277D0D0EAC56A64F26CEC6C78D447EFEA5E'
}
},
status: 'success',
type: 'response'
});
};
module.exports.RESTAccountSettingsResponse = JSON.stringify({
success: true,
settings: {
account: 'r3GgMwvgvP8h4yVWvjH1dPZNvC37TjzBBE',
transfer_rate: 1002000000,
password_spent: false,
require_destination_tag: true,
require_authorization: false,
disallow_xdv: true,
disable_master: false,
no_freeze: false,
global_freeze: false,
transaction_sequence: '2938',
email_hash: '23463B99B62A72F26ED677CC556C44E8',
wallet_locator: '00000000000000000000000000000000000000000000000000000000DEADBEEF',
wallet_size: '',
message_key: '',
domain: 'example.com',
signers: '',
default_divvy: true
}
});
module.exports.RESTAccountSettingsSubmitResponse = function(options) {
options = options || {};
_.defaults(options, DEFAULTS);
return JSON.stringify({
success: true,
settings: {
no_freeze: false,
global_freeze: true,
email_hash: '23463B99B62A72F26ED677CC556C44E8',
wallet_locator: 'DEADBEEF',
wallet_size: 1,
domain: 'example.com',
transfer_rate: 2,
require_destination_tag: true,
require_authorization: true,
disallow_xdv: true
},
hash: 'AD922400CB1CE0876CA7203DBE0B1277D0D0EAC56A64F26CEC6C78D447EFEA5E',
ledger: options.current_ledger.toString(),
state: options.state
});
};