diff --git a/lib/request.js b/lib/request.js index 2cb7447..276fd50 100644 --- a/lib/request.js +++ b/lib/request.js @@ -7,6 +7,7 @@ var qs = require('querystring'); var typeis = require('type-is'); var fresh = require('fresh'); var url = require('url'); +var typer = require('media-typer'); var stringify = url.format; var parse = url.parse; @@ -272,12 +273,10 @@ module.exports = { */ get charset() { - // TODO: lame, we could have a generic param parsing lib var type = this.get('Content-Type'); if (!type) return; - var m = type.match(/charset *= *(\S+)/); - if (m) return m[1]; + return typer.parse(type).parameters.charset; }, /** diff --git a/package.json b/package.json index 26403ff..4dce4e0 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "accepts": "~1.0.0", "type-is": "~1.3.1", "mime-types": "~1.0.0", + "media-typer": "~0.2.0", "finished": "~1.2.0", "co": "~3.0.2", "debug": "*", diff --git a/test/request/charset.js b/test/request/charset.js index df3e51e..87ded1e 100644 --- a/test/request/charset.js +++ b/test/request/charset.js @@ -25,4 +25,4 @@ describe('req.charset', function(){ req.charset.should.equal('utf-8'); }) }) -}) \ No newline at end of file +})