diff --git a/package.json b/package.json index 21f111f..effa268 100644 --- a/package.json +++ b/package.json @@ -8,18 +8,14 @@ "test": "test" }, "dependencies": { - "commander": "~2.0.0", "cors": "~2.1.0", - "express": "~3.4.4", - "logan": "~0.0.2", + "express": "^3.4.8", "superagent": "~0.15.7", "underscore": "~1.5.2", "underscore.inflections": "~0.2.1", - "moment": "~2.4.0", - "low": "^0.4.2", - "restify": "^2.6.3", + "low": "^0.5.0", "yargs": "^1.2.1", - "ecstatic": "^0.4.13" + "chalk": "^0.4.0" }, "devDependencies": { "supertest": "~0.8.1", diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..bfdd40d Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/images/logo.png b/public/images/logo.png deleted file mode 100644 index 8fd3cc1..0000000 Binary files a/public/images/logo.png and /dev/null differ diff --git a/public/index.html b/public/index.html index 8f8b172..025f97f 100644 --- a/public/index.html +++ b/public/index.html @@ -1,28 +1,37 @@ JSON Server - +
- - -

- Congrats! You're successfully running JSON Server. +

+


- -

Resources

+ +

+ + Congrats! You're successfully running JSON Server. + +

+ +
+ +

Routes

+

+ Here are the resources that JSON Server has loaded: +

- To view database current state: + You can view database current state at any time:

-

Requests

- Resources can be accessed in various ways. -

-

- JSON Server supports: -

+ You can use GET, POST, PUT... and access your resources from anywhere + using CORS and JSONP.

-

Documentation

+

Documentation

View README on GitHub.

-

Issues

+

Issues

Please go here.

diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 1464e6c..e46e5a1 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1,43 +1,12 @@ -body { - padding: 50px; - font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +img { + padding-top: 50px; + padding-bottom: 20px; } -h1 { - font-weight: lighter; +li { + list-style-type: square; } -a { - /*color: #00B7FF;*/ - color: #3D72D1; -} - -hr { - border: 1px #EEE solid; -} - -a.logo { - display: block; - text-align: center; - margin-bottom: 50px; -} - -.alert-success { - font-size: 18px; -} - -/*.logo { - background: #00B7FF; - color: white; - font-size: 48px; - width: 100px; - height: 100px; - text-align: center; - vertical-align: middle; - line-height: 90px; - border-radius: 100px; - transform:rotate(90deg); - -ms-transform:rotate(90deg); - -webkit-transform:rotate(90deg); - margin-bottom: 50px; -}*/ \ No newline at end of file +h4 { + padding-top: 20px; +} \ No newline at end of file diff --git a/src/command.js b/src/command.js index b61e0cf..25d8573 100644 --- a/src/command.js +++ b/src/command.js @@ -1,40 +1,40 @@ -var yargv = require('yargs') + +var chalk = require('chalk') 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 hello() { + console.log( + chalk.green('\n{^ ^} Heya!\n') + ) } function start(port) { - server.listen(port, function() { - console.log('%s listening at %s', server.name, server.url); - }) + for (var prop in low.db) { + console.log('http://localhost:' + port + '/' + chalk.green(prop)) + } + + server.listen(port) } -function run() { - var argv = yargv.usage('Usage: $0 ') - .demand(1) - .default('port', 3000) - .argv +function run(argv) { + hello(); var source = argv._[0] + console.log('Loading database from ' + source + '\n') + if (/\.json$/.test(source)) { var path = process.cwd() + '/' + source low.path = path low.db = require(path); - show() - start() + start(argv.port) } if (/\.js$/.test(source)) { var path = process.cwd() + '/' + source low.db = require(path).run(); - show() start(argv.port) } @@ -47,10 +47,12 @@ function run() { low.db = JSON.parse(res.text) } }) - show() - start() + start(argv.port) } + console.log( + '\nEnter ' + chalk.green('`s`') + ' at any time to create a snapshot of the db\n' + ) process.stdin.resume() process.stdin.setEncoding('utf8') diff --git a/src/server.js b/src/server.js index f8b454f..530900f 100644 --- a/src/server.js +++ b/src/server.js @@ -1,33 +1,31 @@ -var _ = require('underscore') -var low = require('low') -var ecstatic = require('ecstatic') -var restify = require('restify') -var utils = require('./utils') +var express = require('express') +var http = require('http') +var path = require('path') +var _ = require('underscore') +var low = require('low') +var utils = require('./utils') low._.createId = utils.createId -var server = restify.createServer({ - name: 'JSON Server' -}) +var server = express() -server.use(restify.acceptParser(server.acceptable)) -server.use(restify.queryParser()) -server.use(restify.bodyParser()) -server.use(restify.CORS()) -server.use(restify.jsonp()) -server.use(restify.gzipResponse()) +server.set('port', process.env.PORT || 3000) +server.use(express.logger('dev')) +server.use(express.json()) +server.use(express.urlencoded()) +server.use(express.methodOverride()) +server.use(express.static(path.join(__dirname, '../public'))) +server.use(server.router) + +if ('development' == server.get('env')) { + server.use(express.errorHandler()); +} routes = {} -server.get(/^\/$|.*(.css)/, restify.serveStatic({ - 'directory': __dirname + '/../public', - 'default': 'index.html' -})) - // GET /db routes.db = function(req, res, next) { - res.send(low.db) - next() + res.jsonp(low.db) } // GET /:resource?attr=&attr= @@ -46,8 +44,7 @@ routes.list = function(req, res, next) { query = low(req.params.resource).where(properties) } - res.send(query.value()) - next() + res.jsonp(query.value()) } // GET /:parent/:parentId/:resource @@ -63,8 +60,7 @@ routes.nestedList = function(req, res, next) { .where(properties) .value() - res.send(resource) - next() + res.jsonp(resource) } // GET /:resource/:id @@ -73,8 +69,7 @@ routes.show = function(req, res, next) { .get(+req.params.id) .value() - res.send(resource) - next() + res.jsonp(resource) } // POST /:resource @@ -83,8 +78,7 @@ routes.create = function(req, res, next) { .insert(req.body) .value() - res.send(resource) - next() + res.jsonp(resource) } // PUT /:resource/:id @@ -94,21 +88,15 @@ routes.update = function(req, res, next) { .update(+req.params.id, req.body) .value() - res.send(resource) - next() + res.jsonp(resource) } // DELETE /:resource/:id routes.destroy = function(req, res, next) { - try { - low(req.params.resource).remove(+req.params.id) - utils.clean() + low(req.params.resource).remove(+req.params.id) + utils.clean() - res.send(204) - next() - } catch(e) { - console.trace(e) - } + res.send(204) } server.get('/db', routes.db)