added new REST API endpoints

* added endpoint to add members to an existing group
* added endpoint to remove members from an existing group

see #210
This commit is contained in:
Bernhard B
2022-03-20 20:39:40 +01:00
parent 4a9aa9b0f3
commit 3fcd6221d2
6 changed files with 426 additions and 0 deletions

View File

@@ -686,6 +686,64 @@ func (s *SignalClient) CreateGroup(number string, name string, members []string,
return groupId, nil
}
func (s *SignalClient) updateGroupMembers(number string, groupId string, members []string, add bool) error {
var err error
if len(members) == 0 {
return nil
}
group, err := s.GetGroup(number, groupId)
if err != nil {
return err
}
if group == nil {
return &NotFoundError{Description: "No group with that group id found"}
}
if s.signalCliMode == JsonRpc {
type Request struct {
Name string `json:"name,omitempty"`
Members []string `json:"member,omitempty"`
RemoveMembers []string `json:"remove-member,omitempty"`
GroupId string `json:"groupId"`
}
request := Request{GroupId: groupId}
if add {
request.Members = append(request.Members, members...)
} else {
request.RemoveMembers = append(request.RemoveMembers, members...)
}
jsonRpc2Client, err := s.getJsonRpc2Client(number)
if err != nil {
return err
}
_, err = jsonRpc2Client.getRaw("updateGroup", request)
} else {
cmd := []string{"--config", s.signalCliConfig, "-a", number, "updateGroup"}
if add {
cmd = append(cmd, "-m")
} else {
cmd = append(cmd, "-r")
}
cmd = append(cmd, members...)
_, err = runSignalCli(true, cmd, "", s.signalCliMode)
}
return err
}
func (s *SignalClient) AddMembersToGroup(number string, groupId string, members []string) error {
return s.updateGroupMembers(number, groupId, members, true)
}
func (s *SignalClient) RemoveMembersFromGroup(number string, groupId string, members []string) error {
return s.updateGroupMembers(number, groupId, members, false)
}
func (s *SignalClient) GetGroups(number string) ([]GroupEntry, error) {
groupEntries := []GroupEntry{}