From 88ecf30f6fcda317350e6971b3073ac33b33779f Mon Sep 17 00:00:00 2001 From: Chris Cotter Date: Fri, 4 Feb 2022 00:57:21 -0500 Subject: [PATCH 1/2] fix(googleapi): fill response headers in Error 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..f0d1e86f7c9 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) { From d7295ec4a369d001448ee1a8cdcedccc5c558fe3 Mon Sep 17 00:00:00 2001 From: Chris Cotter Date: Fri, 4 Feb 2022 01:03:39 -0500 Subject: [PATCH 2/2] gofmt --- googleapi/googleapi_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/googleapi/googleapi_test.go b/googleapi/googleapi_test.go index f0d1e86f7c9..510a5842630 100644 --- a/googleapi/googleapi_test.go +++ b/googleapi/googleapi_test.go @@ -302,12 +302,12 @@ 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"}}, + Header: map[string][]string{"key1": {"value1"}, "key2": {"value2", "value3"}}, }, `{"error":{}}`, &Error{ - Code: http.StatusInternalServerError, - Body: `{"error":{}}`, + Code: http.StatusInternalServerError, + Body: `{"error":{}}`, Header: map[string][]string{"key1": {"value1"}, "key2": {"value2", "value3"}}, }, `googleapi: got HTTP response code 500 with body: {"error":{}}`,