// Copyright 2012 Google Inc. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package transport contains HTTP transports used to make // authenticated API requests. package transport import ( "errors" "net/http" ) // APIKey is an HTTP Transport which wraps an underlying transport and // appends an API Key "key" parameter to the URL of outgoing requests. type APIKey struct { // Key is the API Key to set on requests. Key string // Transport is the underlying HTTP transport. // If nil, http.DefaultTransport is used. Transport http.RoundTripper } func (t *APIKey) RoundTrip(req *http.Request) (*http.Response, error) { rt := t.Transport if rt == nil { rt = http.DefaultTransport if rt == nil { return nil, errors.New("googleapi/transport: no Transport specified or available") } } newReq := *req args := newReq.URL.Query() args.Set("key", t.Key) newReq.URL.RawQuery = args.Encode() return rt.RoundTrip(&newReq) }