Add the ability to refresh a group.

This commit is contained in:
Greyson Parrelli
2023-09-06 00:59:14 -04:00
parent 06744e9706
commit 6ec00f4589
4 changed files with 52 additions and 0 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
signal-cli-config
src/main
src/signal-cli-rest-api
.idea/

View File

@@ -1229,6 +1229,38 @@ func (a *Api) QuitGroup(c *gin.Context) {
c.Status(http.StatusNoContent)
}
// @Summary Refresh the state of a Signal Group.
// @Tags Groups
// @Description Refresh the state of a Signal Group.
// @Accept json
// @Produce json
// @Success 204 {string} OK
// @Failure 400 {object} Error
// @Param number path string true "Registered Phone Number"
// @Param groupid path string true "Group ID"
// @Router /v1/groups/{number}/{groupid}/refresh [post]
func (a *Api) RefreshGroup(c *gin.Context) {
number := c.Param("number")
if number == "" {
c.JSON(400, Error{Msg: "Couldn't process request - number missing"})
return
}
groupId := c.Param("groupid")
internalGroupId, err := client.ConvertGroupIdToInternalGroupId(groupId)
if err != nil {
c.JSON(400, Error{Msg: err.Error()})
return
}
err = a.signalClient.RefreshGroup(number, internalGroupId)
if err != nil {
c.JSON(400, Error{Msg: err.Error()})
return
}
c.Status(http.StatusNoContent)
}
// @Summary Send a reaction.
// @Tags Reactions
// @Description React to a message

View File

@@ -1220,6 +1220,24 @@ func (s *SignalClient) QuitGroup(number string, groupId string) error {
return err
}
func (s *SignalClient) RefreshGroup(number string, groupId string) error {
var err error
if s.signalCliMode == JsonRpc {
type Request struct {
GroupId string `json:"groupId"`
}
request := Request{GroupId: groupId}
jsonRpc2Client, err := s.getJsonRpc2Client(number)
if err != nil {
return err
}
_, err = jsonRpc2Client.getRaw("updateGroup", request)
} else {
_, err = s.cliClient.Execute(true, []string{"--config", s.signalCliConfig, "-a", number, "updateGroup", "-g", groupId}, "")
}
return err
}
func (s *SignalClient) SendReaction(number string, recipient string, emoji string, target_author string, timestamp int64, remove bool) error {
// see https://github.com/AsamK/signal-cli/blob/master/man/signal-cli.1.adoc#sendreaction
var err error

View File

@@ -186,6 +186,7 @@ func main() {
groups.POST(":number/:groupid/block", api.BlockGroup)
groups.POST(":number/:groupid/join", api.JoinGroup)
groups.POST(":number/:groupid/quit", api.QuitGroup)
groups.POST(":number/:groupid/refresh", api.RefreshGroup)
groups.POST(":number/:groupid/members", api.AddMembersToGroup)
groups.DELETE(":number/:groupid/members", api.RemoveMembersFromGroup)
groups.POST(":number/:groupid/admins", api.AddAdminsToGroup)