ContainerNetworkSettings.fromJson constructor

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

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,
  );
}