deps: Update github.com/hashicorp/go-retryablehttp

This commit is contained in:
James Nugent 2016-05-06 17:43:00 -07:00
parent 84b79dbb9f
commit 6e602b5dce
3 changed files with 18 additions and 1 deletions

2
Godeps/Godeps.json generated
View File

@ -718,7 +718,7 @@
},
{
"ImportPath": "github.com/hashicorp/go-retryablehttp",
"Rev": "24fda80b7c713c52649e57ce20100d453f7bdb24"
"Rev": "5ec125ef739293cb4d57c3456dd92ba9af29ed6e"
},
{
"ImportPath": "github.com/hashicorp/go-rootcerts",

View File

@ -0,0 +1,3 @@
.idea/
*.iml
*.test

View File

@ -80,6 +80,12 @@ func NewRequest(method, url string, body io.ReadSeeker) (*Request, error) {
return &Request{body, httpReq}, nil
}
// RequestLogHook allows a function to run before each retry. The HTTP
// request which will be made, and the retry number (0 for the initial
// request) are available to users. The internal logger is exposed to
// consumers.
type RequestLogHook func(*log.Logger, *http.Request, int)
// Client is used to make HTTP requests. It adds additional functionality
// like automatic retries to tolerate minor outages.
type Client struct {
@ -89,6 +95,10 @@ type Client struct {
RetryWaitMin time.Duration // Minimum time to wait
RetryWaitMax time.Duration // Maximum time to wait
RetryMax int // Maximum number of retries
// RequestLogHook allows a user-supplied function to be called
// before each retry.
RequestLogHook RequestLogHook
}
// NewClient creates a new Client with default settings.
@ -116,6 +126,10 @@ func (c *Client) Do(req *Request) (*http.Response, error) {
}
}
if c.RequestLogHook != nil {
c.RequestLogHook(c.Logger, req.Request, i)
}
// Attempt the request
resp, err := c.HTTPClient.Do(req.Request)
if err != nil {