github.com/timstclair/heapster@v0.20.0-alpha1/Godeps/_workspace/src/google.golang.org/api/googleapi/transport/apikey.go (about) 1 // Copyright 2012 Google Inc. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package transport contains HTTP transports used to make 6 // authenticated API requests. 7 package transport 8 9 import ( 10 "errors" 11 "net/http" 12 ) 13 14 // APIKey is an HTTP Transport which wraps an underlying transport and 15 // appends an API Key "key" parameter to the URL of outgoing requests. 16 type APIKey struct { 17 // Key is the API Key to set on requests. 18 Key string 19 20 // Transport is the underlying HTTP transport. 21 // If nil, http.DefaultTransport is used. 22 Transport http.RoundTripper 23 } 24 25 func (t *APIKey) RoundTrip(req *http.Request) (*http.Response, error) { 26 rt := t.Transport 27 if rt == nil { 28 rt = http.DefaultTransport 29 if rt == nil { 30 return nil, errors.New("googleapi/transport: no Transport specified or available") 31 } 32 } 33 newReq := *req 34 args := newReq.URL.Query() 35 args.Set("key", t.Key) 36 newReq.URL.RawQuery = args.Encode() 37 return rt.RoundTrip(&newReq) 38 }