summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Rhymen/go-whatsapp/write.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/Rhymen/go-whatsapp/write.go')
-rw-r--r--vendor/github.com/Rhymen/go-whatsapp/write.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/vendor/github.com/Rhymen/go-whatsapp/write.go b/vendor/github.com/Rhymen/go-whatsapp/write.go
index 4ea63dca..2b07ca6b 100644
--- a/vendor/github.com/Rhymen/go-whatsapp/write.go
+++ b/vendor/github.com/Rhymen/go-whatsapp/write.go
@@ -78,6 +78,36 @@ func (wac *Conn) sendKeepAlive() error {
return nil
}
+/*
+ When phone is unreachable, WhatsAppWeb sends ["admin","test"] time after time to try a successful contact.
+ Tested with Airplane mode and no connection at all.
+*/
+func (wac *Conn) sendAdminTest() (bool, error) {
+ data := []interface{}{"admin", "test"}
+
+ r, err := wac.writeJson(data)
+ if err != nil {
+ return false, errors.Wrap(err, "error sending admin test")
+ }
+
+ var response []interface{}
+
+ select {
+ case resp := <-r:
+ if err := json.Unmarshal([]byte(resp), &response); err != nil {
+ return false, fmt.Errorf("error decoding response message: %v\n", err)
+ }
+ case <-time.After(wac.msgTimeout):
+ return false, ErrConnectionTimeout
+ }
+
+ if len(response) == 2 && response[0].(string) == "Pong" && response[1].(bool) == true {
+ return true, nil
+ } else{
+ return false, nil
+ }
+}
+
func (wac *Conn) write(messageType int, answerMessageTag string, data []byte) (<-chan string, error) {
var ch chan string
if answerMessageTag != "" {