Skip to content
This repository has been archived by the owner on Dec 23, 2018. It is now read-only.

Commit

Permalink
updated readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Craig Condon committed Jan 23, 2012
1 parent 6a76863 commit 06ef7c8
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 26 deletions.
51 changes: 40 additions & 11 deletions README.md
@@ -1,21 +1,50 @@


## Basic Example

```javascript
var express = require('express'),
app = express.createServer(),
connectRouter = require('connect-router');

var connectRouter = require('connect-router'),
express = require('express'),
app = express.createServer();
app.use(connectRouter.create(function(router) {


//you can use existing middleware to explictly define
//them in routes
router.on('parseBody', express.bodyParser());

/**
*/

var appRouter = connectRouter.createRouter(app);
router.on('-method=POST user/exists', function(req, res, next) {

if(userExists(req.query.username)) {

res.send('That username already exists');
return;

}

appRouter.on('get validateUser -> myProfile', function(req, res, next) {

});
next();
});

/**
* signs the user up
*/

appRouter.on('get validateUser -> my/profile', function(req, res, next) {

});
router.on('-method=POST parseBody -> user/exists -> signup', function(req, res, next) {

res.send('Successfuly signed up ');

});

}));




app.listen(8080);
```


```
41 changes: 34 additions & 7 deletions examples/auth.js
@@ -1,15 +1,42 @@
var express = require('express'),
app = express.createServer(),
connectRouter = require('../'),
appRouter = connectRouter.create(app);
connectRouter = require('../');



appRouter.on('get hello/world', function(req, res) {

console.log(req);

});


app.use(connectRouter.create(function(router) {

router.on('parseBody', express.bodyParser());
router.on('parseCookies', express.cookieParser());


router.on('-method=GET parseCookies -> authorize', function(req, res, next) {

console.log('Authorize');

next();
});

router.on('/**', function(req, res, next) {

console.log('some greedy middleware');

next();

});


router.on('-method=GET authorize -> hello/:name', function(req, res, next) {

console.log("DONE");
res.send(req.params.name);
});

}));




app.listen(8080);
57 changes: 49 additions & 8 deletions lib/index.js
Expand Up @@ -5,10 +5,10 @@ crema = require('crema');



exports.create = function() {
exports.create = function(factory) {

var self = {},
_routeCollections = {};
_routes = dolce.collection();


self.on = function(typeOrObj, callback) {
Expand All @@ -26,23 +26,64 @@ exports.create = function() {

crema(typeOrObj).forEach(function(route) {

_collection(route.type).addRoute(route, callback);
if(_routes.contains(route.channel.paths, route.channel.tags)) throw new Error('Route ' + crema.stringifyPaths(route.channel.paths) + ' already exists');

_routes.addRoute(route, callback);

});

}

function _collection(type) {
type = type.toUpperCase();
return _routeCollections[type] || (_routeCollections[type] = dolce.collection());
/**
*/

function _404(req, res) {

res.send('404', 404);

}

/**
*/

function _request(req, res, next, chain) {

var _next, current = chain.shift();

if(chain.length) {

_next = function() {


_request(req, res, next, chain);

}

} else {

_next = next;

}

req.params = current.params;

current.value(req, res, _next, chain);
}

//sets up the routes
factory(self);


//the middleware for express / connect
return function(req, res, next) {

var route = _collection(req.method).get(req.url);
//on request, fetch the route by url, and method. TODO: make it a bit more flexible with $or
var route = _routes.get(req.url, { method: req.method });

//route chain does not exist? 404'd
if(!route.chains.length) return _404(req, res);

console.log(route);
//otherwise, let's initialize from the first chain request
_request(req, res, next, route.chains[0]);
}
}

0 comments on commit 06ef7c8

Please sign in to comment.