MCPcopy Index your code
hub / github.com/coder/coder / ParseRetryAfter

Function ParseRetryAfter

aibridge/keypool/headers.go:15–37  ·  view source on GitHub ↗

ParseRetryAfter extracts the cooldown duration from response headers. It prefers the OpenAI-specific "retry-after-ms" header (milliseconds) over the standard "Retry-After" header (seconds). Returns zero if neither header is present or parseable. The HTTP-date form of "Retry-After" is not parsed.

(resp *http.Response)

Source from the content-addressed store, hash-verified

13// (seconds). Returns zero if neither header is present or
14// parseable. The HTTP-date form of "Retry-After" is not parsed.
15func ParseRetryAfter(resp *http.Response) time.Duration {
16 if resp == nil {
17 return 0
18 }
19
20 // OpenAI convention: millisecond precision.
21 if val := resp.Header.Get("retry-after-ms"); val != "" {
22 ms, err := strconv.ParseFloat(strings.TrimSpace(val), 64)
23 if err == nil && ms > 0 {
24 return time.Duration(ms * float64(time.Millisecond))
25 }
26 }
27
28 // Standard header: seconds.
29 if val := resp.Header.Get("Retry-After"); val != "" {
30 seconds, err := strconv.Atoi(strings.TrimSpace(val))
31 if err == nil && seconds > 0 {
32 return time.Duration(seconds) * time.Second
33 }
34 }
35
36 return 0
37}

Callers 4

TestParseRetryAfterFunction · 0.92
MarkKeyOnStatusFunction · 0.85

Calls 2

DurationMethod · 0.80
GetMethod · 0.65

Tested by 1

TestParseRetryAfterFunction · 0.74