Skip to content

Commit

Permalink
fix(matrix): add missing txid to send message call
Browse files Browse the repository at this point in the history
  • Loading branch information
piksel committed Nov 21, 2023
1 parent 3428e5e commit 79d6d40
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion pkg/services/matrix/matrix_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ type identifierType string
const (
apiLogin = "/_matrix/client/r0/login"
apiRoomJoin = "/_matrix/client/r0/join/%s"
apiSendMessage = "/_matrix/client/r0/rooms/%s/send/m.room.message"
apiSendMessage = "/_matrix/client/r0/rooms/%s/send/m.room.message/%v"
apiJoinedRooms = "/_matrix/client/r0/joined_rooms"

contentType = "application/json"
Expand Down
8 changes: 7 additions & 1 deletion pkg/services/matrix/matrix_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"net/http"
"net/url"
"strings"
"sync/atomic"

"github.com/containrrr/shoutrrr/pkg/types"
"github.com/containrrr/shoutrrr/pkg/util"
Expand All @@ -17,6 +18,7 @@ type client struct {
apiURL url.URL
accessToken string
logger types.StdLogger
counter uint64
}

func newClient(host string, disableTLS bool, logger types.StdLogger) (c *client) {
Expand All @@ -41,6 +43,10 @@ func newClient(host string, disableTLS bool, logger types.StdLogger) (c *client)
return c
}

func (c *client) txId() uint64 {
return atomic.AddUint64(&c.counter, 1)
}

func (c *client) useToken(token string) {
c.accessToken = token
c.updateAccessToken()
Expand Down Expand Up @@ -148,7 +154,7 @@ func (c *client) joinRoom(room string) (roomID string, err error) {

func (c *client) sendMessageToRoom(message string, roomID string) error {
resEvent := apiResEvent{}
return c.apiPost(fmt.Sprintf(apiSendMessage, roomID), apiReqSend{
return c.apiPost(fmt.Sprintf(apiSendMessage, roomID, c.txId()), apiReqSend{
MsgType: msgTypeText,
Body: message,
}, &resEvent)
Expand Down
6 changes: 3 additions & 3 deletions pkg/services/matrix/matrix_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,13 +167,13 @@ func setupMockResponders() {
mockServer+apiJoinedRooms,
httpmock.NewStringResponder(200, `{ "joined_rooms": [ "!room:mockserver" ] }`))

httpmock.RegisterResponder("POST", mockServer+fmt.Sprintf(apiSendMessage, "%21room:mockserver"),
httpmock.RegisterResponder("POST", `=~`+mockServer+fmt.Sprintf(apiSendMessage, "%21room:mockserver", `[0-9]+`),
httpmock.NewJsonResponderOrPanic(200, apiResEvent{EventID: "7"}))

httpmock.RegisterResponder("POST", mockServer+fmt.Sprintf(apiSendMessage, "1"),
httpmock.RegisterResponder("POST", `=~`+mockServer+fmt.Sprintf(apiSendMessage, "1", `[0-9]+`),
httpmock.NewJsonResponderOrPanic(200, apiResEvent{EventID: "8"}))

httpmock.RegisterResponder("POST", mockServer+fmt.Sprintf(apiSendMessage, "2"),
httpmock.RegisterResponder("POST", `=~`+mockServer+fmt.Sprintf(apiSendMessage, "2", `[0-9]+`),
httpmock.NewJsonResponderOrPanic(200, apiResEvent{EventID: "9"}))

httpmock.RegisterResponder("POST", mockServer+fmt.Sprintf(apiRoomJoin, "%23room1"),
Expand Down

0 comments on commit 79d6d40

Please sign in to comment.