From e446d961c67f59d05f8a8ac92537c46a8687abda Mon Sep 17 00:00:00 2001 From: Ross Edman Date: Tue, 5 Oct 2021 15:57:23 -0500 Subject: [PATCH] Refactor To Simpler Structure --- pkg/endoflife/endoflife.go | 16 ++++++++++++++++ pkg/endoflife/endoflife_eks.go | 22 +--------------------- pkg/endoflife/endoflife_eks_test.go | 5 ++--- pkg/endoflife/endoflife_kubernetes.go | 22 +--------------------- pkg/endoflife/endoflife_kubernetes_test.go | 5 ++--- pkg/endoflife/endoflife_product.go | 18 ++++++++++++++++++ 6 files changed, 40 insertions(+), 48 deletions(-) create mode 100644 pkg/endoflife/endoflife_product.go diff --git a/pkg/endoflife/endoflife.go b/pkg/endoflife/endoflife.go index f9084f8..39304c8 100644 --- a/pkg/endoflife/endoflife.go +++ b/pkg/endoflife/endoflife.go @@ -52,3 +52,19 @@ func (c *Client) send(req *http.Request, v interface{}) error { return nil } + +// GetAmazonEKS returns the data for a single release of EKS +func (c *Client) Get(product Product, version string) (AmazonEKS, error) { + res := AmazonEKS{} + + req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/%s/%s.json", c.BaseURL, product.String(), version), nil) + if err != nil { + return res, err + } + + if err := c.send(req, &res); err != nil { + return res, err + } + + return res, nil +} diff --git a/pkg/endoflife/endoflife_eks.go b/pkg/endoflife/endoflife_eks.go index 48683f8..10e4344 100644 --- a/pkg/endoflife/endoflife_eks.go +++ b/pkg/endoflife/endoflife_eks.go @@ -1,9 +1,7 @@ package endoflife import ( - "fmt" "math" - "net/http" "time" ) @@ -11,9 +9,7 @@ import ( // by the endoflife.date/api/amazon-eks/.json // endpoint type AmazonEKS struct { - EOL string `json:"eol"` - Release string `json:"release"` - Latest string `json:"latest"` + EOL string `json:"eol"` } // GetDaysUntilEnd parses the EOL date and provides a count @@ -48,19 +44,3 @@ func (a *AmazonEKS) IsExpired() (bool, error) { } return d < 1, nil } - -// GetAmazonEKS returns the data for a single release of EKS -func (c *Client) GetAmazonEKS(version string) (AmazonEKS, error) { - res := AmazonEKS{} - - req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/amazon-eks/%s.json", c.BaseURL, version), nil) - if err != nil { - return res, err - } - - if err := c.send(req, &res); err != nil { - return res, err - } - - return res, nil -} diff --git a/pkg/endoflife/endoflife_eks_test.go b/pkg/endoflife/endoflife_eks_test.go index d62688a..475e912 100644 --- a/pkg/endoflife/endoflife_eks_test.go +++ b/pkg/endoflife/endoflife_eks_test.go @@ -79,10 +79,9 @@ func TestGetEKS(t *testing.T) { client := NewClient(svr.URL, &http.Client{}) // create request - eks, err := client.GetAmazonEKS("1.19") + eks, err := client.Get(AmazonEKSProduct, "1.19") assert.Nil(t, err) assert.Equal(t, "2022-04-01", eks.EOL) - assert.Equal(t, "2021-02-16", eks.Release) }) t.Run("fails when cannot be found", func(t *testing.T) { @@ -96,7 +95,7 @@ func TestGetEKS(t *testing.T) { client := NewClient(svr.URL, &http.Client{}) // create request - _, err := client.GetAmazonEKS("1.666") + _, err := client.Get(AmazonEKSProduct, "1.666") assert.Error(t, err) }) } diff --git a/pkg/endoflife/endoflife_kubernetes.go b/pkg/endoflife/endoflife_kubernetes.go index 8e16cfe..1bdc835 100644 --- a/pkg/endoflife/endoflife_kubernetes.go +++ b/pkg/endoflife/endoflife_kubernetes.go @@ -1,9 +1,7 @@ package endoflife import ( - "fmt" "math" - "net/http" "time" ) @@ -11,9 +9,7 @@ import ( // by the endoflife.date/api/kubernetes/.json // endpoint type Kubernetes struct { - EOL string `json:"eol"` - Release string `json:"release"` - Latest string `json:"latest"` + EOL string `json:"eol"` } // GetDaysUntilEnd parses the EOL date and provides a count @@ -48,19 +44,3 @@ func (k *Kubernetes) IsExpired() (bool, error) { } return d < 1, nil } - -// GetKubernetes returns the data for a single release of Kubernetes -func (c *Client) GetKubernetes(version string) (Kubernetes, error) { - res := Kubernetes{} - - req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/kubernetes/%s.json", c.BaseURL, version), nil) - if err != nil { - return res, err - } - - if err := c.send(req, &res); err != nil { - return res, err - } - - return res, nil -} diff --git a/pkg/endoflife/endoflife_kubernetes_test.go b/pkg/endoflife/endoflife_kubernetes_test.go index 6703fab..45d7276 100644 --- a/pkg/endoflife/endoflife_kubernetes_test.go +++ b/pkg/endoflife/endoflife_kubernetes_test.go @@ -79,10 +79,9 @@ func TestGetKubernetes(t *testing.T) { client := NewClient(svr.URL, &http.Client{}) // create request - eks, err := client.GetKubernetes("1.19") + eks, err := client.Get(KubernetesProduct, "1.19") assert.Nil(t, err) assert.Equal(t, "2021-10-28", eks.EOL) - assert.Equal(t, "2020-08-27", eks.Release) }) t.Run("fails when cannot be found", func(t *testing.T) { @@ -96,7 +95,7 @@ func TestGetKubernetes(t *testing.T) { client := NewClient(svr.URL, &http.Client{}) // create request - _, err := client.GetKubernetes("1.666") + _, err := client.Get(KubernetesProduct, "1.666") assert.Error(t, err) }) } diff --git a/pkg/endoflife/endoflife_product.go b/pkg/endoflife/endoflife_product.go new file mode 100644 index 0000000..19d0934 --- /dev/null +++ b/pkg/endoflife/endoflife_product.go @@ -0,0 +1,18 @@ +package endoflife + +const ( + KubernetesProduct Product = iota + AmazonEKSProduct +) + +type Product int64 + +func (p Product) String() string { + switch p { + case KubernetesProduct: + return "kubernetes" + case AmazonEKSProduct: + return "amazon-eks" + } + return "unknown" +}