func()

in main/health.go [185:230]


func (p *HttpHealthProbe) evaluate(lg *slog.Logger) (ProbeResponse, error) {
	req, err := http.NewRequest("GET", p.address(), nil)
	var probeResponse ProbeResponse
	if err != nil {
		probeResponse.ApplicationHealthState = Unknown
		return probeResponse, err
	}

	req.Header.Set("User-Agent", "ApplicationHealthExtension/1.0")
	resp, err := p.HttpClient.Do(req)
	// non-2xx status code doesn't return err
	// err is returned if a timeout occurred
	if err != nil {
		probeResponse.ApplicationHealthState = Unknown
		return probeResponse, err
	}

	defer resp.Body.Close()

	// non 2xx status code
	if resp.StatusCode < 200 || resp.StatusCode > 299 {
		probeResponse.ApplicationHealthState = Unknown
		return probeResponse, errors.New(fmt.Sprintf("Unsuccessful response status code %v", resp.StatusCode))
	}
	bodyBytes, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		probeResponse.ApplicationHealthState = Unknown
		return probeResponse, err
	}

	if err := json.Unmarshal(bodyBytes, &probeResponse); err != nil {
		probeResponse.ApplicationHealthState = Unknown
		return probeResponse, err
	}

	if err := probeResponse.validateCustomMetrics(); err != nil {
		telemetry.SendEvent(telemetry.ErrorEvent, telemetry.AppHealthProbeTask, err.Error(), "error", err)
	}

	if err := probeResponse.validateApplicationHealthState(); err != nil {
		probeResponse.ApplicationHealthState = Unknown
		return probeResponse, err
	}

	return probeResponse, nil
}