Skip to content

Commit

Permalink
Remove preferred prefix from methods
Browse files Browse the repository at this point in the history
  • Loading branch information
federomero committed Jan 9, 2014
1 parent 00ab5ea commit a3ceee5
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 40 deletions.
6 changes: 3 additions & 3 deletions examples/accept.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
var mediaType, negotiator;
negotiator = new Negotiator(req);
console.log("Accept: " + req.headers['accept']);
console.log("Preferred: " + (negotiator.preferredMediaTypes()));
console.log("Possible: " + (negotiator.preferredMediaTypes(availableMediaTypes)));
mediaType = negotiator.preferredMediaType(availableMediaTypes);
console.log("Preferred: " + (negotiator.mediaTypes()));
console.log("Possible: " + (negotiator.mediaTypes(availableMediaTypes)));
mediaType = negotiator.mediaType(availableMediaTypes);
console.log("Selected: " + mediaType);
if (mediaType) {
res.writeHead(200, {
Expand Down
6 changes: 3 additions & 3 deletions examples/charset.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
var charset, negotiator;
negotiator = new Negotiator(req);
console.log("Accept-Charset: " + req.headers['accept-charset']);
console.log("Preferred: " + (negotiator.preferredCharsets()));
console.log("Possible: " + (negotiator.preferredCharsets(availableCharsets)));
charset = negotiator.preferredCharset(availableCharsets);
console.log("Preferred: " + (negotiator.charsets()));
console.log("Possible: " + (negotiator.charsets(availableCharsets)));
charset = negotiator.charset(availableCharsets);
console.log("Selected: " + charset);
if (charset) {
res.writeHead(200, {
Expand Down
6 changes: 3 additions & 3 deletions examples/encoding.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
var encoding, negotiator;
negotiator = new Negotiator(req);
console.log("Accept-Encoding: " + req.headers['accept-encoding']);
console.log("Preferred: " + (negotiator.preferredEncodings()));
console.log("Possible: " + (negotiator.preferredEncodings(availableEncodings)));
encoding = negotiator.preferredEncoding(availableEncodings);
console.log("Preferred: " + (negotiator.encodings()));
console.log("Possible: " + (negotiator.encodings(availableEncodings)));
encoding = negotiator.encoding(availableEncodings);
console.log("Selected: " + encoding);
if (encoding) {
res.writeHead(200, {
Expand Down
6 changes: 3 additions & 3 deletions examples/language.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
var language, negotiator;
negotiator = new Negotiator(req);
console.log("Accept-Language: " + req.headers['accept-language']);
console.log("Preferred: " + (negotiator.preferredLanguages()));
console.log("Possible: " + (negotiator.preferredLanguages(availableLanguages)));
language = negotiator.preferredLanguage(availableLanguages);
console.log("Preferred: " + (negotiator.languages()));
console.log("Possible: " + (negotiator.languages(availableLanguages)));
language = negotiator.language(availableLanguages);
console.log("Selected: " + language);
if (language) {
res.writeHead(200, {
Expand Down
22 changes: 15 additions & 7 deletions lib/negotiator.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,19 @@ function Negotiator(request) {
this.request = request;
}

var set = { preferredCharset: [require('./charset.js'), 'accept-charset'],
preferredEncoding: [require('./encoding.js'), 'accept-encoding'],
preferredLanguage: [require('./language.js'), 'accept-language'],
preferredMediaType: [require('./mediaType.js'), 'accept'] };
var set = { charset: 'accept-charset',
encoding: 'accept-encoding',
language: 'accept-language',
mediaType: 'accept' };


function capitalize(string){
return string.charAt(0).toUpperCase() + string.slice(1);
}

Object.keys(set).forEach(function (k) {
var mh = set[k],
method = mh[0],
header = mh[1],
var header = set[k],
method = require('./'+k+'.js'),
singular = k,
plural = k + 's';

Expand All @@ -26,4 +30,8 @@ Object.keys(set).forEach(function (k) {
var set = this[plural](available);
if (set) return set[0];
};

// Keep preferred* methods for legacy compatibility
Negotiator.prototype['preferred'+capitalize(plural)] = Negotiator.prototype[plural];
Negotiator.prototype['preferred'+capitalize(singular)] = Negotiator.prototype[singular];
})
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "negotiator",
"description": "HTTP content negotiation",
"version": "0.3.0",
"version": "0.4.0",
"author": "Federico Romero <federico.romero@outboxlabs.com>",
"contributors": ["Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)"],
"repository": {
Expand Down
40 changes: 20 additions & 20 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,24 @@ An HTTP content negotiator for node.js written in javascript.

// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'

negotiator.preferredMediaTypes()
negotiator.mediaTypes()
// -> ['text/html', 'image/jpeg', 'application/*']

negotiator.preferredMediaTypes(availableMediaTypes)
negotiator.mediaTypes(availableMediaTypes)
// -> ['text/html', 'application/json']

negotiator.preferredMediaType(availableMediaTypes)
negotiator.mediaType(availableMediaTypes)
// -> 'text/html'

You can check a working example at `examples/accept.js`.

## Methods

`preferredMediaTypes(availableMediaTypes)`:
`mediaTypes(availableMediaTypes)`:

Returns an array of preferred media types ordered by priority from a list of available media types.

`preferredMediaType(availableMediaType)`:
`mediaType(availableMediaType)`:

Returns the top preferred media type from a list of available media types.

Expand All @@ -44,24 +44,24 @@ Returns the top preferred media type from a list of available media types.

// Let's say Accept-Language header is 'en;q=0.8, es, pt'

negotiator.preferredLanguages()
negotiator.languages()
// -> ['es', 'pt', 'en']

negotiator.preferredLanguages(availableLanguages)
negotiator.languages(availableLanguages)
// -> ['es', 'en']

language = negotiator.preferredLanguage(availableLanguages)
language = negotiator.language(availableLanguages)
// -> 'es'

You can check a working example at `examples/language.js`.

## Methods

`preferredLanguages(availableLanguages)`:
`languages(availableLanguages)`:

Returns an array of preferred languages ordered by priority from a list of available languages.

`preferredLanguage(availableLanguages)`:
`language(availableLanguages)`:

Returns the top preferred language from a list of available languages.

Expand All @@ -75,24 +75,24 @@ Returns the top preferred language from a list of available languages.

// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'

negotiator.preferredCharsets()
negotiator.charsets()
// -> ['utf-8', 'iso-8859-1', 'utf-7']

negotiator.preferredCharsets(availableCharsets)
negotiator.charsets(availableCharsets)
// -> ['utf-8', 'iso-8859-1']

negotiator.preferredCharset(availableCharsets)
negotiator.charset(availableCharsets)
// -> 'utf-8'

You can check a working example at `examples/charset.js`.

## Methods

`preferredCharsets(availableCharsets)`:
`charsets(availableCharsets)`:

Returns an array of preferred charsets ordered by priority from a list of available charsets.

`preferredCharset(availableCharsets)`:
`charset(availableCharsets)`:

Returns the top preferred charset from a list of available charsets.

Expand All @@ -106,24 +106,24 @@ Returns the top preferred charset from a list of available charsets.

// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'

negotiator.preferredEncodings()
negotiator.encodings()
// -> ['gzip', 'identity', 'compress']

negotiator.preferredEncodings(availableEncodings)
negotiator.encodings(availableEncodings)
// -> ['gzip', 'identity']

negotiator.preferredEncoding(availableEncodings)
negotiator.encoding(availableEncodings)
// -> 'gzip'

You can check a working example at `examples/encoding.js`.

## Methods

`preferredEncodings(availableEncodings)`:
`encodings(availableEncodings)`:

Returns an array of preferred encodings ordered by priority from a list of available encodings.

`preferredEncoding(availableEncodings)`:
`encoding(availableEncodings)`:

Returns the top preferred encoding from a list of available encodings.

Expand Down

0 comments on commit a3ceee5

Please sign in to comment.