GoBlog/healthcheck.go

39 lines
783 B
Go

package main
import (
"context"
"fmt"
"log"
"net/http"
"time"
)
func (a *goBlog) healthcheck() bool {
if a.tailscaleEnabled() {
log.Println("Skip healthcheck because Tailscale is enabled")
return true
}
timeoutContext, cancelFunc := context.WithTimeout(context.Background(), 10*time.Second)
defer cancelFunc()
req, err := http.NewRequestWithContext(timeoutContext, http.MethodGet, a.getFullAddress("/ping"), nil)
if err != nil {
fmt.Println("healthcheck:", err.Error())
return false
}
resp, err := a.httpClient.Do(req)
if err != nil {
fmt.Println("healthcheck:", err.Error())
return false
}
defer resp.Body.Close()
return resp.StatusCode == 200
}
func (a *goBlog) healthcheckExitCode() int {
if a.healthcheck() {
return 0
} else {
return 1
}
}