debug clilib

This commit is contained in:
Ivan Socolsky 2015-02-12 18:54:17 -03:00
parent 50c217c994
commit 4171ff4a79
3 changed files with 75 additions and 32 deletions

10
app.js
View File

@ -75,7 +75,7 @@ function getServerWithAuth(req, res, cb) {
var credentials = getCredentials(req); var credentials = getCredentials(req);
var auth = { var auth = {
copayerId: credentials.copayerId, copayerId: credentials.copayerId,
message: req.url + '|' + JSON.stringify(req.body), message: req.url + req.body ? '|' + JSON.stringify(req.body) : '',
signature: credentials.signature, signature: credentials.signature,
}; };
@ -87,20 +87,20 @@ function getServerWithAuth(req, res, cb) {
router.post('/v1/wallets/', function(req, res) { router.post('/v1/wallets/', function(req, res) {
var server = CopayServer.getInstance(); var server = CopayServer.getInstance();
server.createWallet(req.body, function(err, wallet) { server.createWallet(req.body, function(err, walletId) {
if (err) returnError(err, res); if (err) returnError(err, res);
res.json(wallet); res.json(walletId);
}); });
}); });
router.post('/v1/wallets/:id/copayers/', function(req, res) { router.post('/v1/wallets/:id/copayers/', function(req, res) {
req.body.walletId = req.params['id']; req.body.walletId = req.params['id'];
var server = CopayServer.getInstance(); var server = CopayServer.getInstance();
server.joinWallet(req.body, function(err) { server.joinWallet(req.body, function(err, copayerId) {
if (err) returnError(err, res); if (err) returnError(err, res);
res.end(); res.json(copayerId);
}); });
}); });

24
cli.js Normal file
View File

@ -0,0 +1,24 @@
var _ = require('lodash');
var async = require('async');
var log = require('npmlog');
var fs = require('fs');
var clilib = require('./lib/clilib');
fs.unlinkSync('.bit');
clilib.createWallet('my wallet', 'me', 1, 1, function(err, secret) {
if (err) {
console.log(err);
process.exit();
}
clilib.status(function(err, status) {
if (err) {
console.log(err);
process.exit();
}
console.log(status);
})
});

View File

@ -4,7 +4,6 @@ var _ = require('lodash');
var async = require('async'); var async = require('async');
var log = require('npmlog'); var log = require('npmlog');
var request = require('request') var request = require('request')
var commander = require('commander')
log.debug = log.verbose; log.debug = log.verbose;
log.level = 'debug'; log.level = 'debug';
var fs = require('fs') var fs = require('fs')
@ -14,7 +13,7 @@ var SignUtils = require('./signutils');
var BASE_URL = 'http://localhost:3001/copay/api/'; var BASE_URL = 'http://localhost:3001/copay/api/';
var cli = {}; var clilib = {};
function _getUrl(path) { function _getUrl(path) {
@ -22,29 +21,33 @@ function _getUrl(path) {
}; };
function signRequest(url, args) { function _signRequest(url, args) {
}; };
function save(data) { function _save(data) {
fs.writeFileSync('./.bit', JSON.stringify(data)); fs.writeFileSync('.bit', JSON.stringify(data));
}; };
function load() { function _load() {
try { try {
return JSON.parse(fs.readFileSync('./.bit')); return JSON.parse(fs.readFileSync('.bit'));
} catch (ex) {} } catch (ex) {}
}; };
function _createXPrivKey() {
return new Bitcore.HDPrivateKey().toString();
};
clilib.createWallet = function(walletName, copayerName, m, n, cb) { clilib.createWallet = function(walletName, copayerName, m, n, cb) {
var data = load(); var data = _load();
if (!data) { if (data) return cb('Only one wallet can exist');
data = {};
data.xPrivKey = new Bitcore.HDPrivateKey().toString(); data = {
data.m = m; xPrivKey: _createXPrivKey(),
} m: m,
};
var privKey = new Bitcore.PrivateKey(); var privKey = new Bitcore.PrivateKey();
var pubKey = privKey.toPublicKey(); var pubKey = privKey.toPublicKey();
@ -63,23 +66,27 @@ clilib.createWallet = function(walletName, copayerName, m, n, cb) {
}, function(err, res, body) { }, function(err, res, body) {
if (err) return cb(err); if (err) return cb(err);
var walletId = body; var walletId = body;
var secret = walletId + '|' + privKey.toString(); data.secret = walletId + '|' + privKey.toString();
joinWallet(secret, copayerName, function(err) { _save(data);
clilib.joinWallet(data.secret, copayerName, function(err) {
if (err) return cb(err); if (err) return cb(err);
save(data); return cb(null, data.secret);
return cb(null, secret);
}); });
}); });
}; };
clilib.joinWallet = function(secret, copayerName, cb) { clilib.joinWallet = function(secret, copayerName, cb) {
var data = load(); var data = _load();
if (data && data.copayerId) return cb('Only one wallet can exist');
if (!data) { if (!data) {
data = {}; data = {
data.xPrivKey = new Bitcore.HDPrivateKey().toString(); xPrivKey: _createXPrivKey(),
};
} }
var secretSplit = secret.split('|'); var secretSplit = secret.split('|');
var walletId = secretSplit[0]; var walletId = secretSplit[0];
var privKey = Bitcore.PrivateKey.fromString(secretSplit[1]); var privKey = Bitcore.PrivateKey.fromString(secretSplit[1]);
@ -102,23 +109,35 @@ clilib.joinWallet = function(secret, copayerName, cb) {
json: true, json: true,
}, function(err, res, body) { }, function(err, res, body) {
if (err) return cb(err); if (err) return cb(err);
var copayerId = body; var copayerId = body;
data.copayerId = copayerId; data.copayerId = copayerId;
save(data);
return status(cb); _save(data);
// TODO: call status to retrieve wallet.m
return clilib.status(cb);
}); });
}; };
clilib.status = function(cb) { clilib.status = function(cb) {
var data = _load();
if (!data || !data.copayerId) return cb('Not a part of an active wallet');
var url = 'v1/dump/';
var signature = _signRequest(url);
request({ request({
headers: {
'x-identity': data.copayerId,
'x-signature': signature,
},
method: 'get', method: 'get',
url: _getUrl('v1/dump/'), url: _getUrl(url),
}, function(err, res, body) { }, function(err, res, body) {
if (err) return cb(err); if (err) return cb(err);
console.log(body); return cb(null, body);
return cb();
}); });
}; };