Skip to content

Commit 88a77f6

Browse files
committed
fix: fix syntax error in code for health check ping functionality
1 parent 671d8c2 commit 88a77f6

File tree

1 file changed

+125
-129
lines changed

1 file changed

+125
-129
lines changed

healthcheck.go

+125-129
Original file line numberDiff line numberDiff line change
@@ -1,160 +1,156 @@
11
package healthcheck
22

33
import (
4-
"encoding/json"
5-
"fmt"
6-
"io/ioutil"
7-
"net/http"
8-
"os"
9-
"strings"
10-
11-
"github.com/go-ping/ping"
4+
"encoding/json"
5+
"fmt"
6+
"io"
7+
"net/http"
8+
"os"
9+
"strings"
10+
11+
"github.com/go-ping/ping"
1212
)
1313

1414
// HTTP the request as done by routing
1515
func HTTP(w http.ResponseWriter, r *http.Request) {
16-
hc := HealthCheck{
17-
Name: os.Getenv("SERVICE_NAME"),
18-
URL: r.Host,
19-
Dependencies: os.Getenv("SERVICE_DEPENDENCIES"),
20-
}
21-
22-
health, err := hc.Check()
23-
if err != nil {
24-
w.Header().Set("Content-Type", "application/health+json")
25-
j, _ := json.Marshal(Health{
26-
Status: HealthFail,
27-
})
28-
w.WriteHeader(http.StatusOK)
29-
_, fErr := w.Write(j)
30-
if fErr != nil {
31-
fmt.Printf("write response: %v\n", fErr)
32-
}
33-
fmt.Printf("http health failed: %+v\n", err)
34-
return
35-
}
36-
37-
j, _ := json.Marshal(health)
38-
w.Header().Set("Content-Type", "application/health+json")
39-
_, fErr := w.Write(j)
40-
if fErr != nil {
41-
fmt.Printf("write response: %v\n", fErr)
42-
}
16+
hc := HealthCheck{
17+
Name: os.Getenv("SERVICE_NAME"),
18+
URL: r.Host,
19+
Dependencies: os.Getenv("SERVICE_DEPENDENCIES"),
20+
}
21+
22+
health, err := hc.Check()
23+
if err != nil {
24+
w.Header().Set("Content-Type", "application/health+json")
25+
j, _ := json.Marshal(Health{
26+
Status: HealthFail,
27+
})
28+
w.WriteHeader(http.StatusOK)
29+
if _, err := w.Write(j); err != nil {
30+
fmt.Printf("write response: %v\n", err)
31+
}
32+
fmt.Printf("http health failed: %+v\n", err)
33+
return
34+
}
35+
36+
j, _ := json.Marshal(health)
37+
w.Header().Set("Content-Type", "application/health+json")
38+
if _, err := w.Write(j); err != nil {
39+
fmt.Printf("write response: %v\n", err)
40+
}
4341
}
4442

4543
// Check do the health check itself
4644
func (h HealthCheck) Check() (Health, error) {
47-
health := Health{
48-
Name: h.Name,
49-
URL: h.URL,
50-
Status: HealthFail,
51-
Dependencies: nil,
52-
}
53-
54-
health.Status = HealthPass
55-
if h.Dependencies != "" {
56-
deps, err := h.getDependencies()
57-
if err != nil {
58-
return health, err
59-
}
60-
61-
checkedDeps := []Health{}
62-
for _, dep := range deps.Dependencies {
63-
d, err := dep.check()
64-
if err != nil {
65-
return health, err
66-
}
67-
checkedDeps = append(checkedDeps, d)
68-
}
69-
70-
health.Dependencies = checkedDeps
71-
}
72-
73-
// now set to failed if a dependency failed
74-
for _, dep := range health.Dependencies {
75-
if dep.Status == HealthFail {
76-
health.Status = HealthFail
77-
}
78-
}
79-
80-
return health, nil
45+
health := Health{
46+
Name: h.Name,
47+
URL: h.URL,
48+
Status: HealthFail,
49+
Dependencies: nil,
50+
}
51+
52+
health.Status = HealthPass
53+
if h.Dependencies != "" {
54+
deps, err := h.getDependencies()
55+
if err != nil {
56+
return health, err
57+
}
58+
59+
checkedDeps := []Health{}
60+
for _, dep := range deps.Dependencies {
61+
d, err := dep.check()
62+
if err != nil {
63+
return health, err
64+
}
65+
checkedDeps = append(checkedDeps, d)
66+
}
67+
68+
health.Dependencies = checkedDeps
69+
}
70+
71+
// now set to failed if a dependency failed
72+
for _, dep := range health.Dependencies {
73+
if dep.Status == HealthFail {
74+
health.Status = HealthFail
75+
}
76+
}
77+
78+
return health, nil
8179
}
8280

8381
// getDependencies get the list of dependencies
8482
func (h HealthCheck) getDependencies() (Dependencies, error) {
85-
deps := Dependencies{}
86-
err := json.Unmarshal([]byte(h.Dependencies), &deps)
87-
if err != nil {
88-
return deps, err
89-
}
83+
deps := Dependencies{}
84+
if err := json.Unmarshal([]byte(h.Dependencies), &deps); err != nil {
85+
return deps, err
86+
}
9087

91-
return deps, nil
88+
return deps, nil
9289
}
9390

9491
// check the dependency status
9592
func (d Dependency) check() (Health, error) {
96-
if strings.Contains(d.URL, "$") {
97-
d.URL = os.Getenv(d.URL[1:])
98-
}
93+
if strings.Contains(d.URL, "$") {
94+
d.URL = os.Getenv(d.URL[1:])
95+
}
9996

100-
// Ping check
101-
if d.Ping {
102-
return d.ping()
103-
}
97+
// Ping check
98+
if d.Ping {
99+
return d.ping()
100+
}
104101

105-
// Standard check
106-
return d.curl()
102+
// Standard check
103+
return d.curl()
107104
}
108105

109106
// ping checks
110107
func (d Dependency) ping() (Health, error) {
111-
h := Health{
112-
Name: d.Name,
113-
URL: d.URL,
114-
Status: HealthFail,
115-
}
116-
117-
pinger, err := ping.NewPinger(h.URL)
118-
if err != nil {
119-
return h, err
120-
}
121-
122-
pinger.Count = 3
123-
if err := pinger.Run(); err != nil {
124-
return h, err
125-
}
126-
127-
h.Status = HealthPass
128-
return h, nil
108+
h := Health{
109+
Name: d.Name,
110+
URL: d.URL,
111+
Status: HealthFail,
112+
}
113+
114+
pinger, err := ping.NewPinger(h.URL)
115+
if err != nil {
116+
return h, err
117+
}
118+
119+
pinger.Count = 3
120+
if err := pinger.Run(); err != nil {
121+
return h, err
122+
}
123+
124+
h.Status = HealthPass
125+
return h, nil
129126
}
130127

131128
// curl checks
132129
func (d Dependency) curl() (Health, error) {
133-
h := Health{}
134-
p, err := http.Get(d.URL)
135-
if err != nil {
136-
h = Health{
137-
URL: d.URL,
138-
Status: HealthFail,
139-
}
140-
return h, err
141-
}
142-
143-
defer func() {
144-
_ = p.Body.Close()
145-
}()
146-
147-
b, err := ioutil.ReadAll(p.Body)
148-
if err != nil {
149-
h = Health{
150-
URL: d.URL,
151-
Status: HealthFail,
152-
}
153-
return h, err
154-
}
155-
jerr := json.Unmarshal(b, &h)
156-
if jerr != nil {
157-
return h, jerr
158-
}
159-
return h, nil
130+
h := Health{}
131+
p, err := http.Get(d.URL)
132+
if err != nil {
133+
h = Health{
134+
URL: d.URL,
135+
Status: HealthFail,
136+
}
137+
return h, err
138+
}
139+
140+
defer func() {
141+
_ = p.Body.Close()
142+
}()
143+
144+
b, err := io.ReadAll(p.Body)
145+
if err != nil {
146+
h = Health{
147+
URL: d.URL,
148+
Status: HealthFail,
149+
}
150+
return h, err
151+
}
152+
if err := json.Unmarshal(b, &h); err != nil {
153+
return h, err
154+
}
155+
return h, nil
160156
}

0 commit comments

Comments
 (0)