From c3fa967a0a6abfd8cec1f16649efe766cdd07599 Mon Sep 17 00:00:00 2001 From: Typicode Date: Wed, 19 Mar 2014 10:31:54 +0100 Subject: [PATCH] Fix static files --- package.json | 4 +++- src/command.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/server.js | 23 ++++++++++-------- 3 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 src/command.js diff --git a/package.json b/package.json index 5ded30f..21f111f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,9 @@ "underscore.inflections": "~0.2.1", "moment": "~2.4.0", "low": "^0.4.2", - "restify": "^2.6.3" + "restify": "^2.6.3", + "yargs": "^1.2.1", + "ecstatic": "^0.4.13" }, "devDependencies": { "supertest": "~0.8.1", diff --git a/src/command.js b/src/command.js new file mode 100644 index 0000000..b61e0cf --- /dev/null +++ b/src/command.js @@ -0,0 +1,64 @@ +var yargv = require('yargs') +var request = require('request') +var low = require('low') +var server = require('./server') + +function show() { + for (var prop in low.db) { + console.log(server.url + '/' + prop) + } +} + +function start(port) { + server.listen(port, function() { + console.log('%s listening at %s', server.name, server.url); + }) +} + +function run() { + var argv = yargv.usage('Usage: $0 ') + .demand(1) + .default('port', 3000) + .argv + + var source = argv._[0] + + if (/\.json$/.test(source)) { + var path = process.cwd() + '/' + source + low.path = path + low.db = require(path); + show() + start() + } + + if (/\.js$/.test(source)) { + var path = process.cwd() + '/' + source + low.db = require(path).run(); + show() + start(argv.port) + } + + if (/^http/.test(source)) { + request.get(source) + .end(function(err, res) { + if (err) { + console.error(err) + } else { + low.db = JSON.parse(res.text) + } + }) + show() + start() + } + + process.stdin.resume() + process.stdin.setEncoding('utf8') + + process.stdin.on('data', function (chunk) { + if (chunk.trim().toLowerCase() === 's') { + low.save('db-' + Date.now() + '.json') + } + }) +} + +module.exports.run = run diff --git a/src/server.js b/src/server.js index 5af9ab5..f8b454f 100644 --- a/src/server.js +++ b/src/server.js @@ -1,11 +1,14 @@ -var _ = require('underscore') -var low = require('low') -var restify = require('restify') -var utils = require('./utils') +var _ = require('underscore') +var low = require('low') +var ecstatic = require('ecstatic') +var restify = require('restify') +var utils = require('./utils') low._.createId = utils.createId -var server = restify.createServer() +var server = restify.createServer({ + name: 'JSON Server' +}) server.use(restify.acceptParser(server.acceptable)) server.use(restify.queryParser()) @@ -16,6 +19,11 @@ server.use(restify.gzipResponse()) routes = {} +server.get(/^\/$|.*(.css)/, restify.serveStatic({ + 'directory': __dirname + '/../public', + 'default': 'index.html' +})) + // GET /db routes.db = function(req, res, next) { res.send(low.db) @@ -112,11 +120,6 @@ server.put('/:resource/:id', routes.update) server.patch('/:resource/:id', routes.update) server.del('/:resource/:id', routes.destroy) -server.get('/', restify.serveStatic({ - directory: './public', - default: 'index.html' -})); - server.on('after', function (req, res, route, err) { var latency = Date.now() - req.time() console.log('%s %s %s - %sms',