TailscaleNode.fromJson constructor

TailscaleNode.fromJson(
  1. Map<String, dynamic> json
)

Parses one node from Go's ipnstate.PeerStatus JSON shape.

Missing or malformed fields fall back to safe defaults (empty strings, false, 0) rather than throwing.

Implementation

factory TailscaleNode.fromJson(Map<String, dynamic> json) {
  return TailscaleNode(
    publicKey: json['PublicKey'] as String? ?? '',
    stableNodeId: json['ID'] as String? ?? '',
    hostName: json['HostName'] as String? ?? '',
    dnsName: json['DNSName'] as String? ?? '',
    os: json['OS'] as String? ?? '',
    tailscaleIPs: _parseIPs(json['TailscaleIPs']),
    online: json['Online'] as bool? ?? false,
    active: json['Active'] as bool? ?? false,
    rxBytes: json['RxBytes'] as int? ?? 0,
    txBytes: json['TxBytes'] as int? ?? 0,
    exitNode: json['ExitNode'] as bool? ?? false,
    exitNodeOption: json['ExitNodeOption'] as bool? ?? false,
    lastSeen: _parseTime(json['LastSeen']),
    relay: json['Relay'] as String?,
    curAddr: json['CurAddr'] as String?,
  );
}