/
endpoints.js
60 lines (49 loc) · 1.35 KB
/
endpoints.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var fs = require('fs')
var mkdirP = require('mkdirp')
var fs = require('fs')
var crypto = require('crypto')
var es = require('event-stream')
var join = require('path').join
function hash (key) {
return crypto.createHash('sha1').update(key).digest('hex')
}
module.exports = function (basedir, exports) {
exports = exports || {}
/*
okay, so this is gonna run in the browser, attached to localStorage also.
*/
exports.put = function (key, opts) {
var _key = hash(key)
var dir = _key.substring(0, 2)
var file = key
var stream = es.gate(true), inner
mkdirP(join(basedir, dir), function (err) {
if(err)
return stream.emit('error', err)
stream.pipe(
fs.createWriteStream(join(basedir, dir, file), opts)
.on('close', function () {
stream.emit('close')
})
)
stream.open()
})
return stream
}
exports.get = function (key, opts) {
var _key = hash(key)
var dir = _key.substring(0, 2)
return fs.createReadStream(join(basedir, dir, key), opts)
}
exports.has = function (key, callback) {
var _key = hash(key)
var dir = _key.substring(0, 2)
fs.stat(join(basedir, dir, key), callback)
}
function del(key, cb) {
var _key = hash(key)
var dir = _key.substring(0, 2)
var file = _key.substring(2)
}
return exports
}