*nix Programming Mammals

    @goa/accepts

    2.0.1 • Public • Published

    @goa/accepts

    npm version

    @goa/accepts is a fork of 🏛 Higher-Level Content Negotiation In ES6 Optimised With JavaScript Compiler.

    yarn add @goa/accepts

    Table Of Contents

    API

    The package is available by importing its default class:

    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.

    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('<b>hello, world!</b>')
        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: <b>hello, world!</b> 	Type: text/html
    Response: hello, world! 	Type: text/plain
    

    🔖 View all instance methods in Wiki

    Copyright & License

    GNU Affero General Public License v3.0

    Original work, documentation and testing by Jonathan Ong and Douglas Christopher Wilson under MIT license found in COPYING.


    Art Deco © Art Deco for Idio 2019 Idio Tech Nation Visa Tech Nation Visa Sucks

    Install

    npm i @goa/accepts

    Homepage

    www.idio.cc/

    DownloadsWeekly Downloads

    0

    Version

    2.0.1

    License

    AGPL-3.0

    Unpacked Size

    116 kB

    Total Files

    19

    Last publish

    Collaborators

    • zvr