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
}