printer-monitor/dist/Printer.mjs
2023-05-15 10:55:22 -04:00

87 lines
2.7 KiB
JavaScript

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;
}
}