newHTTPRequest returns a constructed HTTP.Request with some defaults. Defaults are applied when Request options are not filled in.
(passedRequest requestOptions)
| 34 | // newHTTPRequest returns a constructed HTTP.Request with some defaults. |
| 35 | // Defaults are applied when Request options are not filled in. |
| 36 | func (requester *RealRequester) newHTTPRequest(passedRequest requestOptions) (*cloudcontroller.Request, error) { |
| 37 | var request *http.Request |
| 38 | var err error |
| 39 | if passedRequest.URL != "" { |
| 40 | request, err = http.NewRequest( |
| 41 | passedRequest.Method, |
| 42 | passedRequest.URL, |
| 43 | passedRequest.Body, |
| 44 | ) |
| 45 | } else { |
| 46 | request, err = requester.router.CreateRequest( |
| 47 | passedRequest.RequestName, |
| 48 | map[string]string(passedRequest.URIParams), |
| 49 | passedRequest.Body, |
| 50 | ) |
| 51 | } |
| 52 | if err != nil { |
| 53 | return nil, err |
| 54 | } |
| 55 | |
| 56 | if passedRequest.Query != nil { |
| 57 | request.URL.RawQuery = FormatQueryParameters(passedRequest.Query).Encode() |
| 58 | } |
| 59 | |
| 60 | request.Header = http.Header{} |
| 61 | |
| 62 | if passedRequest.Header != nil { |
| 63 | request.Header = passedRequest.Header |
| 64 | } |
| 65 | |
| 66 | if request.Header.Get("User-Agent") == "" { |
| 67 | request.Header.Set("User-Agent", requester.userAgent) |
| 68 | } |
| 69 | |
| 70 | if request.Header.Get("Accept") == "" { |
| 71 | request.Header.Set("Accept", "application/json") |
| 72 | } |
| 73 | |
| 74 | if !isDownloadDroplet(passedRequest.URL, passedRequest.RequestName) && request.Header.Get("Content-Type") == "" { |
| 75 | request.Header.Set("Content-Type", "application/json") |
| 76 | } else if isDownloadDroplet(passedRequest.URL, passedRequest.RequestName) && request.Header.Get("Content-Type") != "" { |
| 77 | request.Header.Del("Content-Type") |
| 78 | } |
| 79 | |
| 80 | return cloudcontroller.NewRequest(request, passedRequest.Body), nil |
| 81 | } |
| 82 | |
| 83 | func isDownloadDroplet(URL string, requestName string) bool { |
| 84 | return (strings.Contains(URL, "droplet") && strings.Contains(URL, "download")) || (requestName == internal.GetDropletBitsRequest) |
no test coverage detected