| 118 | var _ net.RoundTripperWrapper = &azureRoundTripper{} |
| 119 | |
| 120 | func (r *azureRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { |
| 121 | if len(req.Header.Get(authHeader)) != 0 { |
| 122 | return r.roundTripper.RoundTrip(req) |
| 123 | } |
| 124 | |
| 125 | token, err := r.tokenSource.Token() |
| 126 | if err != nil { |
| 127 | klog.Errorf("Failed to acquire a token: %v", err) |
| 128 | return nil, fmt.Errorf("acquiring a token for authorization header: %v", err) |
| 129 | } |
| 130 | |
| 131 | // clone the request in order to avoid modifying the headers of the original request |
| 132 | req2 := new(http.Request) |
| 133 | *req2 = *req |
| 134 | req2.Header = make(http.Header, len(req.Header)) |
| 135 | for k, s := range req.Header { |
| 136 | req2.Header[k] = append([]string(nil), s...) |
| 137 | } |
| 138 | |
| 139 | req2.Header.Set(authHeader, fmt.Sprintf("%s %s", tokenType, token.token.AccessToken)) |
| 140 | |
| 141 | return r.roundTripper.RoundTrip(req2) |
| 142 | } |
| 143 | |
| 144 | func (r *azureRoundTripper) WrappedRoundTripper() http.RoundTripper { return r.roundTripper } |
| 145 | |