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