ContainerNetworkSettings.fromJson constructor
Deserialises a ContainerNetworkSettings from Docker's JSON representation.
Implementation
factory ContainerNetworkSettings.fromJson(Map<String, dynamic> json) {
Map<String, List<ContainerPortBinding>?>? ports;
final rawPorts = json['Ports'] as Map<String, dynamic>?;
if (rawPorts != null) {
ports = {};
for (final entry in rawPorts.entries) {
final bindings = entry.value as List<dynamic>?;
ports[entry.key] = bindings
?.map(
(b) => ContainerPortBinding.fromJson(b as Map<String, dynamic>),
)
.toList();
}
}
Map<String, ContainerNetworkEndpoint>? networks;
final rawNetworks = json['Networks'] as Map<String, dynamic>?;
if (rawNetworks != null) {
networks = {};
for (final entry in rawNetworks.entries) {
networks[entry.key] = ContainerNetworkEndpoint.fromJson(
entry.value as Map<String, dynamic>,
);
}
}
List<ContainerAddress>? parseAddresses(dynamic raw) {
return (raw as List<dynamic>?)
?.map((e) => ContainerAddress.fromJson(e as Map<String, dynamic>))
.toList();
}
return ContainerNetworkSettings(
bridge: json['Bridge'] as String?,
sandboxID: json['SandboxID'] as String?,
hairpinMode: json['HairpinMode'] as bool?,
linkLocalIPv6Address: json['LinkLocalIPv6Address'] as String?,
linkLocalIPv6PrefixLen: json['LinkLocalIPv6PrefixLen'] as int?,
ports: ports,
sandboxKey: json['SandboxKey'] as String?,
secondaryIPAddresses: parseAddresses(json['SecondaryIPAddresses']),
secondaryIPv6Addresses: parseAddresses(json['SecondaryIPv6Addresses']),
endpointID: json['EndpointID'] as String?,
gateway: json['Gateway'] as String?,
globalIPv6Address: json['GlobalIPv6Address'] as String?,
globalIPv6PrefixLen: json['GlobalIPv6PrefixLen'] as int?,
ipAddress: json['IPAddress'] as String?,
ipPrefixLen: json['IPPrefixLen'] as int?,
ipv6Gateway: json['IPv6Gateway'] as String?,
macAddress: json['MacAddress'] as String?,
networks: networks,
);
}