UNPKG

ride-data-store

Version:

ridematching transport logistics database

81 lines (77 loc) 2.59 kB
// Generated by CoffeeScript 1.12.7 (function() { var level; level = require('level'); module.exports = function(dbPath, opts, cb) { return require("geoplaces")(opts, function(places) { var rds; rds = require("./rds")(places, level(dbPath)); rds.placeDB = places; rds.rest = function(auth, hook) { return function(req, res) { var id, m, query, ref; res.setHeader("content-type", "text/json"); if (req.method === "POST") { return req.on("data", function(ride) { var err, store; try { ride = JSON.parse(ride); store = function() { return rds.save(ride, function(r) { if (r.error) { res.statusCode = 404; } console.log("SAVED", r); res.end(JSON.stringify(r)); return typeof hook === "function" ? hook(r) : void 0; }); }; if (ride.id) { return auth(ride, function(access) { if (access) { return store(); } else { res.statusCode = 401; return res.end(JSON.stringify({ access: "denied" })); } }); } else { return store(); } } catch (error) { err = error; res.statusCode = 400; return res.end(JSON.stringify({ error: "error" })); } }); } else { if (id = (ref = req.url.match(/rides\/(.*?)(\?|$)/)) != null ? ref[1] : void 0) { return rds.get(id, function(r) { return res.end(JSON.stringify(r)); }); } else if (m = req.url.match(/\/(.*?)\/(.*?)(\?|\/|$)/)) { query = { from: decodeURI(m[1]), to: decodeURI(m[2]) }; if (m = req.url.match(/time=(.*)(&|$)/)) { query.time = m[1]; } if (m = req.url.match(/type=(.*)(&|$)/)) { query.type = m[1]; } return rds.find(query, function(stream) { return stream.pipe(res); }); } } }; }; return cb(rds); }); }; }).call(this);