Files
gluetun/internal/cli/healthcheck.go

43 lines
886 B
Go
Raw Normal View History

package cli
import (
"context"
2021-07-22 20:45:17 +00:00
"net"
"net/http"
"time"
"github.com/qdm12/gluetun/internal/configuration/settings"
"github.com/qdm12/gluetun/internal/healthcheck"
"github.com/qdm12/gosettings/reader"
)
func (c *CLI) HealthCheck(ctx context.Context, reader *reader.Reader, _ Warner) (err error) {
2021-07-22 20:45:17 +00:00
// Extract the health server port from the configuration.
var config settings.Health
err = config.Read(reader)
2021-07-22 20:45:17 +00:00
if err != nil {
return err
}
config.SetDefaults()
err = config.Validate()
if err != nil {
return err
}
2021-07-22 20:45:17 +00:00
_, port, err := net.SplitHostPort(config.ServerAddress)
if err != nil {
return err
}
2020-12-30 15:24:46 +00:00
const timeout = 10 * time.Second
httpClient := &http.Client{Timeout: timeout}
client := healthcheck.NewClient(httpClient)
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
2021-07-22 20:45:17 +00:00
url := "http://127.0.0.1:" + port
return client.Check(ctx, url)
}