1234567891011121314151617181920212223242526272829303132333435363738 |
- // 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)
- }
|