Skip to content

Commit

Permalink
canned-responses are now just simply defined as a module that is requ…
Browse files Browse the repository at this point in the history
…ired
  • Loading branch information
euge committed Jul 22, 2013
1 parent 80606fe commit 2c8c996
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 52 deletions.
34 changes: 18 additions & 16 deletions examples/responses.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
get("/name", function(req, res) {
res.send({
name : "bob",
age : 23
module.exports = function(server) {
server.get("/name", function(req, res) {
res.send({
name : "bob",
age : 23
});
});
});

get("/stuff", function(req, res) {
res.send({
name : "hahah",
address : "1234 sjdasd"
server.get("/stuff", function(req, res) {
res.send({
name : "hahah",
address : "1234 sjdasd"
});
});
});

get("/monkey", function(req, res) {
res.set({
'X-Monkey-Header': '12345'
server.get("/monkey", function(req, res) {
res.set({
'X-Monkey-Header': '12345'
});
res.status(323);
res.send({ value : Math.random(10) });
});
res.status(323);
res.send({ value : Math.random(10) });
});
};
18 changes: 6 additions & 12 deletions lib/canned_responses.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,21 @@ var defaultIndexContent = '\
function CannedResponses(configFile, indexRouteCallback) {
this.configFile = configFile;
this.indexRouteCallback = indexRouteCallback;
_.bindAll(this, "middleware");
this.createServer();
}

CannedResponses.prototype.createServer = function() {
this.server = express();
this.server.use(express.logger("dev"));
this.server.use(express.bodyParser());
this.server.use(this.middleware);
};

CannedResponses.prototype.processContents = function(contents) {
(new Function("server", "with(server) { " + contents + "}"))(this.server);
this.server.use(this.middleware.bind(this));
};

CannedResponses.prototype.loadRoutes = function(done) {
this.loadIndexRoute();

fs.readFile(this.configFile, function(err, contents) {
this.processContents(contents);
done();
}.bind(this));
// allow for the config file to be required multiple times
delete require.cache[this.configFile];
require(this.configFile)(this.server);
};

// clear all routes
Expand All @@ -58,7 +51,8 @@ CannedResponses.prototype.loadIndexRoute = function() {
// middleware to dynamically clear and add routes
CannedResponses.prototype.middleware = function(req, res, next) {
this.clearRoutes();
this.loadRoutes(next);
this.loadRoutes();
next();
};

module.exports = CannedResponses;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "canned-responses",
"version": "0.0.9",
"version": "0.10.0",
"description": "connect middleware that returns pre-configured responses",
"main": "lib/canned_responses.js",
"scripts": {
Expand Down
49 changes: 26 additions & 23 deletions test/fixtures/responses.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
get("/people", function(req, res) {
res.send([
{ name : "Euge" },
{ name : "Bob" } ]);
});
module.exports = function(server) {

get("/people/1", function(req, res) {
res.send({
name : "Euge",
address : "1234 Main St."
server.get("/people", function(req, res) {
res.send([
{ name : "Euge" },
{ name : "Bob" } ]);
});
});

post("/people", function(req, res) {
res.send({
name : "Bob",
id : 10
server.get("/people/1", function(req, res) {
res.send({
name : "Euge",
address : "1234 Main St."
});
});
});

put("/people/10", function(req, res) {
res.send({
name : "NotBob",
id : 10
server.post("/people", function(req, res) {
res.send({
name : "Bob",
id : 10
});
});
});

del("/people/10", function(req, res) {
res.send({});
});
server.put("/people/10", function(req, res) {
res.send({
name : "NotBob",
id : 10
});
});

server.del("/people/10", function(req, res) {
res.send({});
});
};

0 comments on commit 2c8c996

Please sign in to comment.