github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/api/cloudcontroller/ccv3/request.go (about)

     1  package ccv3
     2  
     3  import (
     4  	"io"
     5  	"net/http"
     6  	"net/url"
     7  )
     8  
     9  // requestOptions contains all the options to create an HTTP request.
    10  type requestOptions struct {
    11  	// URIParams are the list URI route parameters
    12  	URIParams map[string]string
    13  
    14  	// Query is a list of HTTP query parameters. Query will overwrite any
    15  	// existing query string in the URI. If you want to preserve the query
    16  	// string in URI make sure Query is nil.
    17  	Query url.Values
    18  
    19  	// RequestName is the name of the request (see routes)
    20  	RequestName string
    21  
    22  	// URL is the request path.
    23  	URL string
    24  	// Method is the HTTP method.
    25  	Method string
    26  	// Body is the content of the request.
    27  	Body io.Reader
    28  }
    29  
    30  // newHTTPRequest returns a constructed HTTP.Request with some defaults.
    31  // Defaults are applied when Request options are not filled in.
    32  func (client *Client) newHTTPRequest(passedRequest requestOptions) (*http.Request, error) {
    33  	var request *http.Request
    34  	var err error
    35  
    36  	if passedRequest.URL != "" {
    37  		request, err = http.NewRequest(
    38  			passedRequest.Method,
    39  			passedRequest.URL,
    40  			passedRequest.Body,
    41  		)
    42  	} else {
    43  		request, err = client.router.CreateRequest(
    44  			passedRequest.RequestName,
    45  			passedRequest.URIParams,
    46  			passedRequest.Body,
    47  		)
    48  	}
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	if passedRequest.Query != nil {
    54  		request.URL.RawQuery = passedRequest.Query.Encode()
    55  	}
    56  
    57  	request.Header = http.Header{}
    58  	request.Header.Set("Accept", "application/json")
    59  	request.Header.Set("Content-Type", "application/json")
    60  	request.Header.Set("User-Agent", client.userAgent)
    61  
    62  	return request, nil
    63  }