andygrunwald / go-jira

Go client library for Atlassian Jira
https://pkg.go.dev/github.com/andygrunwald/go-jira?tab=doc
MIT License
1.47k stars 469 forks source link

Adding comments to issues won't work #671

Open dcu opened 5 months ago

dcu commented 5 months ago

The reason is that the when serializing the body as json some extra is sent because the omitempty doesn't work as expected.

see this example: https://go.dev/play/p/7DCOpLbUdq4

this will cause the request to send visibility: {} which is rejected by the Jira API, the same happens with Author and UpdateAuthor properties.

A quick fix is making those fields a pointer like this:

// Comment represents a comment by a person to an issue in Jira.
type Comment struct {
    ID           string             `json:"id,omitempty" structs:"id,omitempty"`
    Self         string             `json:"self,omitempty" structs:"self,omitempty"`
    Name         string             `json:"name,omitempty" structs:"name,omitempty"`
    Author       *User              `json:"author,omitempty" structs:"author,omitempty"`
    Body         string             `json:"body,omitempty" structs:"body,omitempty"`
    UpdateAuthor *User              `json:"updateAuthor,omitempty" structs:"updateAuthor,omitempty"`
    Updated      string             `json:"updated,omitempty" structs:"updated,omitempty"`
    Created      string             `json:"created,omitempty" structs:"created,omitempty"`
    Visibility   *CommentVisibility `json:"visibility,omitempty" structs:"visibility,omitempty"`

    // A list of comment properties. Optional on create and update.
    Properties []EntityProperty `json:"properties,omitempty" structs:"properties,omitempty"`
}

this is tested and works as expected