github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/api/uaa/request.go (about) 1 package uaa 2 3 import ( 4 "io" 5 "net/http" 6 "net/url" 7 8 "github.com/tedsuo/rata" 9 ) 10 11 // RequestOptions contains all the options to create an HTTP Request. 12 type requestOptions struct { 13 // Header is the set of request headers 14 Header http.Header 15 16 // Params are the list URI route parameters 17 Params rata.Params 18 19 // Query is a list of HTTP query parameters 20 Query url.Values 21 22 // RequestName is the name of the request (see routes) 23 RequestName string 24 25 // Body is the request body 26 Body io.Reader 27 } 28 29 // newRequest returns a constructed http.Request with some defaults. The 30 // request will terminate the connection after it is sent (via a 'Connection: 31 // close' header). 32 func (client *Client) newRequest(passedRequest requestOptions) (*http.Request, error) { 33 request, err := client.router.CreateRequest( 34 passedRequest.RequestName, 35 passedRequest.Params, 36 passedRequest.Body, 37 ) 38 if err != nil { 39 return nil, err 40 } 41 42 request.URL.RawQuery = passedRequest.Query.Encode() 43 44 if passedRequest.Header != nil { 45 request.Header = passedRequest.Header 46 } else { 47 request.Header = http.Header{} 48 } 49 request.Header.Set("Accept", "application/json") 50 request.Header.Set("Connection", "close") 51 request.Header.Set("User-Agent", client.userAgent) 52 53 return request, nil 54 }