|
|
@ -83,6 +83,39 @@ ClientLib.prototype._loadAndCheck = function() { |
|
|
|
} |
|
|
|
return data; |
|
|
|
}; |
|
|
|
|
|
|
|
ClientLib.prototype._doRequest = function(type, url, args, data, cb) { |
|
|
|
var reqSignature = _signRequest(url, args, data.signingPrivKey); |
|
|
|
var absUrl = _getUrl(url); |
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': reqSignature, |
|
|
|
}, |
|
|
|
method: type, |
|
|
|
url: absUrl, |
|
|
|
body: args, |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
ClientLib.prototype._doPostRequest = function(url, args, data, cb) { |
|
|
|
return this._doRequest('post', url, args, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
ClientLib.prototype._doGetRequest = function(url, data, cb) { |
|
|
|
return this._doRequest('get', url, {}, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ClientLib.prototype.createWallet = function(walletName, copayerName, m, n, network, cb) { |
|
|
|
var self = this; |
|
|
@ -110,19 +143,9 @@ ClientLib.prototype.createWallet = function(walletName, copayerName, m, n, netwo |
|
|
|
pubKey: pubKey.toString(), |
|
|
|
network: network, |
|
|
|
}; |
|
|
|
var url = '/v1/wallets/'; |
|
|
|
|
|
|
|
request({ |
|
|
|
method: 'post', |
|
|
|
url: _getUrl('/v1/wallets/'), |
|
|
|
body: args, |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
|
|
|
|
this._doPostRequest(url, args, data, function(err, body) { |
|
|
|
var walletId = body.walletId; |
|
|
|
var secret = walletId + ':' + privKey.toString() + ':' + (network == 'testnet' ? 'T' : 'L'); |
|
|
|
data.secret = secret; |
|
|
@ -157,19 +180,9 @@ ClientLib.prototype._joinWallet = function(data, secret, copayerName, cb) { |
|
|
|
xPubKey: xPubKey.toString(), |
|
|
|
xPubKeySignature: xPubKeySignature, |
|
|
|
}; |
|
|
|
var url = '/v1/wallets/' + walletId + '/copayers'; |
|
|
|
|
|
|
|
request({ |
|
|
|
method: 'post', |
|
|
|
url: _getUrl('/v1/wallets/' + walletId + '/copayers'), |
|
|
|
body: args, |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
|
|
|
|
this._doPostRequest(url, args, data, function(err, body) { |
|
|
|
var wallet = body.wallet; |
|
|
|
data.copayerId = body.copayerId; |
|
|
|
data.walletPrivKey = walletPrivKey; |
|
|
@ -198,26 +211,10 @@ ClientLib.prototype.status = function(cb) { |
|
|
|
var data = this._loadAndCheck(); |
|
|
|
|
|
|
|
var url = '/v1/wallets/'; |
|
|
|
var signature = _signRequest(url, {}, data.signingPrivKey); |
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': signature, |
|
|
|
}, |
|
|
|
method: 'get', |
|
|
|
url: _getUrl(url), |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
this._doGetRequest(url, data, function(err, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
var wallet = body; |
|
|
|
// TODO
|
|
|
|
//console.log('[clilib.js.214:wallet:]',wallet); //TODO
|
|
|
|
|
|
|
|
var wallet = body; |
|
|
|
if (wallet.n > 0 && wallet.status === 'complete' && !data.verified) { |
|
|
|
var pubKey = Bitcore.PrivateKey.fromString(data.walletPrivKey).toPublicKey().toString(); |
|
|
|
var fake = []; |
|
|
@ -259,25 +256,7 @@ ClientLib.prototype.send = function(inArgs, cb) { |
|
|
|
var args = _createProposalOpts(inArgs, data.signingPrivKey); |
|
|
|
|
|
|
|
var url = '/v1/txproposals/'; |
|
|
|
var signature = _signRequest(url, args, data.signingPrivKey); |
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': signature, |
|
|
|
}, |
|
|
|
method: 'post', |
|
|
|
url: _getUrl(url), |
|
|
|
body: args, |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
|
|
|
|
this._doPostRequest(url, args, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
// Get addresses
|
|
|
@ -287,24 +266,7 @@ ClientLib.prototype.addresses = function(cb) { |
|
|
|
var data = this._loadAndCheck(); |
|
|
|
|
|
|
|
var url = '/v1/addresses/'; |
|
|
|
var signature = _signRequest(url, {}, data.signingPrivKey); |
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': signature, |
|
|
|
}, |
|
|
|
method: 'get', |
|
|
|
url: _getUrl(url), |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
this._doGetRequest(url, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -316,24 +278,7 @@ ClientLib.prototype.address = function(cb) { |
|
|
|
var data = this._loadAndCheck(); |
|
|
|
|
|
|
|
var url = '/v1/addresses/'; |
|
|
|
var signature = _signRequest(url, {}, data.signingPrivKey); |
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': signature, |
|
|
|
}, |
|
|
|
method: 'post', |
|
|
|
url: _getUrl(url), |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
this._doPostRequest(url, {}, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
ClientLib.prototype.history = function(limit, cb) { |
|
|
@ -346,24 +291,7 @@ ClientLib.prototype.balance = function(cb) { |
|
|
|
var data = this._loadAndCheck(); |
|
|
|
|
|
|
|
var url = '/v1/balance/'; |
|
|
|
var signature = _signRequest(url, {}, data.signingPrivKey); |
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': signature, |
|
|
|
}, |
|
|
|
method: 'get', |
|
|
|
url: _getUrl(url), |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
this._doGetRequest(url, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -373,24 +301,7 @@ ClientLib.prototype.txProposals = function(opts, cb) { |
|
|
|
var data = this._loadAndCheck(); |
|
|
|
|
|
|
|
var url = '/v1/txproposals/'; |
|
|
|
var signature = _signRequest(url, {}, data.signingPrivKey); |
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': signature, |
|
|
|
}, |
|
|
|
method: 'get', |
|
|
|
url: _getUrl(url), |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
this._doGetRequest(url, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
ClientLib.prototype.sign = function(txp, cb) { |
|
|
@ -431,26 +342,8 @@ ClientLib.prototype.sign = function(txp, cb) { |
|
|
|
var args = { |
|
|
|
signatures: signatures |
|
|
|
}; |
|
|
|
var reqSignature = _signRequest(url, args, data.signingPrivKey); |
|
|
|
console.log('[clientlib.js.441:reqSignature:]', url, args, reqSignature); //TODO
|
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': reqSignature, |
|
|
|
}, |
|
|
|
method: 'post', |
|
|
|
url: _getUrl(url), |
|
|
|
body: args, |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
this._doPostRequest(url, args, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
ClientLib.prototype.reject = function(txp, reason, cb) { |
|
|
@ -461,25 +354,7 @@ ClientLib.prototype.reject = function(txp, reason, cb) { |
|
|
|
var args = { |
|
|
|
reason: reason || '', |
|
|
|
}; |
|
|
|
var reqSignature = _signRequest(url, args, data.signingPrivKey); |
|
|
|
|
|
|
|
request({ |
|
|
|
headers: { |
|
|
|
'x-identity': data.copayerId, |
|
|
|
'x-signature': reqSignature, |
|
|
|
}, |
|
|
|
method: 'post', |
|
|
|
url: _getUrl(url), |
|
|
|
body: args, |
|
|
|
json: true, |
|
|
|
}, function(err, res, body) { |
|
|
|
if (err) return cb(err); |
|
|
|
if (res.statusCode != 200) { |
|
|
|
_parseError(body); |
|
|
|
return cb('Request error'); |
|
|
|
} |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|
this._doPostRequest(url, args, data, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports = ClientLib; |
|
|
|