Skip to content

Commit 5291b96

Browse files
author
James Halliday
committed
image server
1 parent 0aeefc2 commit 5291b96

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

leveldb/image_server.js

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
var fs = require('fs');
2+
var http = require('http');
3+
var blob = require('content-addressable-blob-store');
4+
var through = require('through2');
5+
var store = blob({ dir: './blobs' });
6+
var level = require('level');
7+
var db = level('./db', { valueEncoding: 'json' });
8+
9+
var server = http.createServer(function (req, res) {
10+
if (req.method === 'POST') {
11+
var w = store.createWriteStream();
12+
req.pipe(w);
13+
w.on('finish', function () {
14+
var now = new Date().toISOString();
15+
var nowkey = 'images-recent!' + now + '!' + w.key;
16+
db.batch([
17+
{ type: 'put', key: 'images!' + w.key, value: 0 },
18+
{ type: 'put', key: nowkey, value: 0 }
19+
], function (err) {
20+
if (err) res.end(err + '\n')
21+
else res.end(w.key + '\n')
22+
});
23+
});
24+
}
25+
else if (req.url === '/images') {
26+
var r = db.createReadStream({
27+
gt: 'images-recent!',
28+
lt: 'images-recent!~'
29+
})
30+
r.pipe(through.obj(function (row, enc, next) {
31+
this.push(row.key.split('!')[2] + '\n');
32+
next();
33+
})).pipe(res);
34+
}
35+
else {
36+
var r = store.createReadStream({ key: req.url.slice(1) });
37+
r.on('error', function (err) { res.end(err + '\n') });
38+
r.pipe(res);
39+
}
40+
});
41+
server.listen(5000);

0 commit comments

Comments
 (0)