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  }