Skip to content

Commit

Permalink
Refactor To Simpler Structure
Browse files Browse the repository at this point in the history
  • Loading branch information
rossedman committed Oct 5, 2021
1 parent 8792cf2 commit e446d96
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 48 deletions.
16 changes: 16 additions & 0 deletions pkg/endoflife/endoflife.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
22 changes: 1 addition & 21 deletions pkg/endoflife/endoflife_eks.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package endoflife

import (
"fmt"
"math"
"net/http"
"time"
)

// AmazonEKS represents the JSON data returned
// by the endoflife.date/api/amazon-eks/<version>.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
Expand Down Expand Up @@ -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
}
5 changes: 2 additions & 3 deletions pkg/endoflife/endoflife_eks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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)
})
}
22 changes: 1 addition & 21 deletions pkg/endoflife/endoflife_kubernetes.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package endoflife

import (
"fmt"
"math"
"net/http"
"time"
)

// Kubernetes represents the JSON data returned
// by the endoflife.date/api/kubernetes/<version>.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
Expand Down Expand Up @@ -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
}
5 changes: 2 additions & 3 deletions pkg/endoflife/endoflife_kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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)
})
}
18 changes: 18 additions & 0 deletions pkg/endoflife/endoflife_product.go
Original file line number Diff line number Diff line change
@@ -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"
}

0 comments on commit e446d96

Please sign in to comment.