UNPKG

openhab-multiuser-proxy

Version:

Multi-User support for openHAB REST API with NGINX.

54 lines (49 loc) 1.46 kB
// WARNING: Directly export all functions; DO NOT use export default = { key: function } // This approach does not work. import { backendInfo } from './server.js'; /** * Utils namespace. Providing utility functions. * * @namespace utils */ /** * Get the value of all occurences of a key from a nested object. * * @memberof utils * @param {Object} obj object * @param {String} key key to find in the object * @returns {Array} array of the values of all occurences of key */ export const findKeyInObj = function (obj, key) { const values = []; const iterator = (obj, key) => { for (const i in obj) { if (i === key) { values.push(obj[i]); } if (typeof obj[i] === 'object') { iterator(obj[i], key); } } }; iterator(obj, key); return values; }; /** * Set proxy headers for backend requests using node-fetch. * If header is not present, use defaults. * * @memberof utils * @param {*} expressReq request object from expressjs * @returns {Object} headers for node-fetch */ export const getHeaders = function (expressReq) { return { Host: expressReq.headers.host || backendInfo.HOST, 'X-Real-IP': expressReq.headers['x-real-ip'] || backendInfo.HOST, 'X-Forwarded-For': expressReq.headers['x-forwarded-for'] || backendInfo.HOST, 'X-Forwarded-Proto': expressReq.headers['x-forwarded-proto'] || 'http', Connection: 'upgrade', Upgrade: expressReq.headers.Upgrade }; };