Source: utils/writer.js

/**
 * Some helper functions/utilities for replying back from API call.
 * @module utils/writer
 * @license MIT
 * @author Kai KRETSCHMANN <kai@kretschmann.consulting>
 */

/**
 * Set headers on HTTP level for replying.
 * @function setHeaders
 * @private
 * @param {object} response Object for response
 **/
function setHeaders (response) {
  response.setHeader('Cache-Control', 'max-age=0, no-store');
  response.setHeader('Pragma', 'no-cache');
  response.setHeader('Expires', '-1');
}

/**
 * Reply with content and numeric code into response object.
 * @function writeText
 * @public
 * @summary prepare text reply
 * @param {object} response Object for response
 * @param {object} payload Reply content, plain string
 * @param {number} code Reply code, numeric HTTP value
 **/
exports.writeText = function (response, payload, code) {
  setHeaders(response);
  response.writeHead(code, {
    'Content-Type': 'text/plain; charset=utf-8'
  });
  response.end(payload);
};

/**
 * Reply with content and numeric code into response object.
 * @function writeJson
 * @public
 * @summary prepare JSON reply
 * @param {object} response Object for response
 * @param {object} arg1 Reply content, either string or JSON
 * @param {number} arg2 Reply code, numeric HTTP value
 **/
exports.writeJson = function (response, arg1, arg2) {
  let payload = arg1;
  const code = arg2;

  if (typeof payload === 'object') {
    payload = JSON.stringify(payload, null, 2);
  }

  setHeaders(response);

  if (code >= 400) {
    response.writeHead(code, {
      'Content-Type': 'text/plain; charset=utf-8'
    });
  } else {
    response.writeHead(code, {
      'Content-Type': 'application/json'
    });
  }
  response.end(payload);
};