arnaucube
arnaucube/socketioMEANseedPublic Self-hosted repository
socketioMEANseed/server/node_modules/negotiator/lib/negotiator.js
server/node_modules/negotiator/lib/negotiator.jsRaw
 1module.exports = Negotiator;
 2Negotiator.Negotiator = Negotiator;
 3
 4function Negotiator(request) {
 5  if (!(this instanceof Negotiator)) return new Negotiator(request);
 6  this.request = request;
 7}
 8
 9var set = { charset: 'accept-charset',
10            encoding: 'accept-encoding',
11            language: 'accept-language',
12            mediaType: 'accept' };
13
14
15function capitalize(string){
16  return string.charAt(0).toUpperCase() + string.slice(1);
17}
18
19Object.keys(set).forEach(function (k) {
20  var header = set[k],
21      method = require('./'+k+'.js'),
22      singular = k,
23      plural = k + 's';
24
25  Negotiator.prototype[plural] = function (available) {
26    return method(this.request.headers[header], available);
27  };
28
29  Negotiator.prototype[singular] = function(available) {
30    var set = this[plural](available);
31    if (set) return set[0];
32  };
33
34  // Keep preferred* methods for legacy compatibility
35  Negotiator.prototype['preferred'+capitalize(plural)] = Negotiator.prototype[plural];
36  Negotiator.prototype['preferred'+capitalize(singular)] = Negotiator.prototype[singular];
37})