// Do adds Authorization and X-Request-Id headers and then calls
// (*http.Client)Do().
func (c *Client) Do(req *http.Request) (*http.Response, error) {
- if auth, _ := req.Context().Value("Authorization").(string); auth != "" {
+ if auth, _ := req.Context().Value(contextKeyAuthorization{}).(string); auth != "" {
req.Header.Add("Authorization", auth)
} else if c.AuthToken != "" {
req.Header.Add("Authorization", "OAuth2 "+c.AuthToken)
}
if req.Header.Get("X-Request-Id") == "" {
- reqid, _ := req.Context().Value(contextKeyRequestID).(string)
+ reqid, _ := req.Context().Value(contextKeyRequestID{}).(string)
if reqid == "" {
- reqid, _ = c.context().Value(contextKeyRequestID).(string)
+ reqid, _ = c.context().Value(contextKeyRequestID{}).(string)
}
if reqid == "" {
reqid = reqIDGen.Next()
urlValues.Set(k, v.String())
continue
}
+ if v, ok := v.(bool); ok {
+ if v {
+ urlValues.Set(k, "true")
+ } else {
+ // "foo=false", "foo=0", and "foo="
+ // are all taken as true strings, so
+ // don't send false values at all --
+ // rely on the default being false.
+ }
+ continue
+ }
j, err := json.Marshal(v)
if err != nil {
return nil, err