Merge pull request #405 from greysonp/add-group-refresh

Add the ability to refresh a group.
This commit is contained in:
Bernhard B
2023-09-19 22:42:15 +02:00
committed by GitHub
4 changed files with 52 additions and 0 deletions

1
.gitignore vendored
View File

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

View File

@@ -1241,6 +1241,38 @@ func (a *Api) QuitGroup(c *gin.Context) {
c.Status(http.StatusNoContent) c.Status(http.StatusNoContent)
} }
// @Summary Update the state of a Signal Group.
// @Tags Groups
// @Description Update 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} [put]
func (a *Api) UpdateGroup(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.UpdateGroup(number, internalGroupId)
if err != nil {
c.JSON(400, Error{Msg: err.Error()})
return
}
c.Status(http.StatusNoContent)
}
// @Summary Send a reaction. // @Summary Send a reaction.
// @Tags Reactions // @Tags Reactions
// @Description React to a message // @Description React to a message

View File

@@ -1220,6 +1220,24 @@ func (s *SignalClient) QuitGroup(number string, groupId string) error {
return err return err
} }
func (s *SignalClient) UpdateGroup(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 { 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 // see https://github.com/AsamK/signal-cli/blob/master/man/signal-cli.1.adoc#sendreaction
var err error var err error

View File

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