(request *http.Request)
| 399 | } |
| 400 | |
| 401 | func (gateway Gateway) doRequest(request *http.Request) (*http.Response, error) { |
| 402 | var response *http.Response |
| 403 | var err error |
| 404 | |
| 405 | if gateway.transport == nil { |
| 406 | makeHTTPTransport(&gateway) |
| 407 | } |
| 408 | |
| 409 | httpClient := NewHTTPClient(gateway.transport, NewRequestDumper(gateway.logger)) |
| 410 | |
| 411 | httpClient.DumpRequest(request) |
| 412 | |
| 413 | for i := 0; i < 3; i++ { |
| 414 | response, err = httpClient.Do(request) |
| 415 | if response == nil && err != nil { |
| 416 | continue |
| 417 | } else { |
| 418 | break |
| 419 | } |
| 420 | } |
| 421 | |
| 422 | if err != nil { |
| 423 | return response, err |
| 424 | } |
| 425 | |
| 426 | httpClient.DumpResponse(response) |
| 427 | |
| 428 | rawWarnings := strings.Split(response.Header.Get("X-Cf-Warnings"), ",") |
| 429 | for _, rawWarning := range rawWarnings { |
| 430 | if rawWarning == "" { |
| 431 | continue |
| 432 | } |
| 433 | warning, _ := url.QueryUnescape(rawWarning) |
| 434 | *gateway.warnings = append(*gateway.warnings, warning) |
| 435 | } |
| 436 | |
| 437 | return response, err |
| 438 | } |
| 439 | |
| 440 | func makeHTTPTransport(gateway *Gateway) { |
| 441 |
no test coverage detected