const printerObjectIDConfigs = [ { model: 'm3655idn', objectIds: { model: '1.3.6.1.2.1.25.3.2.1.3.1', serial: '1.3.6.1.2.1.43.5.1.1.17.1', counter: '1.3.6.1.4.1.1347.43.10.1.1.12.1.1', toners: { black: { current: '1.3.6.1.2.1.43.11.1.1.9.1.1', max: '1.3.6.1.2.1.43.11.1.1.8.1.1', model: '1.3.6.1.2.1.43.11.1.1.6.1.1' } } } }, { model: 'p6235cdn', objectIds: { model: '1.3.6.1.2.1.25.3.2.1.3.1', serial: '1.3.6.1.2.1.43.5.1.1.17.1', counter: '1.3.6.1.4.1.1347.43.10.1.1.12.1.1', toners: { black: { current: '1.3.6.1.2.1.43.11.1.1.9.1.4', max: '1.3.6.1.2.1.43.11.1.1.8.1.4', model: '1.3.6.1.2.1.43.11.1.1.6.1.4' }, cyan: { current: '1.3.6.1.2.1.43.11.1.1.9.1.1', max: '1.3.6.1.2.1.43.11.1.1.8.1.1', model: '1.3.6.1.2.1.43.11.1.1.6.1.1' }, magenta: { current: '1.3.6.1.2.1.43.11.1.1.9.1.2', max: '1.3.6.1.2.1.43.11.1.1.8.1.2', model: '1.3.6.1.2.1.43.11.1.1.6.1.2' }, yellow: { current: '1.3.6.1.2.1.43.11.1.1.9.1.3', max: '1.3.6.1.2.1.43.11.1.1.8.1.3', model: '1.3.6.1.2.1.43.11.1.1.6.1.3' } } } }, { model: 'm2040dn', objectIds: { model: '1.3.6.1.2.1.25.3.2.1.3.1', serial: '1.3.6.1.2.1.43.5.1.1.17.1', counter: '1.3.6.1.4.1.1347.43.10.1.1.12.1.1', toners: { black: { current: '1.3.6.1.2.1.43.11.1.1.9.1.1', max: '1.3.6.1.2.1.43.11.1.1.8.1.1', model: '1.3.6.1.2.1.43.11.1.1.6.1.1' } } } } ]; export class Printer { constructor(name, ip, model) { this.name = name; this.ip = ip; this.model = model; this.objectIds = printerObjectIDConfigs.find(x => x.model === model).objectIds; } oIDsArray() { const oIDsArray = []; function extractObjValues(obj) { for (let key in obj) { if (typeof obj[key] === 'object') { extractObjValues(obj[key]); } else { const oID = obj[key]; oIDsArray.push(oID); } } } extractObjValues(this.objectIds); return oIDsArray; } }