From d982796e58824733a482e8a119975d0974dd350c Mon Sep 17 00:00:00 2001 From: Umputun Date: Thu, 13 May 2021 02:00:13 -0500 Subject: [PATCH] simplify consul client a little bit --- .../provider/consulcatalog/client.go | 29 +++---------------- .../provider/consulcatalog/client_test.go | 7 +++-- 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/app/discovery/provider/consulcatalog/client.go b/app/discovery/provider/consulcatalog/client.go index 071f77c..e0e83b4 100644 --- a/app/discovery/provider/consulcatalog/client.go +++ b/app/discovery/provider/consulcatalog/client.go @@ -3,8 +3,6 @@ package consulcatalog import ( "encoding/json" "fmt" - "io" - "log" "net/http" "sort" "strings" @@ -68,24 +66,15 @@ func (cl *consulClient) getServiceNames() ([]string, error) { if err != nil { return nil, fmt.Errorf("error send request to consul, %w", err) } + defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("unexpected response status code %d", resp.StatusCode) } - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("error read response body, %w", err) - } - err = resp.Body.Close() - if err != nil { - log.Printf("[ERROR] error close body, %v", err) - } - result := map[string][]string{} - err = json.Unmarshal(body, &result) - if err != nil { + if err = json.NewDecoder(resp.Body).Decode(&result); err != nil { return nil, fmt.Errorf("error unmarshal consul response, %w", err) } @@ -118,24 +107,14 @@ func (cl *consulClient) getServices(serviceName string) ([]consulService, error) if err != nil { return nil, fmt.Errorf("error send request to consul, %w", err) } + defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("unexpected response status code %d", resp.StatusCode) } - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("error read response body, %w", err) - } - err = resp.Body.Close() - if err != nil { - log.Printf("[ERROR] error close body, %v", err) - } - var services []consulService - - err = json.Unmarshal(body, &services) - if err != nil { + if err = json.NewDecoder(resp.Body).Decode(&services); err != nil { return nil, fmt.Errorf("error unmarshal consul response, %w", err) } diff --git a/app/discovery/provider/consulcatalog/client_test.go b/app/discovery/provider/consulcatalog/client_test.go index 87eacf7..cf9b495 100644 --- a/app/discovery/provider/consulcatalog/client_test.go +++ b/app/discovery/provider/consulcatalog/client_test.go @@ -1,12 +1,13 @@ package consulcatalog import ( - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "net/http" "net/http/httptest" "strings" "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewClient(t *testing.T) { @@ -254,5 +255,5 @@ func TestClient_Get_error_get_services(t *testing.T) { _, err := cl.Get() require.Error(t, err) - assert.Equal(t, "error get service names, error unmarshal consul response, unexpected end of JSON input", err.Error()) + assert.Equal(t, "error get service names, error unmarshal consul response, EOF", err.Error()) }