github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/api/cloudcontroller/ccv3/request.go (about) 1 package ccv3 2 3 import ( 4 "io" 5 "net/http" 6 "net/url" 7 ) 8 9 // requestOptions contains all the options to create an HTTP request. 10 type requestOptions struct { 11 // URIParams are the list URI route parameters 12 URIParams map[string]string 13 14 // Query is a list of HTTP query parameters. Query will overwrite any 15 // existing query string in the URI. If you want to preserve the query 16 // string in URI make sure Query is nil. 17 Query url.Values 18 19 // RequestName is the name of the request (see routes) 20 RequestName string 21 22 // URL is the request path. 23 URL string 24 // Method is the HTTP method. 25 Method string 26 // Body is the content of the request. 27 Body io.Reader 28 } 29 30 // newHTTPRequest returns a constructed HTTP.Request with some defaults. 31 // Defaults are applied when Request options are not filled in. 32 func (client *Client) newHTTPRequest(passedRequest requestOptions) (*http.Request, error) { 33 var request *http.Request 34 var err error 35 36 if passedRequest.URL != "" { 37 request, err = http.NewRequest( 38 passedRequest.Method, 39 passedRequest.URL, 40 passedRequest.Body, 41 ) 42 } else { 43 request, err = client.router.CreateRequest( 44 passedRequest.RequestName, 45 passedRequest.URIParams, 46 passedRequest.Body, 47 ) 48 } 49 if err != nil { 50 return nil, err 51 } 52 53 if passedRequest.Query != nil { 54 request.URL.RawQuery = passedRequest.Query.Encode() 55 } 56 57 request.Header = http.Header{} 58 request.Header.Set("Accept", "application/json") 59 request.Header.Set("Content-Type", "application/json") 60 request.Header.Set("User-Agent", client.userAgent) 61 62 return request, nil 63 }