mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-03-30 15:08:28 +00:00
Examples for writing and reading
This commit is contained in:
parent
c39a991edf
commit
a22e70a6cd
@ -14,11 +14,11 @@ class EncryptedHashCacheItem extends HashCacheItem {
|
|||||||
constructor(sequenceNumber, targetHash, metaInfo, publicKey, privateKey, salt) {
|
constructor(sequenceNumber, targetHash, metaInfo, publicKey, privateKey, salt) {
|
||||||
super(sequenceNumber, targetHash, metaInfo);
|
super(sequenceNumber, targetHash, metaInfo);
|
||||||
this.pubkey = publicKey;
|
this.pubkey = publicKey;
|
||||||
this.target = encryption.encrypt(targetHash, privateKey, publicKey);
|
|
||||||
this.payload = this.target; // old hash-cache api compatibility
|
|
||||||
this.meta = encryption.encrypt(JSON.stringify(metaInfo), privateKey, publicKey);
|
|
||||||
try {
|
try {
|
||||||
this.sig = encryption.sign(this.target, privateKey, this.seq, salt || "");
|
this.target = encryption.encrypt(targetHash, privateKey, publicKey);
|
||||||
|
this.payload = this.target; // old hash-cache api compatibility
|
||||||
|
this.meta = encryption.encrypt(JSON.stringify(metaInfo), privateKey, publicKey);
|
||||||
|
this.sig = encryption.sign(this.target, privateKey, this.seq, salt || "");
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.log("Signing HashCacheItem failed:", e);
|
console.log("Signing HashCacheItem failed:", e);
|
||||||
}
|
}
|
||||||
|
51
README.md
51
README.md
@ -29,38 +29,41 @@ orbit-server uses linked lists on top of IPFS.
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
```javascript
|
```javascript
|
||||||
|
var async = require('asyncawait/async');
|
||||||
var OrbitClient = require('./OrbitClient');
|
var OrbitClient = require('./OrbitClient');
|
||||||
|
|
||||||
var host = 'localhost:3006'; // orbit-server address
|
var host = 'localhost:3006'; // orbit-server address
|
||||||
|
|
||||||
// Connect
|
async(() => {
|
||||||
var orbit = OrbitClient.connect(host, username, password); // OrbitClient
|
// Connect
|
||||||
|
var orbit = OrbitClient.connect(host, username, password); // OrbitClient
|
||||||
|
|
||||||
var channelName = 'hello-world';
|
var channelName = 'hello-world';
|
||||||
var channelPwd = '';
|
var channelPwd = '';
|
||||||
|
|
||||||
// Send a message
|
// Send a message
|
||||||
var head = orbit.channel(channelName, channelPwd).send('hello'); // <ipfs-hash>
|
var head = orbit.channel(channelName, channelPwd).send('hello'); // <ipfs-hash>
|
||||||
|
|
||||||
// Iterator options
|
// Iterator options
|
||||||
var options = { limit: -1 }; // fetch all messages
|
var options = { limit: -1 }; // fetch all messages
|
||||||
// {
|
// {
|
||||||
// gt: <hash>,
|
// gt: <hash>,
|
||||||
// gte: <hash>,
|
// gte: <hash>,
|
||||||
// lt: <hash>,
|
// lt: <hash>,
|
||||||
// lte: <hash>,
|
// lte: <hash>,
|
||||||
// limit: 10,
|
// limit: 10,
|
||||||
// reverse: true
|
// reverse: true
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// Get messages
|
// Get messages
|
||||||
var iter = orbit.channel(channelName, channelPwd).iterator(options); // Symbol.iterator
|
var iter = orbit.channel(channelName, channelPwd).iterator(options); // Symbol.iterator
|
||||||
var next = iter.next(); // { value: <item>, done: false|true}
|
var next = iter.next(); // { value: <item>, done: false|true}
|
||||||
|
|
||||||
// OR:
|
// OR:
|
||||||
// for(let i of iter)
|
// for(let i of iter)
|
||||||
// console.log(i.hash, i.item.Data.seq);
|
// console.log(i.hash, i.item.Data.seq);
|
||||||
|
|
||||||
// delete channel
|
// delete channel
|
||||||
var result = orbit.channel(channelName, channelPwd).delete(); // true | false
|
var result = orbit.channel(channelName, channelPwd).delete(); // true | false
|
||||||
|
})();
|
||||||
```
|
```
|
||||||
|
19
Timer.js
Normal file
19
Timer.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
class Timer {
|
||||||
|
constructor(startImmediately) {
|
||||||
|
this.startTime = startImmediately ? new Date().getTime() : null;
|
||||||
|
this.endTime = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
this.startTime = new Date().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
this.endTime = new Date().getTime();
|
||||||
|
return (this.endTime - this.startTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Timer;
|
44
examples/readMessages.js
Normal file
44
examples/readMessages.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var async = require('asyncawait/async');
|
||||||
|
var OrbitClient = require('../OrbitClient');
|
||||||
|
var Timer = require('../Timer');
|
||||||
|
|
||||||
|
var host = 'localhost:3006';
|
||||||
|
var username = 'testrunner';
|
||||||
|
var password = '';
|
||||||
|
|
||||||
|
let run = (async(() => {
|
||||||
|
try {
|
||||||
|
var channel = 'hello-world-test1'
|
||||||
|
|
||||||
|
// Connect
|
||||||
|
var orbit = OrbitClient.connect(host, username, password);
|
||||||
|
|
||||||
|
var timer = new Timer(true);
|
||||||
|
|
||||||
|
// Iterator options
|
||||||
|
var options = {
|
||||||
|
limit: -1, // fetch all
|
||||||
|
reverse: false, // latest first
|
||||||
|
// gte: <ipfs-hash> // eg. 'QmQGa4Bsw3JxxydNNbbYnXfnW1BC54koTidHQ6Am2VM8Ep'
|
||||||
|
// lte: <ipfs-hash> // eg. 'QmQGa4Bsw3JxxydNNbbYnXfnW1BC54koTidHQ6Am2VM8Ep'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get all messages
|
||||||
|
var iter = orbit.channel(channel, '').iterator(options);
|
||||||
|
|
||||||
|
for(let i of iter) {
|
||||||
|
console.log(i.item.Data.seq, i.hash, "ts: " + i.item.Data.meta.ts);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Fetch messages took " + timer.stop() + "ms");
|
||||||
|
|
||||||
|
} catch(e) {
|
||||||
|
console.error("error:", e);
|
||||||
|
console.error(e.stack);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}))();
|
||||||
|
|
||||||
|
module.exports = run;
|
38
examples/writeMessages.js
Normal file
38
examples/writeMessages.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var async = require('asyncawait/async');
|
||||||
|
var OrbitClient = require('../OrbitClient');
|
||||||
|
var Timer = require('../Timer');
|
||||||
|
|
||||||
|
var host = 'localhost:3006';
|
||||||
|
var username = 'testrunner';
|
||||||
|
var password = '';
|
||||||
|
|
||||||
|
let run = (async(() => {
|
||||||
|
try {
|
||||||
|
var channel = 'hello-world-test1'
|
||||||
|
|
||||||
|
// Connect
|
||||||
|
var orbit = OrbitClient.connect(host, username, password);
|
||||||
|
|
||||||
|
// Delete channel and its data
|
||||||
|
var result = orbit.channel(channel, '').delete();
|
||||||
|
|
||||||
|
var messages = 100;
|
||||||
|
var i = 0;
|
||||||
|
while(i < messages) {
|
||||||
|
var timer = new Timer(true);
|
||||||
|
// Send a message
|
||||||
|
var head = orbit.channel(channel, '').send('hello');
|
||||||
|
console.log(i, head, timer.stop() + "ms");
|
||||||
|
i ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(e) {
|
||||||
|
console.error("error:", e);
|
||||||
|
console.error(e.stack);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}))();
|
||||||
|
|
||||||
|
module.exports = run;
|
Loading…
x
Reference in New Issue
Block a user