Get unlimited public & private packages + package-based permissions with npm Pro.Get started »

@becquerel/content-negotiator

0.1.0-alpha.3 • Public • Published

@becquerel/content-negotiator

npm Version Node.js GitHub License Build Status

HTTP content negotiation library.

Install

$ npm install --save @becquerel/content-negotiator  # Or alternately: `yarn add @becquerel/content-negotiator` 

Usage

const ContentNegotiator = require('@becquerel/content-negotiator');
 
let acceptHeader = 'text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c';
let negotiator = new ContentNegotiator(acceptHeader);
 
/**
 * Use the `.prefer()` method to check if a media type is the prefered type of
 * the requester. You can also use "shorthand types" for the following
 * predefined types:
 *
 *     {
 *         atom: 'atom+xml',
 *         css: 'text/css',
 *         csv: 'text/csv',
 *         html: 'text/html',
 *         javascript: 'application/javascript',
 *         jcard: 'application/vcard+json',
 *         json: 'application/json',
 *         jsonld: 'application/ld+json',
 *         markdown: 'text/markdown',
 *         text: 'text/plain',
 *         vcard: 'text/vcard'
 *     };
 */
negotiator.prefers('text/html');  // > true
negotiator.prefers('html');       // > true
negotiator.prefers('text/plain'); // > false
 
/**
 * Alternately you can read the `.preferred` property to obtain the requester's
 * most desired media type. It returns an instance of the `MediaType` class.
 */
negotiator.preferred; // > MediaType { type: 'text', subtype: 'html', parameters: { q: 1 }, specificity: 2 }
 
/**
 * Also, if you would prefer the textual representation of the preferred media
 * type you can simpy call the `MediaType.prototype.toString()` method.
 */
negotiator.preferred; // > 'text/html'
 
/**
 * The `.mediaRange` property contains a quality sorted array of the desired
 * media types.
 */
negotiator.mediaRange; // > ['text/html', 'text/x-c', 'text/x-dvi', 'text/plain']

Testing

$ npm test  # Or alternately: `yarn test` 

Reference

License

The MIT License (Expat). See the license file for details.

Install

npm i @becquerel/content-negotiator

DownloadsWeekly Downloads

6

Version

0.1.0-alpha.3

License

MIT

Last publish

Collaborators

  • avatar