1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package main
- import (
- "context"
- "fmt"
- "io"
- "net"
- "net/http"
- "os"
- "github.com/imgproxy/imgproxy/v3/config"
- "github.com/imgproxy/imgproxy/v3/config/configurators"
- "github.com/urfave/cli/v3"
- )
- // healthcheck performs a healthcheck on a running imgproxy instance
- func healthcheck(ctx context.Context, c *cli.Command) error {
- network := config.Network
- bind := config.Bind
- pathprefix := config.PathPrefix
- configurators.String(&network, "IMGPROXY_NETWORK")
- configurators.String(&bind, "IMGPROXY_BIND")
- configurators.URLPath(&pathprefix, "IMGPROXY_PATH_PREFIX")
- httpc := http.Client{
- Transport: &http.Transport{
- DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
- return net.Dial(network, bind)
- },
- },
- }
- res, err := httpc.Get(fmt.Sprintf("http://imgproxy%s/health", pathprefix))
- if err != nil {
- fmt.Fprintln(os.Stderr, err.Error())
- return cli.Exit(err, 1)
- }
- defer res.Body.Close()
- msg, _ := io.ReadAll(res.Body)
- fmt.Fprintln(os.Stderr, string(msg))
- if res.StatusCode != 200 {
- err := fmt.Errorf("healthcheck failed: %s", msg)
- return cli.Exit(err, 1)
- }
- return nil
- }
|