mirror of https://github.com/xwiki-labs/cryptpad
implement getTotalSize rpc
This commit is contained in:
parent
2ecabbe6e3
commit
3380cf0348
47
rpc.js
47
rpc.js
|
@ -178,6 +178,38 @@ var getChannelList = function (store, publicKey, cb) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var getFileSize = function (store, channel, cb) {
|
||||||
|
if (!isValidChannel(channel)) {
|
||||||
|
console.log(channel);
|
||||||
|
Trace('INVALID_CHAN');
|
||||||
|
return void cb('INVALID_CHAN');
|
||||||
|
}
|
||||||
|
|
||||||
|
return void store.getChannelSize(channel, function (e, size) {
|
||||||
|
if (e) { return void cb(e.code); }
|
||||||
|
cb(void 0, size);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var getTotalSize = function (pinStore, messageStore, publicKey, cb) {
|
||||||
|
var bytes = 0;
|
||||||
|
|
||||||
|
return void getChannelList(pinStore, publicKey, function (channels) {
|
||||||
|
if (!channels) { cb('NO_ARRAY'); } // unexpected
|
||||||
|
|
||||||
|
var count = channels.length;
|
||||||
|
if (!count) { cb(void 0, 0); }
|
||||||
|
|
||||||
|
channels.forEach(function (channel) {
|
||||||
|
return messageStore.getChannelSize(channel, function (e, size) {
|
||||||
|
count--;
|
||||||
|
if (!e) { bytes += size; }
|
||||||
|
if (count === 0) { return cb(void 0, bytes); }
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
var hashChannelList = function (A) {
|
var hashChannelList = function (A) {
|
||||||
var uniques = [];
|
var uniques = [];
|
||||||
|
|
||||||
|
@ -305,22 +337,17 @@ RPC.create = function (config, cb) {
|
||||||
return unpinChannel(store, safeKey, msg[1], function (e) {
|
return unpinChannel(store, safeKey, msg[1], function (e) {
|
||||||
Respond(e);
|
Respond(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
case 'GET_HASH':
|
case 'GET_HASH':
|
||||||
return void getHash(store, safeKey, function (hash) {
|
return void getHash(store, safeKey, function (hash) {
|
||||||
Respond(void 0, hash);
|
Respond(void 0, hash);
|
||||||
});
|
});
|
||||||
case 'GET_TOTAL_SIZE':
|
case 'GET_TOTAL_SIZE':
|
||||||
return void Respond('NOT_IMPLEMENTED', msg);
|
return getTotalSize(store, ctx.store, safeKey, function (e, size) {
|
||||||
case 'GET_FILE_SIZE':
|
if (e) { return void Respond(e); }
|
||||||
if (!isValidChannel(msg[1])) {
|
Respond(e, size);
|
||||||
return void Respond('INVALID_CHAN');
|
|
||||||
}
|
|
||||||
|
|
||||||
return void ctx.store.getChannelSize(msg[1], function (e, size) {
|
|
||||||
if (e) { return void Respond(e.code); }
|
|
||||||
Respond(void 0, size);
|
|
||||||
});
|
});
|
||||||
|
case 'GET_FILE_SIZE':
|
||||||
|
return void getFileSize(ctx.store, msg[1], Respond);
|
||||||
default:
|
default:
|
||||||
return void Respond('UNSUPPORTED_RPC_CALL', msg);
|
return void Respond('UNSUPPORTED_RPC_CALL', msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,34 +28,8 @@ define([
|
||||||
rpc.send('GET_FILE_SIZE', file, cb);
|
rpc.send('GET_FILE_SIZE', file, cb);
|
||||||
};
|
};
|
||||||
|
|
||||||
var getFileListSize = function (rpc, list, cb) {
|
var getFileListSize = function (rpc, cb) {
|
||||||
var bytes = 0;
|
return rpc.send('GET_TOTAL_SIZE', undefined, cb);
|
||||||
|
|
||||||
var left = list.length;
|
|
||||||
|
|
||||||
list.forEach(function (chan) {
|
|
||||||
getFileSize(rpc, chan, function (e, msg) {
|
|
||||||
if (e) {
|
|
||||||
if (e === 'ENOENT') {
|
|
||||||
|
|
||||||
// these channels no longer exists on the server
|
|
||||||
console.log(e, chan);
|
|
||||||
} else {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
} else if (msg && msg[0] && typeof(msg[0]) === 'number') {
|
|
||||||
bytes += msg[0];
|
|
||||||
//console.log(bytes);
|
|
||||||
} else {
|
|
||||||
console.log("returned message was not a number: ", msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
--left;
|
|
||||||
if (left === 0) {
|
|
||||||
cb(void 0, bytes);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var pinChannel = function (rpc, channel, cb) {
|
var pinChannel = function (rpc, channel, cb) {
|
||||||
|
@ -108,8 +82,8 @@ define([
|
||||||
exp.getFileSize = function (file, cb) {
|
exp.getFileSize = function (file, cb) {
|
||||||
getFileSize(rpc, file, cb);
|
getFileSize(rpc, file, cb);
|
||||||
};
|
};
|
||||||
exp.getFileListSize = function (list, cb) {
|
exp.getFileListSize = function (cb) {
|
||||||
getFileListSize(rpc, list, cb);
|
getFileListSize(rpc, cb);
|
||||||
};
|
};
|
||||||
exp.getServerHash = function (cb) {
|
exp.getServerHash = function (cb) {
|
||||||
getServerHash(rpc, edPublic, cb);
|
getServerHash(rpc, edPublic, cb);
|
||||||
|
|
Loading…
Reference in New Issue