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

View file

@ -901,14 +901,38 @@ func (t *MGClientTest) Test_AddMessageReaction() {
t.gock(). t.gock().
Post(t.transportURL("messages/reaction")). Post(t.transportURL("messages/reaction")).
Reply(http.StatusOK). Reply(http.StatusOK).
JSON(MessageReactionResponse{}) JSON(``)
_, status, err := c.AddMessageReaction(snd) status, err := c.AddMessageReaction(snd)
t.Require().NoError(err) t.Require().NoError(err)
t.Assert().Equal(http.StatusOK, status) t.Assert().Equal(http.StatusOK, status)
t.Assert().Empty(gock.GetUnmatchedRequests()) 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() { func (t *MGClientTest) Test_DeleteMessagesReaction() {
c := t.client() c := t.client()
@ -924,14 +948,38 @@ func (t *MGClientTest) Test_DeleteMessagesReaction() {
t.gock(). t.gock().
Delete(t.transportURL("messages/reaction")). Delete(t.transportURL("messages/reaction")).
Reply(http.StatusOK). Reply(http.StatusOK).
JSON(MessageReactionResponse{}) JSON(``)
_, status, err := c.DeleteMessagesReaction(snd) status, err := c.DeleteMessagesReaction(snd)
t.Require().NoError(err) t.Require().NoError(err)
t.Assert().Equal(http.StatusOK, status) t.Assert().Equal(http.StatusOK, status)
t.Assert().Empty(gock.GetUnmatchedRequests()) 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() { func (t *MGClientTest) Test_MarkMessageReadAndDelete() {
c := t.client() c := t.client()

View file

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