43 lines
988 B
Go
43 lines
988 B
Go
package health
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
// Status of the service liveness.
|
|
type LivenessStatus string
|
|
|
|
const (
|
|
// Service is alive and functioning properly.
|
|
LivenessStatusAlive LivenessStatus = "ok"
|
|
)
|
|
|
|
// Result of a liveness check.
|
|
type LivenessResult struct {
|
|
// Status of the service (always LivenessStatusAlive)
|
|
Status LivenessStatus
|
|
// Timestamp of the liveness check in milliseconds since Unix epoch
|
|
Timestamp int64
|
|
}
|
|
|
|
// Checks if the service is alive.
|
|
func Liveness() LivenessResult {
|
|
return LivenessResult{
|
|
Status: LivenessStatusAlive,
|
|
Timestamp: time.Now().UnixMilli(),
|
|
}
|
|
}
|
|
|
|
// Handler for liveness HTTP requests.
|
|
// Returns a response with status 200 and a JSON body matching LivenessResult.
|
|
func LivenessHandler() http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
result := Liveness()
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(http.StatusOK)
|
|
json.NewEncoder(w).Encode(result)
|
|
}
|
|
}
|