endpointSummaries method

List<SingboxEndpointSummary> endpointSummaries()

Implementation

List<SingboxEndpointSummary> endpointSummaries() {
  final List<SingboxEndpointSummary> output = <SingboxEndpointSummary>[];
  final List<Object?> outbounds = _outbounds();

  for (int index = 0; index < outbounds.length; index++) {
    final Object? item = outbounds[index];
    if (item is! Map<Object?, Object?>) {
      continue;
    }
    final Map<String, Object?> outbound = _normalizeMap(item);
    final String type = _readString(outbound['type']) ?? '';
    final String? tag = _readString(outbound['tag']);
    final String? remark =
        _readString(outbound['remark']) ??
        _readString(outbound['name']) ??
        _readString(outbound['ps']) ??
        tag;
    final String? server =
        _readString(outbound['server']) ?? _readString(outbound['address']);
    final int? serverPort = _readInt(outbound['server_port']);
    final String? transportType = _readTransportType(outbound['transport']);
    final bool tlsEnabled = _readTlsEnabled(outbound['tls']);

    output.add(
      SingboxEndpointSummary(
        outboundIndex: index,
        type: type,
        tag: tag,
        remark: remark,
        server: server,
        serverPort: serverPort,
        transportType: transportType,
        tlsEnabled: tlsEnabled,
        rawOutbound: _deepCopyMap(outbound),
      ),
    );
  }
  return output;
}