GetTransitions returns a list of available transitions for an issue
(issueKeyOrID string)
| 1300 | |
| 1301 | // GetTransitions returns a list of available transitions for an issue |
| 1302 | func (client *Client) GetTransitions(issueKeyOrID string) (*TransitionList, error) { |
| 1303 | |
| 1304 | url := fmt.Sprintf( |
| 1305 | "%s/rest/api/2/issue/%s/transitions", client.serverURL, issueKeyOrID) |
| 1306 | |
| 1307 | request, err := http.NewRequest("GET", url, nil) |
| 1308 | if err != nil { |
| 1309 | err := fmt.Errorf("Creating request %v", err) |
| 1310 | return nil, err |
| 1311 | } |
| 1312 | |
| 1313 | if client.ctx != nil { |
| 1314 | ctx, cancel := context.WithTimeout(client.ctx, defaultTimeout) |
| 1315 | defer cancel() |
| 1316 | request = request.WithContext(ctx) |
| 1317 | } |
| 1318 | |
| 1319 | response, err := client.Do(request) |
| 1320 | if err != nil { |
| 1321 | err := fmt.Errorf("Performing request %v", err) |
| 1322 | return nil, err |
| 1323 | } |
| 1324 | defer response.Body.Close() |
| 1325 | |
| 1326 | if response.StatusCode != http.StatusOK { |
| 1327 | err := fmt.Errorf( |
| 1328 | "HTTP response %d, query was %s", response.StatusCode, |
| 1329 | request.URL.String()) |
| 1330 | return nil, err |
| 1331 | } |
| 1332 | |
| 1333 | var message TransitionList |
| 1334 | |
| 1335 | data, _ := io.ReadAll(response.Body) |
| 1336 | err = json.Unmarshal(data, &message) |
| 1337 | if err != nil { |
| 1338 | err := fmt.Errorf("Decoding response %v", err) |
| 1339 | return nil, err |
| 1340 | } |
| 1341 | |
| 1342 | return &message, nil |
| 1343 | } |
| 1344 | |
| 1345 | func getTransitionTo(tlist *TransitionList, desiredStateNameOrID string) *Transition { |
| 1346 | for _, transition := range tlist.Transitions { |