in main.go [449:477]
func getFromMetadata(urlStr string) ([]byte, error) {
parsedURL, err := url.Parse(urlStr)
if err != nil {
return nil, err
}
client := &http.Client{
Timeout: 5 * time.Second,
}
req := &http.Request{
Method: "GET",
URL: parsedURL,
Header: http.Header{
"Metadata-Flavor": {"Google"},
},
}
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("failed communicating with metadata server: %w", err)
}
body, err := io.ReadAll(resp.Body)
resp.Body.Close()
if err != nil {
return nil, fmt.Errorf("failed reading from metadata server: %w", err)
}
if code := resp.StatusCode; code < 200 || code > 299 {
return nil, fmt.Errorf("metadata server returned status code %d for url %q", code, parsedURL)
}
return body, nil
}