README.md (4811B)
1 # negotiator 2 3 [![NPM Version][npm-image]][npm-url] 4 [![NPM Downloads][downloads-image]][downloads-url] 5 [![Node.js Version][node-version-image]][node-version-url] 6 [![Build Status][travis-image]][travis-url] 7 [![Test Coverage][coveralls-image]][coveralls-url] 8 9 An HTTP content negotiator for Node.js 10 11 ## Installation 12 13 ```sh 14 $ npm install negotiator 15 ``` 16 17 ## API 18 19 ```js 20 var Negotiator = require('negotiator') 21 ``` 22 23 ### Accept Negotiation 24 25 ```js 26 availableMediaTypes = ['text/html', 'text/plain', 'application/json'] 27 28 // The negotiator constructor receives a request object 29 negotiator = new Negotiator(request) 30 31 // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' 32 33 negotiator.mediaTypes() 34 // -> ['text/html', 'image/jpeg', 'application/*'] 35 36 negotiator.mediaTypes(availableMediaTypes) 37 // -> ['text/html', 'application/json'] 38 39 negotiator.mediaType(availableMediaTypes) 40 // -> 'text/html' 41 ``` 42 43 You can check a working example at `examples/accept.js`. 44 45 #### Methods 46 47 ##### mediaType() 48 49 Returns the most preferred media type from the client. 50 51 ##### mediaType(availableMediaType) 52 53 Returns the most preferred media type from a list of available media types. 54 55 ##### mediaTypes() 56 57 Returns an array of preferred media types ordered by the client preference. 58 59 ##### mediaTypes(availableMediaTypes) 60 61 Returns an array of preferred media types ordered by priority from a list of 62 available media types. 63 64 ### Accept-Language Negotiation 65 66 ```js 67 negotiator = new Negotiator(request) 68 69 availableLanguages = ['en', 'es', 'fr'] 70 71 // Let's say Accept-Language header is 'en;q=0.8, es, pt' 72 73 negotiator.languages() 74 // -> ['es', 'pt', 'en'] 75 76 negotiator.languages(availableLanguages) 77 // -> ['es', 'en'] 78 79 language = negotiator.language(availableLanguages) 80 // -> 'es' 81 ``` 82 83 You can check a working example at `examples/language.js`. 84 85 #### Methods 86 87 ##### language() 88 89 Returns the most preferred language from the client. 90 91 ##### language(availableLanguages) 92 93 Returns the most preferred language from a list of available languages. 94 95 ##### languages() 96 97 Returns an array of preferred languages ordered by the client preference. 98 99 ##### languages(availableLanguages) 100 101 Returns an array of preferred languages ordered by priority from a list of 102 available languages. 103 104 ### Accept-Charset Negotiation 105 106 ```js 107 availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] 108 109 negotiator = new Negotiator(request) 110 111 // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' 112 113 negotiator.charsets() 114 // -> ['utf-8', 'iso-8859-1', 'utf-7'] 115 116 negotiator.charsets(availableCharsets) 117 // -> ['utf-8', 'iso-8859-1'] 118 119 negotiator.charset(availableCharsets) 120 // -> 'utf-8' 121 ``` 122 123 You can check a working example at `examples/charset.js`. 124 125 #### Methods 126 127 ##### charset() 128 129 Returns the most preferred charset from the client. 130 131 ##### charset(availableCharsets) 132 133 Returns the most preferred charset from a list of available charsets. 134 135 ##### charsets() 136 137 Returns an array of preferred charsets ordered by the client preference. 138 139 ##### charsets(availableCharsets) 140 141 Returns an array of preferred charsets ordered by priority from a list of 142 available charsets. 143 144 ### Accept-Encoding Negotiation 145 146 ```js 147 availableEncodings = ['identity', 'gzip'] 148 149 negotiator = new Negotiator(request) 150 151 // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' 152 153 negotiator.encodings() 154 // -> ['gzip', 'identity', 'compress'] 155 156 negotiator.encodings(availableEncodings) 157 // -> ['gzip', 'identity'] 158 159 negotiator.encoding(availableEncodings) 160 // -> 'gzip' 161 ``` 162 163 You can check a working example at `examples/encoding.js`. 164 165 #### Methods 166 167 ##### encoding() 168 169 Returns the most preferred encoding from the client. 170 171 ##### encoding(availableEncodings) 172 173 Returns the most preferred encoding from a list of available encodings. 174 175 ##### encodings() 176 177 Returns an array of preferred encodings ordered by the client preference. 178 179 ##### encodings(availableEncodings) 180 181 Returns an array of preferred encodings ordered by priority from a list of 182 available encodings. 183 184 ## See Also 185 186 The [accepts](https://npmjs.org/package/accepts#readme) module builds on 187 this module and provides an alternative interface, mime type validation, 188 and more. 189 190 ## License 191 192 [MIT](LICENSE) 193 194 [npm-image]: https://img.shields.io/npm/v/negotiator.svg 195 [npm-url]: https://npmjs.org/package/negotiator 196 [node-version-image]: https://img.shields.io/node/v/negotiator.svg 197 [node-version-url]: https://nodejs.org/en/download/ 198 [travis-image]: https://img.shields.io/travis/jshttp/negotiator/master.svg 199 [travis-url]: https://travis-ci.org/jshttp/negotiator 200 [coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg 201 [coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master 202 [downloads-image]: https://img.shields.io/npm/dm/negotiator.svg 203 [downloads-url]: https://npmjs.org/package/negotiator