From 9eaba8162c40393aa8b1f6a2e45caa876fd8fa78 Mon Sep 17 00:00:00 2001 From: Chris Cotter Date: Fri, 4 Feb 2022 10:45:34 -0500 Subject: [PATCH] fix(googleapi): fill response headers in Error (#1418) Currently googleapi.Error is not populating the Header field with response headers. We found this to be true across multiple APIs. This fix ensures that Header is filled in correctly, allowing easier debugging by callers. --- googleapi/googleapi.go | 1 + googleapi/googleapi_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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) {