diff --git a/googleapi/googleapi.go b/googleapi/googleapi.go index ae010adce9d..2d3e00edc9f 100644 --- a/googleapi/googleapi.go +++ b/googleapi/googleapi.go @@ -141,6 +141,7 @@ func CheckResponse(res *http.Response) error { jerr.Error.Code = res.StatusCode } jerr.Error.Body = string(slurp) + jerr.Error.Header = res.Header return jerr.Error } } diff --git a/googleapi/googleapi_test.go b/googleapi/googleapi_test.go index b7240c810ac..510a5842630 100644 --- a/googleapi/googleapi_test.go +++ b/googleapi/googleapi_test.go @@ -298,6 +298,20 @@ Details: } ]`, }, + { + // Case: Confirm that response headers are propagated to the error. + &http.Response{ + StatusCode: http.StatusInternalServerError, + Header: map[string][]string{"key1": {"value1"}, "key2": {"value2", "value3"}}, + }, + `{"error":{}}`, + &Error{ + Code: http.StatusInternalServerError, + Body: `{"error":{}}`, + Header: map[string][]string{"key1": {"value1"}, "key2": {"value2", "value3"}}, + }, + `googleapi: got HTTP response code 500 with body: {"error":{}}`, + }, } func TestCheckResponse(t *testing.T) {