express-file-router
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -6,2 +6,4 @@ var path = require('path'); | ||
app.use(router); | ||
app.listen(1337); | ||
app.listen(1337, function() { | ||
console.log('Listening on 1337'); | ||
}); |
35
index.js
var path = require('path'); | ||
var fs = require('fs'); | ||
var Router = require('express').Router; | ||
var Request = require('./request'); | ||
var Response = require('./response'); | ||
function LoadFolder(folder) { | ||
function LoadFolder(folder, options) { | ||
var router = Router({ mergeParams : true }); | ||
@@ -29,3 +31,26 @@ var folderFiles = fs.readdirSync(folder); | ||
var method = file.replace('.js', '').toLowerCase(); | ||
router[method]('/', require(path.join(folder, file))); | ||
if (options.usePromise) { | ||
router[method]('/', function(req, res, next) { | ||
var request = new Request({ | ||
method: req.method, | ||
params: req.params, | ||
path: req.path, | ||
query: req.query, | ||
body: req.body, | ||
headers: req.headers, | ||
cookies: req.cookies | ||
}); | ||
require(path.join(folder, file))(request) | ||
.then(function(response) { | ||
res.status(response.responseCode).json(response.data); | ||
}) | ||
.catch(function(err) { | ||
next(err); | ||
}); | ||
}); | ||
} else { | ||
router[method]('/', require(path.join(folder, file))); | ||
} | ||
}); | ||
@@ -45,3 +70,3 @@ | ||
normalFolders.concat(paramFolders).forEach(function(file) { | ||
router.use('/' + file, LoadFolder(path.join(folder, file))); | ||
router.use('/' + file, LoadFolder(path.join(folder, file), options)); | ||
}); | ||
@@ -52,2 +77,4 @@ | ||
module.exports.load = LoadFolder; | ||
module.exports.load = LoadFolder; | ||
module.exports.Request = Request; | ||
module.exports.Response = Response; |
{ | ||
"name": "express-file-router", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "File-based router for express", | ||
@@ -8,3 +8,3 @@ "main": "index.js", | ||
"type": "git", | ||
"url": "ssh://rg1220.github.com/rg1220/express-file-router" | ||
"url": "https://github.com/rg1220/express-file-router" | ||
}, | ||
@@ -15,3 +15,6 @@ "author": "randy@randygroff.com", | ||
"express": "4.15.2" | ||
}, | ||
"devDependencies": { | ||
"bluebird": "^3.5.0" | ||
} | ||
} |
@@ -44,3 +44,15 @@ # express-file-router | ||
#### load( directory, options ) | ||
```javascript | ||
rabbit.onUnhandled( function( message ) { | ||
// handle the message here | ||
} ); | ||
``` | ||
### load ( directory, options ) | ||
The call returns a router that will auto-load a directory of routes. | ||
Options can contain the following: | ||
* `usePromise` - true|false Method files must return a promise that resolves a Response object | ||
## Method Files | ||
@@ -61,2 +73,16 @@ | ||
If `usePromise: true` then use a promise instead: | ||
```js | ||
var Promise = require('bluebird'); | ||
var Response = require('express-file-router').Response; | ||
module.exports = function(request) { | ||
return Promise.try(function() { | ||
return new Response(200, { | ||
message: 'This is the response to a GET request' | ||
}) | ||
}); | ||
} | ||
``` | ||
### router.js | ||
@@ -63,0 +89,0 @@ |
9902
25
192
106
1
4