parseRetryAfter function

int? parseRetryAfter(
  1. String? raw, [
  2. DateTime? now
])

Parses an RFC 9110 Retry-After header value (delta-seconds or HTTP-date).

Implementation

int? parseRetryAfter(String? raw, [DateTime? now]) {
  if (raw == null) return null;
  final trimmed = raw.trim();
  if (trimmed.isEmpty) return null;

  final delta = int.tryParse(trimmed);
  if (delta != null) {
    if (delta < 0) return null;
    return delta > maxRetryAfterSeconds ? maxRetryAfterSeconds : delta;
  }

  final dt = _parseHttpDate(trimmed);
  if (dt != null) {
    final current = now ?? DateTime.now().toUtc();
    final diff = dt.difference(current).inSeconds;
    if (diff <= 0) return 0;
    return diff > maxRetryAfterSeconds ? maxRetryAfterSeconds : diff;
  }
  return null;
}