An open API service indexing awesome lists of open source software.

https://github.com/idiocc/accepts

Higher-Level Content Negotiation In ES6 Optimised With Google Closure Compiler.
https://github.com/idiocc/accepts

closure-compiler idio

Last synced: 8 months ago
JSON representation

Higher-Level Content Negotiation In ES6 Optimised With Google Closure Compiler.

Awesome Lists containing this project

README

          

# @goa/accepts

[![npm version](https://badge.fury.io/js/%40goa%2Faccepts.svg)](https://www.npmjs.com/package/@goa/accepts)

`@goa/accepts` is a fork of 🏛 [Higher-Level Content Negotiation](https://github.com/jshttp/accepts/) In ES6 Optimised With [JavaScript Compiler](https://compiler.page).

```sh
yarn add @goa/accepts
```

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [API](#api)
- [class Accepts](#class-accepts)
* [`constructor(req): Accepts`](#constructorreq-httpincomingmessage-accepts)
- [Copyright & License](#copyright--license)



## API

The package is available by importing its default class:

```js
import Accepts from '@goa/accepts'
```



## class Accepts

The instances of this class allow to negotiate languages, charsets, encoding and types and additionally:

- Allow types as an array or arguments list, i.e. `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`;
- Allow type shorthands such as json;
- Return false when no types match;
- Treat non-existent headers as *.

### constructor(
  `req: !http.IncomingMessage,`
): Accepts

Create a new Accepts object for the given request from a client.

- req* Node.JS Docs!http.IncomingMessage: The request.

```js
import Accepts from '@goa/accepts'
import { createServer } from 'http'
import aqt from '@rqt/aqt'

function app(req, res) {
const accept = new Accepts(req)

// the order of this list is significant; should be server preferred order
switch (accept.type(['json', 'html'])) {
case 'json':
res.setHeader('Content-Type', 'application/json')
res.write('{"hello":"world!"}')
break
case 'html':
res.setHeader('Content-Type', 'text/html')
res.write('hello, world!')
break
default:
// the fallback is text/plain, so no need to specify it above
res.setHeader('Content-Type', 'text/plain')
res.write('hello, world!')
break
}

res.end()
}

const server = createServer(app)
server.listen(0, async () => {
const url = `http://localhost:${server.address().port}`
let { body, headers } = await aqt(url, {
headers: { 'accept': 'application/json' },
})
console.log('Response:', body, '\tType:', headers['content-type'])
;({ body, headers } = await aqt(url, {
headers: { 'accept': 'text/html' },
}))
console.log('Response:', body, '\tType:', headers['content-type'])
;({ body, headers } = await aqt(url, {
headers: { 'accept': 'text/plain' },
}))
console.log('Response:', body, '\tType:', headers['content-type'])
server.close()
})
```
```
Response: { hello: 'world!' } Type: application/json
Response: hello, world! Type: text/html
Response: hello, world! Type: text/plain
```

[🔖 View all instance methods in Wiki](../../wiki/Accepts)



## Copyright & License

GNU Affero General Public License v3.0

[Original work, documentation and testing](https://github.com/jshttp/accepts) by Jonathan Ong and Douglas Christopher Wilson under MIT license found in [COPYING](COPYING).

---




Art Deco


© Art Deco for Idio 2019


Idio




Tech Nation Visa


Tech Nation Visa Sucks