summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Rhymen/go-whatsapp/group.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2019-05-30 12:20:56 +0200
committerGitHub <noreply@github.com>2019-05-30 12:20:56 +0200
commit3418e8c9afbdf3e94ab26a20d8f12c042ae29fc4 (patch)
treec5358b971a95749bece9469e959041d4f2e54cc3 /vendor/github.com/Rhymen/go-whatsapp/group.go
parent9619dff33417548a50e51a4f75f41b9de4a73327 (diff)
downloadmatterbridge-msglm-3418e8c9afbdf3e94ab26a20d8f12c042ae29fc4.tar.gz
matterbridge-msglm-3418e8c9afbdf3e94ab26a20d8f12c042ae29fc4.tar.bz2
matterbridge-msglm-3418e8c9afbdf3e94ab26a20d8f12c042ae29fc4.zip
Use upstream whatsapp again (#809)
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
+}