funkster-http-headers-content

Funkster is a compositional server library. This package contains combinators to parse and set the HTTP Content-* headers.


Keywords
node, server, funkster, http, content, header
License
Unlicense
Install
npm install funkster-http-headers-content@11.0.0

Documentation

funkster-http-headers-content

npm node npm Travis

Icon

Funkster is a compositional server library. This package contains combinators to parse and set the HTTP Content-* headers.

Additional examples of how to build HTTP server apis with funkster can be found here.

Typscript is used to illustrate the examples.

Install

$ npm install funkster-http-headers-accept

Build

$ npm install && npm run build

Test

$ npm run test

Parsing the Accept* headers from a request

This module uses the content-type and content-disposition packages under the hood so essentially the same api applies for the parsing and setting the Content-Type (using mediaType instead of type for readability) and Content-Disposition headers.

The parsed headers object has the following type:

{
  type?: {
    mediaType: string,
    parameters?: Object
  },
  length?: number,
  language?: string,
  encoding?: string,
  location?: string,
  disposition?: {
    type?: string,
    parameters?: Object
  } 
}

Example:

import * as http from 'http';
import { parseContentHeaders } from 'funkster-http-headers-content';
import { asRequestListener, Ok } from 'funkster-http';

const echoEncoding = parseContentHeaders(contentHeaders => Ok(contentHeaders.encoding));
const server = http.createServer(asRequestListener(echoEncoding));

// start the node HTTP server and send e.g. a GET with the Content-Encoding header set to 'gzip'.

Setting the Content-* headers of the response

The following combinators are available for setting the respective content headers.

  • setContentType(type: string | ContentType): See content-type for the parameters.
  • setContentDisposition(filenameOrOptions?: string | Options, options?: Options): Uses the same api as content-disposition.
  • setContentLength(length: number)
  • setContentLanguage(language: string)
  • setContentEncoding(encoding: string): The encoding parameter should be one of ["gzip", "compress", "deflate", "identity", "br"]
  • setContentLocation(location: string)

Example

import * as http from 'http';
import { setContentType } from 'funkster-http-headers-content';
import { asRequestListener, Ok } from 'funkster-http';

const sendJsonContentType = setContentType({ mediaType: "application/json", parameters: { charset: "utf-8" } });
const server = http.createServer(asRequestListener(sendJsonContentType));

// start the node HTTP server and send e.g. a GET.

Meta

Icon funky by iconsmind.com from the Noun Project.