nurse/api/check_handler.go

35 lines
665 B
Go

package api
import (
"context"
"net/http"
"time"
"code.1533b4dc0.de/prskr/nurse/check"
)
var _ http.Handler = (*CheckHandler)(nil)
type CheckHandler struct {
Timeout time.Duration
Check check.SystemChecker
}
func (c CheckHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
var (
ctx = request.Context()
cancel context.CancelFunc
)
if c.Timeout != 0 {
ctx, cancel = context.WithTimeout(ctx, c.Timeout)
defer cancel()
}
if err := c.Check.Execute(ctx); err != nil {
writer.WriteHeader(http.StatusServiceUnavailable)
_, _ = writer.Write([]byte(err.Error()))
return
}
writer.WriteHeader(http.StatusOK)
return
}