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 }