fromHealthz static method
- String body
null for anything but a cat cam's /healthz answer, so other hosts show nothing; one that is
not ok still is one, with its problem.
Implementation
static CatStatus? fromHealthz(String body) {
final json = decodeJsonObject(body);
final ok = json?['ok'];
if (json == null || ok is! bool) {
return null;
}
final cat = json['cat'];
if (cat is! Map<String, dynamic>) {
return null;
}
final name = json['name'];
final seconds = cat['last_seen'];
final visits = cat['visits'];
final recent = cat['recent'];
final clip = cat['clip'];
final clips = cat['clips'];
final problem = json['problem'];
final peers = json['peers'];
return CatStatus(
peers: <String>[
if (peers is List)
for (final peer in peers)
if (peer is String) peer,
],
problem: ok ? null : (problem is String ? problem : ''),
name: name is String ? name : '',
inView: cat['in_view'] == true,
lastSeen: seconds is int
? DateTime.fromMillisecondsSinceEpoch(seconds * 1000)
: null,
visits: visits is int ? visits : 0,
clip: clip is int
? DateTime.fromMillisecondsSinceEpoch(clip * 1000)
: null,
clips: <DateTime>[
if (clips is List)
for (final t in clips)
if (t is int) DateTime.fromMillisecondsSinceEpoch(t * 1000),
],
recent: <CatVisit>[
if (recent is List)
for (final visit in recent)
if (visit is Map<String, dynamic> && visit['arrived'] is int)
CatVisit(
DateTime.fromMillisecondsSinceEpoch(
(visit['arrived'] as int) * 1000,
),
visit['stayed_s'] is int
? Duration(seconds: visit['stayed_s'] as int)
: null,
),
],
);
}