refactor: Add type annotations for functions in SnmpOidEditor and SnmpMonitor

This commit is contained in:
Nawaz Dhandala
2026-01-29 08:28:23 +00:00
parent bfed03a10e
commit 2a6003e78f
3 changed files with 51 additions and 40 deletions

View File

@@ -34,7 +34,7 @@ const SnmpOidEditor: FunctionComponent<ComponentProps> = (
setOids(props.value || []);
}, [props.value]);
const addOid = (): void => {
const addOid: () => void = (): void => {
const newOids: Array<SnmpOid> = [
...oids,
{ oid: "", name: "", description: "" },
@@ -43,26 +43,28 @@ const SnmpOidEditor: FunctionComponent<ComponentProps> = (
props.onChange(newOids);
};
const removeOid = (index: number): void => {
const newOids: Array<SnmpOid> = oids.filter((_, i) => {
const removeOid: (index: number) => void = (index: number): void => {
const newOids: Array<SnmpOid> = oids.filter((_: SnmpOid, i: number) => {
return i !== index;
});
setOids(newOids);
props.onChange(newOids);
};
const updateOid = (
const updateOid: (
index: number,
field: keyof SnmpOid,
value: string,
): void => {
) => void = (index: number, field: keyof SnmpOid, value: string): void => {
const newOids: Array<SnmpOid> = [...oids];
newOids[index] = { ...newOids[index]!, [field]: value };
setOids(newOids);
props.onChange(newOids);
};
const addTemplate = (template: SnmpOid): void => {
const addTemplate: (template: SnmpOid) => void = (
template: SnmpOid,
): void => {
const newOids: Array<SnmpOid> = [...oids, template];
setOids(newOids);
props.onChange(newOids);

View File

@@ -12,6 +12,7 @@ import WebsiteMonitor, {
} from "./MonitorTypes/WebsiteMonitor";
import SnmpMonitor from "./MonitorTypes/SnmpMonitor";
import SnmpMonitorResponse from "Common/Types/Monitor/SnmpMonitor/SnmpMonitorResponse";
import MonitorStepSnmpMonitor from "Common/Types/Monitor/MonitorStepSnmpMonitor";
import HTTPMethod from "Common/Types/API/HTTPMethod";
import URL from "Common/Types/API/URL";
import OneUptimeDate from "Common/Types/Date";
@@ -452,7 +453,7 @@ export default class MonitorUtil {
return result;
}
const snmpConfig = monitorStep.data.snmpMonitor;
const snmpConfig: MonitorStepSnmpMonitor = monitorStep.data.snmpMonitor;
if (!snmpConfig.hostname) {
result.failureCause = "SNMP hostname not specified";

View File

@@ -11,6 +11,8 @@ import SnmpDataType from "Common/Types/Monitor/SnmpMonitor/SnmpDataType";
import SnmpSecurityLevel from "Common/Types/Monitor/SnmpMonitor/SnmpSecurityLevel";
import SnmpAuthProtocol from "Common/Types/Monitor/SnmpMonitor/SnmpAuthProtocol";
import SnmpPrivProtocol from "Common/Types/Monitor/SnmpMonitor/SnmpPrivProtocol";
import SnmpOid from "Common/Types/Monitor/SnmpMonitor/SnmpOid";
import SnmpV3Auth from "Common/Types/Monitor/SnmpMonitor/SnmpV3Auth";
import snmp from "net-snmp";
export interface SnmpQueryOptions {
@@ -164,7 +166,7 @@ export default class SnmpMonitor {
);
}
const oids: Array<string> = config.oids.map((oid) => {
const oids: Array<string> = config.oids.map((oid: SnmpOid) => {
return oid.oid;
});
@@ -174,39 +176,45 @@ export default class SnmpMonitor {
return;
}
session.get(oids, (error, varbinds) => {
if (error || !varbinds) {
session.close();
reject(error || new Error("No varbinds returned"));
return;
}
const oidResponses: Array<SnmpOidResponse> = [];
for (let i = 0; i < varbinds.length; i++) {
const varbind: snmp.Varbind = varbinds[i]!;
const configOid = config.oids[i];
if (snmp.isVarbindError(varbind)) {
oidResponses.push({
oid: varbind.oid,
name: configOid?.name,
value: null,
type: SnmpMonitor.mapSnmpErrorType(varbind.type),
});
} else {
oidResponses.push({
oid: varbind.oid,
name: configOid?.name,
value: SnmpMonitor.parseVarbindValue(varbind),
type: SnmpMonitor.mapSnmpDataType(varbind.type),
});
session.get(
oids,
(
error: Error | null,
varbinds: Array<snmp.Varbind> | undefined,
) => {
if (error || !varbinds) {
session.close();
reject(error || new Error("No varbinds returned"));
return;
}
}
session.close();
resolve(oidResponses);
});
const oidResponses: Array<SnmpOidResponse> = [];
for (let i: number = 0; i < varbinds.length; i++) {
const varbind: snmp.Varbind = varbinds[i]!;
const configOid: SnmpOid | undefined = config.oids[i];
if (snmp.isVarbindError(varbind)) {
oidResponses.push({
oid: varbind.oid,
name: configOid?.name,
value: null,
type: SnmpMonitor.mapSnmpErrorType(varbind.type),
});
} else {
oidResponses.push({
oid: varbind.oid,
name: configOid?.name,
value: SnmpMonitor.parseVarbindValue(varbind),
type: SnmpMonitor.mapSnmpDataType(varbind.type),
});
}
}
session.close();
resolve(oidResponses);
},
);
} catch (err) {
reject(err as Error);
}
@@ -215,7 +223,7 @@ export default class SnmpMonitor {
}
private static buildV3User(config: MonitorStepSnmpMonitor): snmp.User {
const v3Auth = config.snmpV3Auth!;
const v3Auth: SnmpV3Auth = config.snmpV3Auth!;
const user: snmp.User = {
name: v3Auth.username,
level: SnmpMonitor.mapSecurityLevel(v3Auth.securityLevel),