negotiator.js 833 B

12345678910111213141516171819202122232425262728
  1. module.exports = Negotiator;
  2. Negotiator.Negotiator = Negotiator;
  3. function Negotiator(request) {
  4. this.request = request;
  5. }
  6. var set = { preferredCharset: [require('./charset.js'), 'accept-charset'],
  7. preferredEncoding: [require('./encoding.js'), 'accept-encoding'],
  8. preferredLanguage: [require('./language.js'), 'accept-language'],
  9. preferredMediaType: [require('./mediaType.js'), 'accept'] };
  10. Object.keys(set).forEach(function (k) {
  11. var mh = set[k],
  12. method = mh[0],
  13. header = mh[1],
  14. singular = k,
  15. plural = k + 's';
  16. Negotiator.prototype[plural] = function (available) {
  17. return method(this.request.headers[header], available);
  18. };
  19. Negotiator.prototype[singular] = function(available) {
  20. var set = this[plural](available);
  21. if (set) return set[0];
  22. };
  23. })