688ee1978e
All checks were successful
continuous-integration/drone/push Build is passing
Add Docs on how to deal with this breaking change doResponse should return responce in all cases, to prosses things manualy if wanted helper func return http response Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: #416 Reviewed-by: Andrew Thornton <art27@cantab.net> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
105 lines
3.7 KiB
Go
105 lines
3.7 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gitea
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// Reaction contain one reaction
|
|
type Reaction struct {
|
|
User *User `json:"user"`
|
|
Reaction string `json:"content"`
|
|
Created time.Time `json:"created_at"`
|
|
}
|
|
|
|
// GetIssueReactions get a list reactions of an issue
|
|
func (c *Client) GetIssueReactions(owner, repo string, index int64) ([]*Reaction, *Response, error) {
|
|
if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
reactions := make([]*Reaction, 0, 10)
|
|
resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/reactions", owner, repo, index), nil, nil, &reactions)
|
|
return reactions, resp, err
|
|
}
|
|
|
|
// GetIssueCommentReactions get a list of reactions from a comment of an issue
|
|
func (c *Client) GetIssueCommentReactions(owner, repo string, commentID int64) ([]*Reaction, *Response, error) {
|
|
if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
reactions := make([]*Reaction, 0, 10)
|
|
resp, err := c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/comments/%d/reactions", owner, repo, commentID), nil, nil, &reactions)
|
|
return reactions, resp, err
|
|
}
|
|
|
|
// editReactionOption contain the reaction type
|
|
type editReactionOption struct {
|
|
Reaction string `json:"content"`
|
|
}
|
|
|
|
// PostIssueReaction add a reaction to an issue
|
|
func (c *Client) PostIssueReaction(owner, repo string, index int64, reaction string) (*Reaction, *Response, error) {
|
|
if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
reactionResponse := new(Reaction)
|
|
body, err := json.Marshal(&editReactionOption{Reaction: reaction})
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
resp, err := c.getParsedResponse("POST",
|
|
fmt.Sprintf("/repos/%s/%s/issues/%d/reactions", owner, repo, index),
|
|
jsonHeader, bytes.NewReader(body), reactionResponse)
|
|
return reactionResponse, resp, err
|
|
}
|
|
|
|
// DeleteIssueReaction remove a reaction from an issue
|
|
func (c *Client) DeleteIssueReaction(owner, repo string, index int64, reaction string) (*Response, error) {
|
|
if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
|
|
return nil, err
|
|
}
|
|
body, err := json.Marshal(&editReactionOption{Reaction: reaction})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
_, resp, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/reactions", owner, repo, index), jsonHeader, bytes.NewReader(body))
|
|
return resp, err
|
|
}
|
|
|
|
// PostIssueCommentReaction add a reaction to a comment of an issue
|
|
func (c *Client) PostIssueCommentReaction(owner, repo string, commentID int64, reaction string) (*Reaction, *Response, error) {
|
|
if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
reactionResponse := new(Reaction)
|
|
body, err := json.Marshal(&editReactionOption{Reaction: reaction})
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
resp, err := c.getParsedResponse("POST",
|
|
fmt.Sprintf("/repos/%s/%s/issues/comments/%d/reactions", owner, repo, commentID),
|
|
jsonHeader, bytes.NewReader(body), reactionResponse)
|
|
return reactionResponse, resp, err
|
|
}
|
|
|
|
// DeleteIssueCommentReaction remove a reaction from a comment of an issue
|
|
func (c *Client) DeleteIssueCommentReaction(owner, repo string, commentID int64, reaction string) (*Response, error) {
|
|
if err := c.CheckServerVersionConstraint(">=1.11.0"); err != nil {
|
|
return nil, err
|
|
}
|
|
body, err := json.Marshal(&editReactionOption{Reaction: reaction})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
_, resp, err := c.getResponse("DELETE",
|
|
fmt.Sprintf("/repos/%s/%s/issues/comments/%d/reactions", owner, repo, commentID),
|
|
jsonHeader, bytes.NewReader(body))
|
|
return resp, err
|
|
}
|