github.com/discordapp/buildkite-agent@v2.6.6+incompatible/api/meta_data.go (about)

     1  package api
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  // MetaDataService handles communication with the meta data related methods of
     8  // the Buildkite Agent API.
     9  type MetaDataService struct {
    10  	client *Client
    11  }
    12  
    13  // MetaData represents a Buildkite Agent API MetaData
    14  type MetaData struct {
    15  	Key   string `json:"key,omitempty"`
    16  	Value string `json:"value,omitempty"`
    17  }
    18  
    19  // MetaDataExists represents a Buildkite Agent API MetaData Exists check
    20  // response
    21  type MetaDataExists struct {
    22  	Exists bool `json:"exists"`
    23  }
    24  
    25  // Sets the meta data value
    26  func (ps *MetaDataService) Set(jobId string, metaData *MetaData) (*Response, error) {
    27  	u := fmt.Sprintf("jobs/%s/data/set", jobId)
    28  
    29  	req, err := ps.client.NewRequest("POST", u, metaData)
    30  	if err != nil {
    31  		return nil, err
    32  	}
    33  
    34  	return ps.client.Do(req, nil)
    35  }
    36  
    37  // Gets the meta data value
    38  func (ps *MetaDataService) Get(jobId string, key string) (*MetaData, *Response, error) {
    39  	u := fmt.Sprintf("jobs/%s/data/get", jobId)
    40  	m := &MetaData{Key: key}
    41  
    42  	req, err := ps.client.NewRequest("POST", u, m)
    43  	if err != nil {
    44  		return nil, nil, err
    45  	}
    46  
    47  	resp, err := ps.client.Do(req, m)
    48  	if err != nil {
    49  		return nil, resp, err
    50  	}
    51  
    52  	return m, resp, err
    53  }
    54  
    55  // Returns true if the meta data key has been set, false if it hasn't.
    56  func (ps *MetaDataService) Exists(jobId string, key string) (*MetaDataExists, *Response, error) {
    57  	u := fmt.Sprintf("jobs/%s/data/exists", jobId)
    58  	m := &MetaData{Key: key}
    59  
    60  	req, err := ps.client.NewRequest("POST", u, m)
    61  	if err != nil {
    62  		return nil, nil, err
    63  	}
    64  
    65  	e := new(MetaDataExists)
    66  	resp, err := ps.client.Do(req, e)
    67  	if err != nil {
    68  		return nil, resp, err
    69  	}
    70  
    71  	return e, resp, err
    72  }