MCPcopy Create free account
hub / github.com/git-bug/git-bug / UpdateLabels

Method UpdateLabels

bridge/jira/client.go:1233–1299  ·  view source on GitHub ↗

UpdateLabels changes labels for an issue

(issueKeyOrID string, added, removed []common.Label)

Source from the content-addressed store, hash-verified

1231
1232// UpdateLabels changes labels for an issue
1233func (client *Client) UpdateLabels(issueKeyOrID string, added, removed []common.Label) (time.Time, error) {
1234 url := fmt.Sprintf(
1235 "%s/rest/api/2/issue/%s/", client.serverURL, issueKeyOrID)
1236 var responseTime time.Time
1237
1238 // NOTE(josh): Since updates are a list of heterogeneous objects let's just
1239 // manually build the JSON text
1240 var buffer bytes.Buffer
1241 _, _ = fmt.Fprintf(&buffer, `{"update":{"labels":[`)
1242 first := true
1243 for _, label := range added {
1244 if !first {
1245 _, _ = fmt.Fprintf(&buffer, ",")
1246 }
1247 _, _ = fmt.Fprintf(&buffer, `{"add":"%s"}`, label)
1248 first = false
1249 }
1250 for _, label := range removed {
1251 if !first {
1252 _, _ = fmt.Fprintf(&buffer, ",")
1253 }
1254 _, _ = fmt.Fprintf(&buffer, `{"remove":"%s"}`, label)
1255 first = false
1256 }
1257 _, _ = fmt.Fprintf(&buffer, "]}}")
1258
1259 data := buffer.Bytes()
1260 request, err := http.NewRequest("PUT", url, bytes.NewBuffer(data))
1261 if err != nil {
1262 return responseTime, err
1263 }
1264
1265 if client.ctx != nil {
1266 ctx, cancel := context.WithTimeout(client.ctx, defaultTimeout)
1267 defer cancel()
1268 request = request.WithContext(ctx)
1269 }
1270
1271 response, err := client.Do(request)
1272 if err != nil {
1273 err := fmt.Errorf("Performing request %v", err)
1274 return responseTime, err
1275 }
1276 defer response.Body.Close()
1277
1278 if response.StatusCode != http.StatusNoContent {
1279 content, _ := io.ReadAll(response.Body)
1280 err := fmt.Errorf(
1281 "HTTP response %d, query was %s\n data: %s\n response: %s",
1282 response.StatusCode, request.URL.String(), data, content)
1283 return responseTime, err
1284 }
1285
1286 dateHeader, ok := response.Header["Date"]
1287 if !ok || len(dateHeader) != 1 {
1288 // No "Date" header, or empty, or multiple of them. Regardless, we don't
1289 // have a date we can return
1290 return responseTime, nil

Callers 1

exportBugMethod · 0.80

Implementers 1

Clientbridge/github/mocks/Client.go

Calls 5

ErrorfMethod · 0.80
BytesMethod · 0.65
CloseMethod · 0.65
ReadAllMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected