parseRetryAfter function
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;
}