bot18
Version:
A high-frequency cryptocurrency trading bot by Zenbot creator @carlos8f
56 lines (53 loc) • 1.52 kB
JavaScript
var sosa_session = require('../')
, middler = require('middler')
, expres = require('expres')
module.exports = function (options) {
// a REST endpoint that interacts with session data
var server = require('http').createServer();
middler(server)
.first(['post', 'put'], function bodyParser (req, res, next) {
var buf = '';
req.on('data', function (data) {
buf += data;
});
req.once('end', function () {
try {
var body = JSON.parse(buf);
}
catch (e) {
return next(e);
}
req.body = body;
next();
});
req.resume();
})
.first(sosa_session(options)) // here's the session middleware
.first(expres.middleware)
.get(['/', '/session'], function (req, res, next) {
res.json(req.session);
})
.post('/session', function (req, res, next) {
Object.keys(req.body).forEach(function (k) {
if (k.match(/^id|rev|created|updated$/i) || req.session.__proto__[k]) return;
req.session[k] = req.body[k];
});
res.json(req.session);
})
.delete('/session', function (req, res, next) {
req.session.destroy(function (err) {
if (err) return next(err);
res.send(204);
});
})
.last(function (req, res, next) {
res.send(404);
});
return server;
};
if (!module.parent) {
var server = module.exports();
server.listen(3000, function () {
console.log('server listening at http://localhost:3000/');
});
}