From 56b27321337ce5b0ed01e4836e3e803262f9ba08 Mon Sep 17 00:00:00 2001 From: TJ Holowaychuk Date: Tue, 27 Aug 2013 21:12:42 -0700 Subject: [PATCH] add conditional middleware middleware example --- examples/conditional-middleware-middleware.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 examples/conditional-middleware-middleware.js diff --git a/examples/conditional-middleware-middleware.js b/examples/conditional-middleware-middleware.js new file mode 100644 index 0000000..741ae55 --- /dev/null +++ b/examples/conditional-middleware-middleware.js @@ -0,0 +1,41 @@ + +var http = require('http'); +var koa = require('..'); +var app = koa(); + +// logger + +function logger(next){ + return function *(){ + var start = new Date; + yield next; + var ms = new Date - start; + console.log('%s %s - %s', this.method, this.url, ms); + } +} + +function ignoreAssets(mw) { + return function(next){ + return function *(){ + if (/(\.js|\.css|\.ico)$/.test(this.path)) { + yield next; + } else { + yield mw(next); + } + } + } +} + +app.use(ignoreAssets(logger)); + +// sometimes it's useful to apply some +// ad-hoc logic to enable middleware, for +// example ignoring a logger on asset requests: + +app.use(function(next){ + return function *(){ + this.body = 'Hello World'; + } +}); + +app.listen(3000);