Skip to content

Commit

Permalink
Updating RetryAfter on azcore.Response to only return duration (#8666)
Browse files Browse the repository at this point in the history
* Updating RetryAfter on azcore.Response to only return duration

* updating doc comment

Co-authored-by: Catalina Peralta <[email protected]>
  • Loading branch information
catalinaperalta and cperaltah authored Apr 29, 2020
1 parent e42f2c5 commit 3f64637
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
4 changes: 2 additions & 2 deletions sdk/azcore/policy_retry.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ func (p *retryPolicy) Do(ctx context.Context, req *Request) (resp *Response, err
}

// use the delay from retry-after if available
delay, ok := resp.RetryAfter()
if !ok {
delay := resp.RetryAfter()
if delay <= 0 {
delay = options.calcDelay(try)
}
if shouldLog {
Expand Down
14 changes: 7 additions & 7 deletions sdk/azcore/response.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,23 +96,23 @@ func (r *Response) removeBOM() {
}
}

// RetryAfter returns (non-zero, true) if the response contains a Retry-After header value.
func (r *Response) RetryAfter() (time.Duration, bool) {
// RetryAfter returns non-zero if the response contains a Retry-After header value.
func (r *Response) RetryAfter() time.Duration {
if r == nil {
return 0, false
return 0
}
ra := r.Header.Get(HeaderRetryAfter)
if ra == "" {
return 0, false
return 0
}
// retry-after values are expressed in either number of
// seconds or an HTTP-date indicating when to try again
if retryAfter, _ := strconv.Atoi(ra); retryAfter > 0 {
return time.Duration(retryAfter) * time.Second, true
return time.Duration(retryAfter) * time.Second
} else if t, err := time.Parse(time.RFC1123, ra); err == nil {
return t.Sub(time.Now()), true
return t.Sub(time.Now())
}
return 0, false
return 0
}

// WriteRequestWithResponse appends a formatted HTTP request into a Buffer. If request and/or err are
Expand Down
10 changes: 5 additions & 5 deletions sdk/azcore/response_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,21 +110,21 @@ func TestRetryAfter(t *testing.T) {
Header: http.Header{},
}
resp := Response{raw}
if d, ok := resp.RetryAfter(); ok {
if d := resp.RetryAfter(); d > 0 {
t.Fatalf("unexpected retry-after value %d", d)
}
raw.Header.Set(HeaderRetryAfter, "300")
d, ok := resp.RetryAfter()
if !ok {
d := resp.RetryAfter()
if d <= 0 {
t.Fatal("expected retry-after value from seconds")
}
if d != 300*time.Second {
t.Fatalf("expected 300 seconds, got %d", d/time.Second)
}
atDate := time.Now().Add(600 * time.Second)
raw.Header.Set(HeaderRetryAfter, atDate.Format(time.RFC1123))
d, ok = resp.RetryAfter()
if !ok {
d = resp.RetryAfter()
if d <= 0 {
t.Fatal("expected retry-after value from date")
}
// d will not be exactly 600 seconds but it will be close
Expand Down

0 comments on commit 3f64637

Please sign in to comment.