resolve method

String? resolve(
  1. String? remoteIp,
  2. Headers headers
)

Implementation

String? resolve(String? remoteIp, Headers headers) {
  for (final headerName in this.headers) {
    final lines = headers.getAll(headerName);
    if (lines == null || lines.isEmpty) continue;

    final ipsList = lines.last;
    if (ipsList.isEmpty) continue;

    final ips =
        ipsList.split(',').map((s) => s.trim()).where((s) => s.isNotEmpty);
    final ordered = useLeftmostIp ? ips : ips.toList().reversed;

    for (final candidate in ordered) {
      final parsed = _parseIp(candidate);
      if (parsed != null) return parsed;
    }
  }

  return remoteIp;
}