UNPKG

openhab-multiuser-proxy

Version:

Multi-User support for openHAB REST API with NGINX.

55 lines (50 loc) 1.4 kB
import logger from './../logger.js'; /** * Middlewares namespace. Provides middlewares for expressjs. * * @namespace middlewares */ /** * Require header in request. * * @memberof middlewares * @param {String} header header name */ export const requireHeader = (header) => { return function (req, res, next) { if (!req.headers[header.toLowerCase()]) { res.status(400).send(`${header} is required!`); logger.warn(`${req.ip} did not sent the required header ${header}`); return; } next(); }; }; /** * Replace all spaces and hyphens with underscores in headers. * * @memberof middlewares * @param {Array<String>} headers names of headers to operate on */ export const replaceSpaceHyphenWithUnderscore = (headers) => { return function (req, res, next) { for (const i in headers) { if (req.headers[headers[i]]) req.headers[headers[i].toLowerCase()] = req.headers[headers[i].toLowerCase()].replace(/( )|(-)/g, '_'); } next(); }; }; /** * Formats header X-OPENHAB-ORG from String to Array<String>. * Must not be applied before {@link middlewares.replaceSpaceHyphenWithUnderscore}! * * @memberof middlewares */ export const formatOrgs = () => { return function (req, res, next) { if (req.headers['x-openhab-org']) { req.headers['x-openhab-org'] = req.headers['x-openhab-org'].split('.'); } next(); }; };