UpdateIssueTitle changes the "summary" field of a JIRA issue
(issueKeyOrID, title string)
| 1017 | |
| 1018 | // UpdateIssueTitle changes the "summary" field of a JIRA issue |
| 1019 | func (client *Client) UpdateIssueTitle(issueKeyOrID, title string) (time.Time, error) { |
| 1020 | |
| 1021 | url := fmt.Sprintf( |
| 1022 | "%s/rest/api/2/issue/%s", client.serverURL, issueKeyOrID) |
| 1023 | var responseTime time.Time |
| 1024 | |
| 1025 | // NOTE(josh): Since updates are a list of heterogeneous objects let's just |
| 1026 | // manually build the JSON text |
| 1027 | data, err := json.Marshal(title) |
| 1028 | if err != nil { |
| 1029 | return responseTime, err |
| 1030 | } |
| 1031 | |
| 1032 | var buffer bytes.Buffer |
| 1033 | _, _ = fmt.Fprintf(&buffer, `{"update":{"summary":[`) |
| 1034 | _, _ = fmt.Fprintf(&buffer, `{"set":%s}`, data) |
| 1035 | _, _ = fmt.Fprintf(&buffer, `]}}`) |
| 1036 | |
| 1037 | data = buffer.Bytes() |
| 1038 | request, err := http.NewRequest("PUT", url, bytes.NewBuffer(data)) |
| 1039 | if err != nil { |
| 1040 | return responseTime, err |
| 1041 | } |
| 1042 | |
| 1043 | response, err := client.Do(request) |
| 1044 | if err != nil { |
| 1045 | err := fmt.Errorf("Performing request %v", err) |
| 1046 | return responseTime, err |
| 1047 | } |
| 1048 | defer response.Body.Close() |
| 1049 | |
| 1050 | if response.StatusCode != http.StatusNoContent { |
| 1051 | content, _ := io.ReadAll(response.Body) |
| 1052 | err := fmt.Errorf( |
| 1053 | "HTTP response %d, query was %s\n data: %s\n response: %s", |
| 1054 | response.StatusCode, request.URL.String(), data, content) |
| 1055 | return responseTime, err |
| 1056 | } |
| 1057 | |
| 1058 | dateHeader, ok := response.Header["Date"] |
| 1059 | if !ok || len(dateHeader) != 1 { |
| 1060 | // No "Date" header, or empty, or multiple of them. Regardless, we don't |
| 1061 | // have a date we can return |
| 1062 | return responseTime, nil |
| 1063 | } |
| 1064 | |
| 1065 | responseTime, err = http.ParseTime(dateHeader[0]) |
| 1066 | if err != nil { |
| 1067 | return time.Time{}, err |
| 1068 | } |
| 1069 | |
| 1070 | return responseTime, nil |
| 1071 | } |
| 1072 | |
| 1073 | // UpdateIssueBody changes the "description" field of a JIRA issue |
| 1074 | func (client *Client) UpdateIssueBody(issueKeyOrID, body string) (time.Time, error) { |