cleaner v2.0.0-alpha
connect-cleaner
THIS PLUGIN IS BROKEN, REWRITE IS COMING
Simple url sanitizer for connect and express.
Redirects trailing slash urls, normalizes letter case differences and cleans garbage from your URLs.
Inspired by connect-slashes.
##Installation
$ npm install connect-cleaner
##Usage
var connect = require('connect');
var cleaner = require('connect-cleaner');
var config = require('config');
connect()
.use(connect.responseTime())
.use(cleaner(302)) // ideally, put cleaner as earlier as possible
.use(yourApp(config))
.listen(8080);
By default, cleaner
responses with "fast 400"* on requests like //?/?///
. Optionaly clear
takes one argument which can be an Object
(options) or Number
(redirect code).
* By "fast 400" I mean that cleaner responses with unstyled 400 without body as soon as possible
##Options
add <false>
- determines ifcleaner
should add trailing slash. Iftrue
setsclean
tofalse
.clean <true>
- determines ifcleaner
should clean trailing slash(es). Can be overrided byadd
andsanitize
options.code <301>
- determines redirect code.normilize <false>
- determines ifcleaner
should normilize differences in letter cases inpathname
. It's important to note thatcleaner
only fixes letter casing onpathname
-querystring
not affected.sanitize <false>
- determines ifclaener
should clean (sanitize) garbage in url (includes[/?&=]
, also setsclean
tofalse
).
##Post-initialization mutablity
var instance = cleaner(); // We need access to middleware for later configuring
app.use(instance());
// Later...
instance.set(code, 302);
// or
insatnce.set({ add: true, sanitize: true });
// Also we have more generic acces to `_options` object
instance.get('code'); // => 302
// or
instance.get();
/* =>
{
add: true,
clean: false,
code: 302,
sanitize: true,
normalize: false
}
*/
##Examples
Options|Request|Response|Code
:-:|:-:|:-:|:-:
(default)|///?/?/?
|-|400
(default)|/Users//?foo=Bar&age=21&
|/Users?foo=Bar&age=21&
|301
code: 302
|/Users//?foo=Bar&age=21&
|/Users?foo=Bar&age=21&
|302
normalize, code: 302
|/Users//?foo=Bar&age=21&
|/users?foo=Bar&age=21&
|302
sanitize, code: 302
|/Users//?foo=Bar&age=21&
|/Users?foo=Bar&age=21
|302
normalize
, sanitize, code: 302
|/Users//?foo=Bar&age=21&
|/users?foo=Bar&age=21
|302
(default)|/users?foo=Bar&age=21
|-| Pass thrue, url is fine
add
|/users?foo=Bar&age=21
|/users/?foo=Bar&age=21
|301
##TODO
- WIP add option to pass Error's through connect stack (next(err))
- WIP performance optimizition
- WIP refactoring
- write benchamrk
##License MIT
10 years ago
11 years ago