[verified] refactor: establish service and frontend boundaries
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import { redactInstance, summarizeInstanceSnapshot } from '../core.js'
|
||||
|
||||
export async function collectInstanceStatus(client) {
|
||||
const result = {
|
||||
...redactInstance(client.instance), reachable: false, authenticated: null, latencyMs: null,
|
||||
statusCode: null, error: null, authStatus: null, summary: summarizeInstanceSnapshot({}), raw: {}, checkedAt: new Date().toISOString(),
|
||||
}
|
||||
try {
|
||||
const health = await client.fetchJson('/api/health')
|
||||
result.latencyMs = health.latencyMs
|
||||
result.statusCode = health.status
|
||||
result.raw.health = health.data || health.text || null
|
||||
const auth = await client.ensureAuthenticated()
|
||||
result.authenticated = auth.authenticated
|
||||
result.authStatus = auth
|
||||
const endpoints = { device: '/api/device', sim: '/api/sim', network: '/api/network', smsStats: '/api/sms/stats', data: '/api/data', ota: '/api/ota/status', stats: '/api/stats', calls: '/api/calls' }
|
||||
await Promise.all(Object.entries(endpoints).map(async ([key, endpoint]) => {
|
||||
try {
|
||||
const response = await client.fetchJson(endpoint)
|
||||
if (response.ok) { result.raw[key] = response.data; result.reachable = true }
|
||||
if (response.status === 401) result.authenticated = false
|
||||
} catch {}
|
||||
}))
|
||||
result.reachable ||= health.ok
|
||||
result.summary = summarizeInstanceSnapshot(result.raw)
|
||||
} catch (error) {
|
||||
result.error = error?.name === 'AbortError' ? 'timeout' : String(error?.message || error)
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user