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  }