summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matterbridge/go-whatsapp/group.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/matterbridge/go-whatsapp/group.go')
-rw-r--r--vendor/github.com/matterbridge/go-whatsapp/group.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/matterbridge/go-whatsapp/group.go b/vendor/github.com/matterbridge/go-whatsapp/group.go
new file mode 100644
index 00000000..432ba457
--- /dev/null
+++ b/vendor/github.com/matterbridge/go-whatsapp/group.go
@@ -0,0 +1,65 @@
+package whatsapp
+
+import (
+ "encoding/json"
+ "fmt"
+ "time"
+)
+
+func (wac *Conn) GetGroupMetaData(jid string) (<-chan string, error) {
+ data := []interface{}{"query", "GroupMetadata", jid}
+ return wac.write(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.write(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
+}