Make retries the request if it comes back with a 5XX status code.
(request *cloudcontroller.Request, passedResponse *cloudcontroller.Response)
| 23 | |
| 24 | // Make retries the request if it comes back with a 5XX status code. |
| 25 | func (retry *RetryRequest) Make(request *cloudcontroller.Request, passedResponse *cloudcontroller.Response) error { |
| 26 | var err error |
| 27 | |
| 28 | for i := 0; i < retry.maxRetries+1; i++ { |
| 29 | err = retry.connection.Make(request, passedResponse) |
| 30 | if err == nil { |
| 31 | return nil |
| 32 | } |
| 33 | |
| 34 | if retry.skipRetry(request.Method, passedResponse.HTTPResponse) { |
| 35 | break |
| 36 | } |
| 37 | |
| 38 | // Reset the request body prior to the next retry |
| 39 | resetErr := request.ResetBody() |
| 40 | if resetErr != nil { |
| 41 | if _, ok := resetErr.(ccerror.PipeSeekError); ok { |
| 42 | return ccerror.PipeSeekError{Err: err} |
| 43 | } |
| 44 | return resetErr |
| 45 | } |
| 46 | } |
| 47 | return err |
| 48 | } |
| 49 | |
| 50 | // Wrap sets the connection in the RetryRequest and returns itself. |
| 51 | func (retry *RetryRequest) Wrap(innerconnection cloudcontroller.Connection) cloudcontroller.Connection { |