-func (c *Client) MakeRequest(method, path string, body io.Reader, params interface{}) (*http.Request, error) {
- urlString := c.apiURL(path)
- urlValues, err := anythingToValues(params)
- if err != nil {
- return nil, err
- }
- if (method == "GET" || body != nil) && urlValues != nil {
- // FIXME: what if params don't fit in URL
- u, err := url.Parse(urlString)
- if err != nil {
- return nil, err
- }
- u.RawQuery = urlValues.Encode()
- urlString = u.String()
- }
- req, err := http.NewRequest(method, urlString, body)
- if err != nil {
- return nil, err
- }
- req.Header.Set("Content-type", "application/x-www-form-urlencoded")
-
- if c.AuthToken != "" {
- req.Header.Set("Authorization", "OAuth2 "+c.AuthToken)
- }
-
- if req.Header.Get("X-Request-Id") == "" {
- reqid, _ := c.context().Value(contextKeyRequestID).(string)
- if reqid == "" {
- reqid = reqIDGen.Next()
- }
- if req.Header == nil {
- req.Header = http.Header{"X-Request-Id": {reqid}}
- } else {
- req.Header.Set("X-Request-Id", reqid)
- }
- }
-
- return req, nil
-}
-