summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Rhymen/go-whatsapp/group.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2022-03-20 02:20:54 +0100
committerWim <wim@42.be>2022-03-20 14:57:48 +0100
commit496d5b4ec7f5f4afae6199f928675d14d18de015 (patch)
tree3a649c80a76f0ffc33e6b3a63c0e65e892169cde /vendor/github.com/Rhymen/go-whatsapp/group.go
parent2623a412c42a81104b97ae8c81a5f66760fee4b6 (diff)
downloadmatterbridge-msglm-496d5b4ec7f5f4afae6199f928675d14d18de015.tar.gz
matterbridge-msglm-496d5b4ec7f5f4afae6199f928675d14d18de015.tar.bz2
matterbridge-msglm-496d5b4ec7f5f4afae6199f928675d14d18de015.zip
Add whatsappmulti buildflag for whatsapp with multidevice support (whatsapp)
Diffstat (limited to 'vendor/github.com/Rhymen/go-whatsapp/group.go')
-rw-r--r--vendor/github.com/Rhymen/go-whatsapp/group.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/vendor/github.com/Rhymen/go-whatsapp/group.go b/vendor/github.com/Rhymen/go-whatsapp/group.go
new file mode 100644
index 00000000..40e4515e
--- /dev/null
+++ b/vendor/github.com/Rhymen/go-whatsapp/group.go
@@ -0,0 +1,90 @@
+package whatsapp
+
+import (
+ "encoding/json"
+ "fmt"
+ "time"
+)
+
+func (wac *Conn) GetGroupMetaData(jid string) (<-chan string, error) {
+ data := []interface{}{"query", "GroupMetadata", jid}
+ return wac.writeJson(data)
+}
+
+func (wac *Conn) CreateGroup(subject string, participants []string) (<-chan string, error) {
+ return wac.setGroup("create", "", subject, participants)
+}
+
+func (wac *Conn) UpdateGroupSubject(subject string, jid string) (<-chan string, error) {
+ return wac.setGroup("subject", jid, subject, nil)
+}
+
+func (wac *Conn) SetAdmin(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("promote", jid, "", participants)
+}
+
+func (wac *Conn) RemoveAdmin(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("demote", jid, "", participants)
+}
+
+func (wac *Conn) AddMember(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("add", jid, "", participants)
+}
+
+func (wac *Conn) RemoveMember(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("remove", jid, "", participants)
+}
+
+func (wac *Conn) LeaveGroup(jid string) (<-chan string, error) {
+ return wac.setGroup("leave", jid, "", nil)
+}
+
+func (wac *Conn) GroupInviteLink(jid string) (string, error) {
+ request := []interface{}{"query", "inviteCode", jid}
+ ch, err := wac.writeJson(request)
+ if err != nil {
+ return "", err
+ }
+
+ var response map[string]interface{}
+
+ select {
+ case r := <-ch:
+ if err := json.Unmarshal([]byte(r), &response); err != nil {
+ return "", fmt.Errorf("error decoding response message: %v\n", err)
+ }
+ case <-time.After(wac.msgTimeout):
+ return "", fmt.Errorf("request timed out")
+ }
+
+ if int(response["status"].(float64)) != 200 {
+ return "", fmt.Errorf("request responded with %d", response["status"])
+ }
+
+ return response["code"].(string), nil
+}
+
+func (wac *Conn) GroupAcceptInviteCode(code string) (jid string, err error) {
+ request := []interface{}{"action", "invite", code}
+ ch, err := wac.writeJson(request)
+ if err != nil {
+ return "", err
+ }
+
+ var response map[string]interface{}
+
+ select {
+ case r := <-ch:
+ if err := json.Unmarshal([]byte(r), &response); err != nil {
+ return "", fmt.Errorf("error decoding response message: %v\n", err)
+ }
+ case <-time.After(wac.msgTimeout):
+ return "", fmt.Errorf("request timed out")
+ }
+
+ if int(response["status"].(float64)) != 200 {
+ return "", fmt.Errorf("request responded with %d", response["status"])
+ }
+
+ return response["gid"].(string), nil
+}