Module: Trigv::Retry

Defined in:
lib/trigv/retry.rb

Class Method Summary collapse

Class Method Details

.parse_retry_after(value, now = Time.now) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/trigv/retry.rb', line 9

def parse_retry_after(value, now = Time.now)
  return nil if value.nil? || value.strip.empty?

  trimmed = value.strip

  if trimmed.match?(/\A\d+\z/)
    seconds = trimmed.to_i
    return nil if seconds.negative?

    return seconds.to_f
  end

  retry_at = Time.httpdate(trimmed)
  wait = retry_at - now
  wait.negative? ? nil : wait
rescue ArgumentError
  nil
end