/
ping.go
45 lines (37 loc) · 930 Bytes
/
ping.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package handler
import (
"net/http"
"github.com/allisson/postmand"
"go.uber.org/zap"
)
type pingResponse struct {
Success bool `json:"success"`
}
// Ping implements interface for health check.
type Ping struct {
pingService postmand.PingService
logger *zap.Logger
}
// Healthz returns health check response.
func (p Ping) Healthz(w http.ResponseWriter, r *http.Request) {
pr := pingResponse{}
if err := p.pingService.Run(r.Context()); err != nil {
p.logger.Error(
"service-error",
zap.String("name", "PingService"),
zap.String("method", "Run"),
zap.Error(err),
)
makeJSONResponse(w, http.StatusInternalServerError, &pr, p.logger)
return
}
pr.Success = true
makeJSONResponse(w, http.StatusOK, &pr, p.logger)
}
// NewPing creates a new Ping.
func NewPing(pingService postmand.PingService, logger *zap.Logger) *Ping {
return &Ping{
pingService: pingService,
logger: logger,
}
}