package utils

import (
	"net"
	"net/http"

	"github.com/yusing/go-proxy/internal/common"
)

func IsSiteHealthy(url string) bool {
	// try HEAD first
	// if HEAD is not allowed, try GET
	resp, err := httpClient.Head(url)
	if resp != nil {
		resp.Body.Close()
	}
	if err != nil && resp != nil && resp.StatusCode == http.StatusMethodNotAllowed {
		_, err = httpClient.Get(url)
	}
	if resp != nil {
		resp.Body.Close()
	}
	return err == nil
}

func IsStreamHealthy(scheme, address string) bool {
	conn, err := net.DialTimeout(scheme, address, common.DialTimeout)
	if err != nil {
		return false
	}
	conn.Close()
	return true
}