Skip to content

Commit f3b23e9

Browse files
vsilentCopilot
andcommitted
web: normalize container API payloads to prevent runtime crashes
Handle both snake_case and camelCase fields for containers API responses, with safe defaults for missing nested fields (securityStatus/networkActivity). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 4229627 commit f3b23e9

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

web/src/services/api.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,32 @@ class ApiService {
7272
// Containers
7373
async getContainers(): Promise<Container[]> {
7474
const response = await this.api.get('/containers');
75-
return response.data;
75+
const raw = response.data as Array<Record<string, any>>;
76+
return raw.map((item) => {
77+
const securityStatus = item.securityStatus ?? item.security_status ?? {};
78+
const networkActivity = item.networkActivity ?? item.network_activity ?? {};
79+
80+
return {
81+
id: item.id ?? '',
82+
name: item.name ?? item.id ?? 'unknown',
83+
image: item.image ?? 'unknown',
84+
status: item.status ?? 'Running',
85+
securityStatus: {
86+
state: securityStatus.state ?? 'Secure',
87+
threats: securityStatus.threats ?? 0,
88+
vulnerabilities: securityStatus.vulnerabilities ?? 0,
89+
lastScan: securityStatus.lastScan ?? new Date().toISOString(),
90+
},
91+
riskScore: item.riskScore ?? item.risk_score ?? 0,
92+
networkActivity: {
93+
inboundConnections: networkActivity.inboundConnections ?? networkActivity.inbound_connections ?? 0,
94+
outboundConnections: networkActivity.outboundConnections ?? networkActivity.outbound_connections ?? 0,
95+
blockedConnections: networkActivity.blockedConnections ?? networkActivity.blocked_connections ?? 0,
96+
suspiciousActivity: networkActivity.suspiciousActivity ?? networkActivity.suspicious_activity ?? false,
97+
},
98+
createdAt: item.createdAt ?? item.created_at ?? new Date().toISOString(),
99+
} as Container;
100+
});
76101
}
77102

78103
async quarantineContainer(request: QuarantineRequest): Promise<void> {

0 commit comments

Comments
 (0)