github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/api/cloudcontroller/ccv3/request.go (about) 1 package ccv3 2 3 import ( 4 "io" 5 "net/http" 6 "net/url" 7 8 "code.cloudfoundry.org/cli/api/cloudcontroller" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/internal" 10 ) 11 12 // requestOptions contains all the options to create an HTTP request. 13 type requestOptions struct { 14 // URIParams are the list URI route parameters 15 URIParams internal.Params 16 17 // Query is a list of HTTP query parameters. Query will overwrite any 18 // existing query string in the URI. If you want to preserve the query 19 // string in URI make sure Query is nil. 20 Query url.Values 21 22 // RequestName is the name of the request (see routes) 23 RequestName string 24 25 // Method is the HTTP method. 26 Method string 27 // URL is the request path. 28 URL string 29 // Body is the content of the request. 30 Body io.ReadSeeker 31 } 32 33 // newHTTPRequest returns a constructed HTTP.Request with some defaults. 34 // Defaults are applied when Request options are not filled in. 35 func (client *Client) newHTTPRequest(passedRequest requestOptions) (*cloudcontroller.Request, error) { 36 var request *http.Request 37 var err error 38 39 if passedRequest.URL != "" { 40 request, err = http.NewRequest( 41 passedRequest.Method, 42 passedRequest.URL, 43 passedRequest.Body, 44 ) 45 } else { 46 request, err = client.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 = passedRequest.Query.Encode() 58 } 59 60 request.Header = http.Header{} 61 request.Header.Set("Accept", "application/json") 62 request.Header.Set("User-Agent", client.userAgent) 63 64 if passedRequest.Body != nil { 65 request.Header.Set("Content-Type", "application/json") 66 } 67 68 return cloudcontroller.NewRequest(request, passedRequest.Body), nil 69 }