1
0
mirror of synced 2025-03-27 10:23:50 +03:00

fix reactions api

This commit is contained in:
Суханов Данила 2025-03-20 10:29:54 +03:00
parent 22e26be57f
commit ff93bc00ec
3 changed files with 63 additions and 29 deletions

View File

@ -592,7 +592,7 @@ func (c *MgClient) MessagesHistory(request SendHistoryMessageRequest) (MessagesR
//
// client := New("https://message-gateway.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")
//
// _, status, err := client.AddMessageReaction(ReactionRequest{
// status, err := client.AddMessageReaction(ReactionRequest{
// Channel: 305,
// Message: ReactionMessageReference{
// ExternalID: "uid_1",
@ -604,27 +604,20 @@ func (c *MgClient) MessagesHistory(request SendHistoryMessageRequest) (MessagesR
// }
//
// log.Printf("status: %d", status)
func (c *MgClient) AddMessageReaction(request ReactionRequest) (MessageReactionResponse, int, error) {
var (
resp MessageReactionResponse
outgoing = &bytes.Buffer{}
)
func (c *MgClient) AddMessageReaction(request ReactionRequest) (int, error) {
var outgoing = &bytes.Buffer{}
_ = json.NewEncoder(outgoing).Encode(request)
data, status, err := c.PostRequest("/messages/reaction", outgoing)
if err != nil {
return resp, status, err
}
if e := json.Unmarshal(data, &resp); e != nil {
return resp, status, e
return status, err
}
if status != http.StatusOK {
return resp, status, NewAPIClientError(data)
return status, NewAPIClientError(data)
}
return resp, status, err
return status, err
}
// DeleteMessagesReaction removes reactions to the message.
@ -635,7 +628,7 @@ func (c *MgClient) AddMessageReaction(request ReactionRequest) (MessageReactionR
//
// client := New("https://message-gateway.url", "cb8ccf05e38a47543ad8477d4999be73bff503ea6")
//
// _, status, err := client.DeleteMessagesReaction(ReactionRequest{
// status, err := client.DeleteMessagesReaction(ReactionRequest{
// ChannelID: 305,
// Message: ReactionMessageReference{
// ExternalID: "uid_1",
@ -647,24 +640,19 @@ func (c *MgClient) AddMessageReaction(request ReactionRequest) (MessageReactionR
// }
//
// log.Printf("status: %d", status)
func (c *MgClient) DeleteMessagesReaction(request ReactionRequest) (MessageReactionResponse, int, error) {
var resp MessageReactionResponse
func (c *MgClient) DeleteMessagesReaction(request ReactionRequest) (int, error) {
outgoing, _ := json.Marshal(&request)
data, status, err := c.DeleteRequest("/messages/reaction", outgoing)
if err != nil {
return resp, status, err
}
if e := json.Unmarshal(data, &resp); e != nil {
return resp, status, e
return status, err
}
if status != http.StatusOK {
return resp, status, NewAPIClientError(data)
return status, NewAPIClientError(data)
}
return resp, status, err
return status, err
}
// UpdateMessages edits existing message. Only text messages are supported.

View File

@ -901,14 +901,38 @@ func (t *MGClientTest) Test_AddMessageReaction() {
t.gock().
Post(t.transportURL("messages/reaction")).
Reply(http.StatusOK).
JSON(MessageReactionResponse{})
JSON(``)
_, status, err := c.AddMessageReaction(snd)
status, err := c.AddMessageReaction(snd)
t.Require().NoError(err)
t.Assert().Equal(http.StatusOK, status)
t.Assert().Empty(gock.GetUnmatchedRequests())
}
func (t *MGClientTest) Test_AddMessageReaction_error() {
c := t.client()
snd := ReactionRequest{
Channel: 1,
Message: ReactionMessageReference{
ExternalID: "external_1",
},
Reaction: "😁",
}
defer gock.Off()
t.gock().
Post(t.transportURL("messages/reaction")).
Reply(http.StatusBadRequest).
JSON(`{"errors": ["problems"]}`)
status, err := c.AddMessageReaction(snd)
t.Assert().Equal(http.StatusBadRequest, status)
t.Assert().Error(err)
t.Assert().Equal("problems", err.Error())
t.Assert().Empty(gock.GetUnmatchedRequests())
}
func (t *MGClientTest) Test_DeleteMessagesReaction() {
c := t.client()
@ -924,14 +948,38 @@ func (t *MGClientTest) Test_DeleteMessagesReaction() {
t.gock().
Delete(t.transportURL("messages/reaction")).
Reply(http.StatusOK).
JSON(MessageReactionResponse{})
JSON(``)
_, status, err := c.DeleteMessagesReaction(snd)
status, err := c.DeleteMessagesReaction(snd)
t.Require().NoError(err)
t.Assert().Equal(http.StatusOK, status)
t.Assert().Empty(gock.GetUnmatchedRequests())
}
func (t *MGClientTest) Test_DeleteMessagesReaction_error() {
c := t.client()
snd := ReactionRequest{
Channel: 1,
Message: ReactionMessageReference{
ExternalID: "external_1",
},
Reaction: "😁",
}
defer gock.Off()
t.gock().
Delete(t.transportURL("messages/reaction")).
Reply(http.StatusBadRequest).
JSON(`{"errors": ["problems"]}`)
status, err := c.DeleteMessagesReaction(snd)
t.Assert().Equal(http.StatusBadRequest, status)
t.Assert().Error(err)
t.Assert().Equal("problems", err.Error())
t.Assert().Empty(gock.GetUnmatchedRequests())
}
func (t *MGClientTest) Test_MarkMessageReadAndDelete() {
c := t.client()

View File

@ -403,8 +403,6 @@ type SendMessageRequestQuote struct {
// MarkMessageReadResponse type.
type MarkMessageReadResponse struct{}
type MessageReactionResponse struct{}
// MarkMessageReadRequest type.
type MarkMessageReadRequest struct {
Message MarkMessageReadRequestMessage `json:"message"`