Add support for customizing all daemon api cmds
This commit is contained in:
+121
-52
@@ -29,19 +29,38 @@ module.exports = function(){
|
||||
|
||||
var command = [];
|
||||
|
||||
if (method == 'sendmany' ||
|
||||
method == 'getmasternodecountonline' ||
|
||||
method == 'getmasternodecount' ||
|
||||
method == 'getmasternodelist' ||
|
||||
method == 'getvotelist') {
|
||||
command = specialApiCase(method);
|
||||
} else if (method == 'verifymessage') {
|
||||
command = specialApiCase(method, query_parameters);
|
||||
} else {
|
||||
command = [{
|
||||
method: method,
|
||||
params: params
|
||||
}];
|
||||
switch (method) {
|
||||
case 'getnetworkhashps':
|
||||
case 'getmininginfo':
|
||||
case 'getdifficulty':
|
||||
case 'getconnectioncount':
|
||||
case 'getblockcount':
|
||||
case 'getblockhash':
|
||||
case 'getblock':
|
||||
case 'getrawtransaction':
|
||||
case 'getsupply':
|
||||
case 'getinfo':
|
||||
case 'gettxoutsetinfo':
|
||||
case 'getmaxmoney':
|
||||
case 'getmaxvote':
|
||||
case 'getvote':
|
||||
case 'getphase':
|
||||
case 'getreward':
|
||||
case 'getnextrewardestimate':
|
||||
case 'getnextrewardwhenstr':
|
||||
case 'getvotelist':
|
||||
case 'getmasternodecount':
|
||||
case 'getmasternodelist':
|
||||
case 'verifymessage':
|
||||
case 'sendmany':
|
||||
command = specialApiCase(method, query_parameters);
|
||||
break;
|
||||
default:
|
||||
command = [{
|
||||
method: method,
|
||||
params: params
|
||||
}];
|
||||
break;
|
||||
}
|
||||
|
||||
client.cmd(command, function(err, response){
|
||||
@@ -75,11 +94,99 @@ module.exports = function(){
|
||||
else res.end('This method is restricted.');
|
||||
}
|
||||
}
|
||||
|
||||
function prepareRpcCommand(cmd, addParams) {
|
||||
var method_name = '';
|
||||
var params = addParams || [];
|
||||
|
||||
// Check for null/blank string
|
||||
if (cmd != null && cmd.trim() != '') {
|
||||
// Split cmd by spaces
|
||||
var split = cmd.split(' ');
|
||||
|
||||
for (i=0; i<split.length; i++) {
|
||||
if (i==0)
|
||||
method_name = split[i];
|
||||
else
|
||||
params.push(split[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return { method: method_name, parameters: params };
|
||||
}
|
||||
|
||||
function specialApiCase(method_name, query_parameters){
|
||||
var params = [];
|
||||
|
||||
switch(method_name) {
|
||||
switch (method_name) {
|
||||
case 'getnetworkhashps':
|
||||
case 'getmininginfo':
|
||||
case 'getdifficulty':
|
||||
case 'getconnectioncount':
|
||||
case 'getblockcount':
|
||||
case 'getsupply':
|
||||
case 'getinfo':
|
||||
case 'gettxoutsetinfo':
|
||||
case 'getmaxmoney':
|
||||
case 'getmaxvote':
|
||||
case 'getvote':
|
||||
case 'getphase':
|
||||
case 'getreward':
|
||||
case 'getnextrewardestimate':
|
||||
case 'getnextrewardwhenstr':
|
||||
case 'getvotelist':
|
||||
case 'getmasternodecount':
|
||||
case 'getmasternodelist':
|
||||
var cmd = prepareRpcCommand(settings.api_cmds[method_name]);
|
||||
method_name = cmd.method;
|
||||
params = cmd.parameters;
|
||||
break;
|
||||
case 'getblockhash':
|
||||
for (var parameter in query_parameters) {
|
||||
if (query_parameters.hasOwnProperty(parameter) && (parameter == 'height' || parameter == 'index'))
|
||||
params.push(parseInt(query_parameters[parameter]));
|
||||
}
|
||||
var cmd = prepareRpcCommand(settings.api_cmds.getblockhash, params);
|
||||
method_name = cmd.method;
|
||||
params = cmd.parameters;
|
||||
break;
|
||||
case 'getblock':
|
||||
for (var parameter in query_parameters) {
|
||||
if (query_parameters.hasOwnProperty(parameter) && parameter == 'hash')
|
||||
params.push(query_parameters[parameter]);
|
||||
}
|
||||
var cmd = prepareRpcCommand(settings.api_cmds.getblock, params);
|
||||
method_name = cmd.method;
|
||||
params = cmd.parameters;
|
||||
break;
|
||||
case 'getrawtransaction':
|
||||
for (var parameter in query_parameters) {
|
||||
if (query_parameters.hasOwnProperty(parameter)) {
|
||||
if (parameter == 'txid')
|
||||
params.push(query_parameters[parameter]);
|
||||
else if (parameter == 'decrypt')
|
||||
params.push(parseInt(query_parameters[parameter]));
|
||||
}
|
||||
}
|
||||
var cmd = prepareRpcCommand(settings.api_cmds.getrawtransaction, params);
|
||||
method_name = cmd.method;
|
||||
params = cmd.parameters;
|
||||
break;
|
||||
case 'verifymessage':
|
||||
for (var parameter in query_parameters) {
|
||||
if (query_parameters.hasOwnProperty(parameter)) {
|
||||
if (parameter == 'address' || parameter == 'message')
|
||||
params.push(query_parameters[parameter]);
|
||||
if (parameter == 'signature') {
|
||||
var param = decodeURIComponent(query_parameters[parameter]);
|
||||
while (param.indexOf(" ") > -1) {
|
||||
param = param.replace(" ", "+");
|
||||
}
|
||||
params.push(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'sendmany':
|
||||
var after_account = false;
|
||||
var before_min_conf = true;
|
||||
@@ -107,44 +214,6 @@ module.exports = function(){
|
||||
params.push(address_info);
|
||||
}
|
||||
break;
|
||||
case 'getvotelist':
|
||||
method_name = 'masternodelist'
|
||||
params.push('votes');
|
||||
break;
|
||||
case 'getmasternodelist':
|
||||
method_name = 'masternode'
|
||||
params.push('list');
|
||||
break;
|
||||
case 'getmasternodecountonline':
|
||||
method_name = 'masternode';
|
||||
params.push('count');
|
||||
params.push('enabled');
|
||||
break;
|
||||
case 'getmasternodecount':
|
||||
// split cmd by spaces
|
||||
var sSplit = settings.api_cmds.masternode_count.split(' ');
|
||||
for (i=0; i<sSplit.length; i++) {
|
||||
if (i==0)
|
||||
method_name = sSplit[i];
|
||||
else
|
||||
params.push(sSplit[i]);
|
||||
}
|
||||
break;
|
||||
case 'verifymessage':
|
||||
for (var parameter in query_parameters) {
|
||||
if (query_parameters.hasOwnProperty(parameter)) {
|
||||
if (parameter == 'address' || parameter == 'message')
|
||||
params.push(query_parameters[parameter]);
|
||||
if (parameter == 'signature') {
|
||||
var param = decodeURIComponent(query_parameters[parameter]);
|
||||
while (param.indexOf(" ") > -1) {
|
||||
param = param.replace(" ", "+");
|
||||
}
|
||||
params.push(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return [{
|
||||
|
||||
Reference in New Issue
Block a user