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

Method UpdateIssueBody

bridge/jira/client.go:1074–1131  ·  view source on GitHub ↗

UpdateIssueBody changes the "description" field of a JIRA issue

(issueKeyOrID, body string)

Source from the content-addressed store, hash-verified

1072
1073// UpdateIssueBody changes the "description" field of a JIRA issue
1074func (client *Client) UpdateIssueBody(issueKeyOrID, body string) (time.Time, error) {
1075
1076 url := fmt.Sprintf(
1077 "%s/rest/api/2/issue/%s", client.serverURL, issueKeyOrID)
1078 var responseTime time.Time
1079 // NOTE(josh): Since updates are a list of heterogeneous objects let's just
1080 // manually build the JSON text
1081 data, err := json.Marshal(body)
1082 if err != nil {
1083 return responseTime, err
1084 }
1085
1086 var buffer bytes.Buffer
1087 _, _ = fmt.Fprintf(&buffer, `{"update":{"description":[`)
1088 _, _ = fmt.Fprintf(&buffer, `{"set":%s}`, data)
1089 _, _ = fmt.Fprintf(&buffer, `]}}`)
1090
1091 data = buffer.Bytes()
1092 request, err := http.NewRequest("PUT", url, bytes.NewBuffer(data))
1093 if err != nil {
1094 return responseTime, err
1095 }
1096
1097 if client.ctx != nil {
1098 ctx, cancel := context.WithTimeout(client.ctx, defaultTimeout)
1099 defer cancel()
1100 request = request.WithContext(ctx)
1101 }
1102
1103 response, err := client.Do(request)
1104 if err != nil {
1105 err := fmt.Errorf("Performing request %v", err)
1106 return responseTime, err
1107 }
1108 defer response.Body.Close()
1109
1110 if response.StatusCode != http.StatusNoContent {
1111 content, _ := io.ReadAll(response.Body)
1112 err := fmt.Errorf(
1113 "HTTP response %d, query was %s\n data: %s\n response: %s",
1114 response.StatusCode, request.URL.String(), data, content)
1115 return responseTime, err
1116 }
1117
1118 dateHeader, ok := response.Header["Date"]
1119 if !ok || len(dateHeader) != 1 {
1120 // No "Date" header, or empty, or multiple of them. Regardless, we don't
1121 // have a date we can return
1122 return responseTime, nil
1123 }
1124
1125 responseTime, err = http.ParseTime(dateHeader[0])
1126 if err != nil {
1127 return time.Time{}, err
1128 }
1129
1130 return responseTime, nil
1131}

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