func()

in kibana/client.go [299:341]


func (client *Client) readVersion() error {
	type kibanaVersionResponse struct {
		Name    string `json:"name"`
		Version struct {
			Number   string `json:"number"`
			Snapshot bool   `json:"build_snapshot"`
		} `json:"version"`
	}

	code, result, err := client.Connection.Request("GET", statusAPI, nil, nil, nil)
	if err != nil {
		return fmt.Errorf("HTTP GET request to %s/api/status fails: %w (status=%d). Response: %s",
			client.Connection.URL, err, code, truncateString(result))
	}
	if code >= 400 {
		return fmt.Errorf("HTTP GET request to %s/api/status fails: status=%d. Response: %s",
			client.Connection.URL, code, truncateString(result))
	}

	var versionString string

	var kibanaVersion kibanaVersionResponse
	err = json.Unmarshal(result, &kibanaVersion)
	if err != nil {
		return fmt.Errorf("fail to unmarshal the response from GET %s/api/status. Response: %s. Kibana status api returns: %w",
			client.Connection.URL, truncateString(result), err)
	}

	versionString = kibanaVersion.Version.Number

	if kibanaVersion.Version.Snapshot {
		// needed for the tests
		versionString += "-SNAPSHOT"
	}

	version, err := version.New(versionString)
	if err != nil {
		return fmt.Errorf("fail to parse kibana version (%v): %w", versionString, err)
	}

	client.Version = *version
	return nil
}