35 lines
759 B
Go
35 lines
759 B
Go
|
|
package healthcheck
|
||
|
|
|
||
|
|
import (
|
||
|
|
"net"
|
||
|
|
"net/http"
|
||
|
|
|
||
|
|
"github.com/qdm12/golibs/logging"
|
||
|
|
)
|
||
|
|
|
||
|
|
type handler struct {
|
||
|
|
logger logging.Logger
|
||
|
|
resolver *net.Resolver
|
||
|
|
}
|
||
|
|
|
||
|
|
func newHandler(logger logging.Logger, resolver *net.Resolver) http.Handler {
|
||
|
|
return &handler{
|
||
|
|
logger: logger,
|
||
|
|
resolver: resolver,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (h *handler) ServeHTTP(responseWriter http.ResponseWriter, request *http.Request) {
|
||
|
|
if request.Method != http.MethodGet {
|
||
|
|
http.Error(responseWriter, "method not supported for healthcheck", http.StatusBadRequest)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
err := healthCheck(request.Context(), h.resolver)
|
||
|
|
if err != nil {
|
||
|
|
h.logger.Error(err)
|
||
|
|
http.Error(responseWriter, err.Error(), http.StatusInternalServerError)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
responseWriter.WriteHeader(http.StatusOK)
|
||
|
|
}
|