github.com/NaverCloudPlatform/ncloud-sdk-go-v2@v1.6.13/ncloud/metadata/client.go (about)

     1  package metadata
     2  
     3  import (
     4  	"io/ioutil"
     5  	"net/http"
     6  	"os"
     7  	"time"
     8  )
     9  
    10  var endpoint = "http://169.254.169.254"
    11  var basePath = "/latest/meta-data/"
    12  
    13  type ApiClient struct {
    14  	client *http.Client
    15  }
    16  
    17  func NewApiClient() *ApiClient {
    18  	if os.Getenv("NCLOUD_METADATA_API_ENDPOINT") != "" {
    19  		endpoint = os.Getenv("NCLOUD_METADATA_API_ENDPOINT")
    20  	}
    21  	c := &http.Client{
    22  		Timeout: 3 * time.Second,
    23  	}
    24  	return &ApiClient{client: c}
    25  }
    26  
    27  func (c ApiClient) GetMetadata(url string) (string, error) {
    28  	resp, err := c.client.Get(endpoint + basePath + url)
    29  	if err != nil {
    30  		return "", err
    31  	}
    32  	defer resp.Body.Close()
    33  
    34  	var respBody []byte
    35  	respBody, err = ioutil.ReadAll(resp.Body)
    36  	if err != nil {
    37  		return "", err
    38  	}
    39  	return string(respBody), nil
    40  }