summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext
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/matterbridge/mautrix-whatsapp/whatsapp-ext
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/matterbridge/mautrix-whatsapp/whatsapp-ext')
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/chat.go147
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/cmd.go59
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/conn.go60
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/jsonmessage.go102
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/msginfo.go90
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/presence.go67
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/props.go68
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/stream.go63
-rw-r--r--vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/whatsapp.go132
9 files changed, 0 insertions, 788 deletions
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/chat.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/chat.go
deleted file mode 100644
index b1a08823..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/chat.go
+++ /dev/null
@@ -1,147 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
- "strings"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type ChatUpdateCommand string
-
-const (
- ChatUpdateCommandAction ChatUpdateCommand = "action"
-)
-
-type ChatUpdate struct {
- JID string `json:"id"`
- Command ChatUpdateCommand `json:"cmd"`
- Data ChatUpdateData `json:"data"`
-}
-
-type ChatActionType string
-
-const (
- ChatActionNameChange ChatActionType = "subject"
- ChatActionAddTopic ChatActionType = "desc_add"
- ChatActionRemoveTopic ChatActionType = "desc_remove"
- ChatActionRestrict ChatActionType = "restrict"
- ChatActionAnnounce ChatActionType = "announce"
- ChatActionPromote ChatActionType = "promote"
- ChatActionDemote ChatActionType = "demote"
-)
-
-type ChatUpdateData struct {
- Action ChatActionType
- SenderJID string
-
- NameChange struct {
- Name string `json:"subject"`
- SetAt int64 `json:"s_t"`
- SetBy string `json:"s_o"`
- }
-
- AddTopic struct {
- Topic string `json:"desc"`
- ID string `json:"descId"`
- SetAt int64 `json:"descTime"`
- }
-
- RemoveTopic struct {
- ID string `json:"descId"`
- }
-
- Restrict bool
-
- Announce bool
-
- PermissionChange struct {
- JIDs []string `json:"participants"`
- }
-}
-
-func (cud *ChatUpdateData) UnmarshalJSON(data []byte) error {
- var arr []json.RawMessage
- err := json.Unmarshal(data, &arr)
- if err != nil {
- return err
- } else if len(arr) < 3 {
- return nil
- }
-
- err = json.Unmarshal(arr[0], &cud.Action)
- if err != nil {
- return err
- }
-
- err = json.Unmarshal(arr[1], &cud.SenderJID)
- if err != nil {
- return err
- }
- cud.SenderJID = strings.Replace(cud.SenderJID, OldUserSuffix, NewUserSuffix, 1)
-
- var unmarshalTo interface{}
- switch cud.Action {
- case ChatActionNameChange:
- unmarshalTo = &cud.NameChange
- case ChatActionAddTopic:
- unmarshalTo = &cud.AddTopic
- case ChatActionRemoveTopic:
- unmarshalTo = &cud.RemoveTopic
- case ChatActionRestrict:
- unmarshalTo = &cud.Restrict
- case ChatActionAnnounce:
- unmarshalTo = &cud.Announce
- case ChatActionPromote, ChatActionDemote:
- unmarshalTo = &cud.PermissionChange
- default:
- return nil
- }
- err = json.Unmarshal(arr[2], unmarshalTo)
- if err != nil {
- return err
- }
- cud.NameChange.SetBy = strings.Replace(cud.NameChange.SetBy, OldUserSuffix, NewUserSuffix, 1)
- for index, jid := range cud.PermissionChange.JIDs {
- cud.PermissionChange.JIDs[index] = strings.Replace(jid, OldUserSuffix, NewUserSuffix, 1)
- }
- return nil
-}
-
-type ChatUpdateHandler interface {
- whatsapp.Handler
- HandleChatUpdate(ChatUpdate)
-}
-
-func (ext *ExtendedConn) handleMessageChatUpdate(message []byte) {
- var event ChatUpdate
- err := json.Unmarshal(message, &event)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
- event.JID = strings.Replace(event.JID, OldUserSuffix, NewUserSuffix, 1)
- for _, handler := range ext.handlers {
- chatUpdateHandler, ok := handler.(ChatUpdateHandler)
- if !ok {
- continue
- }
- go chatUpdateHandler.HandleChatUpdate(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/cmd.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/cmd.go
deleted file mode 100644
index 69dbe60c..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/cmd.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
- "strings"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type CommandType string
-
-const (
- CommandPicture CommandType = "picture"
-)
-
-type Command struct {
- Type CommandType `json:"type"`
- JID string `json:"jid"`
-
- *ProfilePicInfo
-}
-
-type CommandHandler interface {
- whatsapp.Handler
- HandleCommand(Command)
-}
-
-func (ext *ExtendedConn) handleMessageCommand(message []byte) {
- var event Command
- err := json.Unmarshal(message, &event)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
- event.JID = strings.Replace(event.JID, OldUserSuffix, NewUserSuffix, 1)
- for _, handler := range ext.handlers {
- commandHandler, ok := handler.(CommandHandler)
- if !ok {
- continue
- }
- go commandHandler.HandleCommand(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/conn.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/conn.go
deleted file mode 100644
index 5084cb5a..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/conn.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type ConnInfo struct {
- ProtocolVersion []int `json:"protoVersion"`
- BinaryVersion int `json:"binVersion"`
- Phone struct {
- WhatsAppVersion string `json:"wa_version"`
- MCC string `json:"mcc"`
- MNC string `json:"mnc"`
- OSVersion string `json:"os_version"`
- DeviceManufacturer string `json:"device_manufacturer"`
- DeviceModel string `json:"device_model"`
- OSBuildNumber string `json:"os_build_number"`
- } `json:"phone"`
- Features map[string]interface{} `json:"features"`
- PushName string `json:"pushname"`
-}
-
-type ConnInfoHandler interface {
- whatsapp.Handler
- HandleConnInfo(ConnInfo)
-}
-
-func (ext *ExtendedConn) handleMessageConn(message []byte) {
- var event ConnInfo
- err := json.Unmarshal(message, &event)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
- for _, handler := range ext.handlers {
- connInfoHandler, ok := handler.(ConnInfoHandler)
- if !ok {
- continue
- }
- connInfoHandler.HandleConnInfo(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/jsonmessage.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/jsonmessage.go
deleted file mode 100644
index 0b5a791c..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/jsonmessage.go
+++ /dev/null
@@ -1,102 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type JSONMessage []json.RawMessage
-
-type JSONMessageType string
-
-const (
- MessageMsgInfo JSONMessageType = "MsgInfo"
- MessageMsg JSONMessageType = "Msg"
- MessagePresence JSONMessageType = "Presence"
- MessageStream JSONMessageType = "Stream"
- MessageConn JSONMessageType = "Conn"
- MessageProps JSONMessageType = "Props"
- MessageCmd JSONMessageType = "Cmd"
- MessageChat JSONMessageType = "Chat"
-)
-
-func (ext *ExtendedConn) AddHandler(handler whatsapp.Handler) {
- ext.Conn.AddHandler(handler)
- ext.handlers = append(ext.handlers, handler)
-}
-
-func (ext *ExtendedConn) HandleError(error) {}
-
-type UnhandledJSONMessageHandler interface {
- whatsapp.Handler
- HandleUnhandledJSONMessage(string)
-}
-
-type JSONParseErrorHandler interface {
- whatsapp.Handler
- HandleJSONParseError(error)
-}
-
-func (ext *ExtendedConn) jsonParseError(err error) {
- for _, handler := range ext.handlers {
- errorHandler, ok := handler.(JSONParseErrorHandler)
- if !ok {
- continue
- }
- errorHandler.HandleJSONParseError(err)
- }
-}
-
-func (ext *ExtendedConn) HandleJsonMessage(message string) {
- msg := JSONMessage{}
- err := json.Unmarshal([]byte(message), &msg)
- if err != nil || len(msg) < 2 {
- ext.jsonParseError(err)
- return
- }
-
- var msgType JSONMessageType
- json.Unmarshal(msg[0], &msgType)
-
- switch msgType {
- case MessagePresence:
- ext.handleMessagePresence(msg[1])
- case MessageStream:
- ext.handleMessageStream(msg[1:])
- case MessageConn:
- ext.handleMessageConn(msg[1])
- case MessageProps:
- ext.handleMessageProps(msg[1])
- case MessageMsgInfo, MessageMsg:
- ext.handleMessageMsgInfo(msgType, msg[1])
- case MessageCmd:
- ext.handleMessageCommand(msg[1])
- case MessageChat:
- ext.handleMessageChatUpdate(msg[1])
- default:
- for _, handler := range ext.handlers {
- ujmHandler, ok := handler.(UnhandledJSONMessageHandler)
- if !ok {
- continue
- }
- ujmHandler.HandleUnhandledJSONMessage(message)
- }
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/msginfo.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/msginfo.go
deleted file mode 100644
index e929ec90..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/msginfo.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
- "strings"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type MsgInfoCommand string
-
-const (
- MsgInfoCommandAck MsgInfoCommand = "ack"
- MsgInfoCommandAcks MsgInfoCommand = "acks"
-)
-
-type Acknowledgement int
-
-const (
- AckMessageSent Acknowledgement = 1
- AckMessageDelivered Acknowledgement = 2
- AckMessageRead Acknowledgement = 3
-)
-
-type JSONStringOrArray []string
-
-func (jsoa *JSONStringOrArray) UnmarshalJSON(data []byte) error {
- var str string
- if json.Unmarshal(data, &str) == nil {
- *jsoa = []string{str}
- return nil
- }
- var strs []string
- json.Unmarshal(data, &strs)
- *jsoa = strs
- return nil
-}
-
-type MsgInfo struct {
- Command MsgInfoCommand `json:"cmd"`
- IDs JSONStringOrArray `json:"id"`
- Acknowledgement Acknowledgement `json:"ack"`
- MessageFromJID string `json:"from"`
- SenderJID string `json:"participant"`
- ToJID string `json:"to"`
- Timestamp int64 `json:"t"`
-}
-
-type MsgInfoHandler interface {
- whatsapp.Handler
- HandleMsgInfo(MsgInfo)
-}
-
-func (ext *ExtendedConn) handleMessageMsgInfo(msgType JSONMessageType, message []byte) {
- var event MsgInfo
- err := json.Unmarshal(message, &event)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
- event.MessageFromJID = strings.Replace(event.MessageFromJID, OldUserSuffix, NewUserSuffix, 1)
- event.SenderJID = strings.Replace(event.SenderJID, OldUserSuffix, NewUserSuffix, 1)
- event.ToJID = strings.Replace(event.ToJID, OldUserSuffix, NewUserSuffix, 1)
- if msgType == MessageMsg {
- event.SenderJID = event.ToJID
- }
- for _, handler := range ext.handlers {
- msgInfoHandler, ok := handler.(MsgInfoHandler)
- if !ok {
- continue
- }
- go msgInfoHandler.HandleMsgInfo(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/presence.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/presence.go
deleted file mode 100644
index d70a753a..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/presence.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
- "strings"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type PresenceType string
-
-const (
- PresenceUnavailable PresenceType = "unavailable"
- PresenceAvailable PresenceType = "available"
- PresenceComposing PresenceType = "composing"
-)
-
-type Presence struct {
- JID string `json:"id"`
- SenderJID string `json:"participant"`
- Status PresenceType `json:"type"`
- Timestamp int64 `json:"t"`
- Deny bool `json:"deny"`
-}
-
-type PresenceHandler interface {
- whatsapp.Handler
- HandlePresence(Presence)
-}
-
-func (ext *ExtendedConn) handleMessagePresence(message []byte) {
- var event Presence
- err := json.Unmarshal(message, &event)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
- event.JID = strings.Replace(event.JID, OldUserSuffix, NewUserSuffix, 1)
- if len(event.SenderJID) == 0 {
- event.SenderJID = event.JID
- } else {
- event.SenderJID = strings.Replace(event.SenderJID, OldUserSuffix, NewUserSuffix, 1)
- }
- for _, handler := range ext.handlers {
- presenceHandler, ok := handler.(PresenceHandler)
- if !ok {
- continue
- }
- go presenceHandler.HandlePresence(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/props.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/props.go
deleted file mode 100644
index dcfdef9e..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/props.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type ProtocolProps struct {
- WebPresence bool `json:"webPresence"`
- NotificationQuery bool `json:"notificationQuery"`
- FacebookCrashLog bool `json:"fbCrashlog"`
- Bucket string `json:"bucket"`
- GIFSearch string `json:"gifSearch"`
- Spam bool `json:"SPAM"`
- SetBlock bool `json:"SET_BLOCK"`
- MessageInfo bool `json:"MESSAGE_INFO"`
- MaxFileSize int `json:"maxFileSize"`
- Media int `json:"media"`
- GroupNameLength int `json:"maxSubject"`
- GroupDescriptionLength int `json:"groupDescLength"`
- MaxParticipants int `json:"maxParticipants"`
- VideoMaxEdge int `json:"videoMaxEdge"`
- ImageMaxEdge int `json:"imageMaxEdge"`
- ImageMaxKilobytes int `json:"imageMaxKBytes"`
- Edit int `json:"edit"`
- FwdUIStartTimestamp int `json:"fwdUiStartTs"`
- GroupsV3 int `json:"groupsV3"`
- RestrictGroups int `json:"restrictGroups"`
- AnnounceGroups int `json:"announceGroups"`
-}
-
-type ProtocolPropsHandler interface {
- whatsapp.Handler
- HandleProtocolProps(ProtocolProps)
-}
-
-func (ext *ExtendedConn) handleMessageProps(message []byte) {
- var event ProtocolProps
- err := json.Unmarshal(message, &event)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
- for _, handler := range ext.handlers {
- protocolPropsHandler, ok := handler.(ProtocolPropsHandler)
- if !ok {
- continue
- }
- go protocolPropsHandler.HandleProtocolProps(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/stream.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/stream.go
deleted file mode 100644
index f2b222d5..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/stream.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-type StreamType string
-
-const (
- StreamUpdate = "update"
- StreamSleep = "asleep"
-)
-
-type StreamEvent struct {
- Type StreamType
- Boolean bool
- Version string
-}
-
-type StreamEventHandler interface {
- whatsapp.Handler
- HandleStreamEvent(StreamEvent)
-}
-
-func (ext *ExtendedConn) handleMessageStream(message []json.RawMessage) {
- var event StreamEvent
- err := json.Unmarshal(message[0], &event.Type)
- if err != nil {
- ext.jsonParseError(err)
- return
- }
-
- if event.Type == StreamUpdate && len(message) > 4 {
- json.Unmarshal(message[1], event.Boolean)
- json.Unmarshal(message[2], event.Version)
- }
-
- for _, handler := range ext.handlers {
- streamHandler, ok := handler.(StreamEventHandler)
- if !ok {
- continue
- }
- go streamHandler.HandleStreamEvent(event)
- }
-}
diff --git a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/whatsapp.go b/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/whatsapp.go
deleted file mode 100644
index bd28a06d..00000000
--- a/vendor/github.com/matterbridge/mautrix-whatsapp/whatsapp-ext/whatsapp.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// mautrix-whatsapp - A Matrix-WhatsApp puppeting bridge.
-// Copyright (C) 2019 Tulir Asokan
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-package whatsappExt
-
-import (
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
- "strings"
-
- "github.com/matterbridge/go-whatsapp"
-)
-
-const (
- OldUserSuffix = "@c.us"
- NewUserSuffix = "@s.whatsapp.net"
-)
-
-type ExtendedConn struct {
- *whatsapp.Conn
-
- handlers []whatsapp.Handler
-}
-
-func ExtendConn(conn *whatsapp.Conn) *ExtendedConn {
- ext := &ExtendedConn{
- Conn: conn,
- }
- ext.Conn.AddHandler(ext)
- return ext
-}
-
-type GroupInfo struct {
- JID string `json:"jid"`
- OwnerJID string `json:"owner"`
-
- Name string `json:"subject"`
- NameSetTime int64 `json:"subjectTime"`
- NameSetBy string `json:"subjectOwner"`
-
- Topic string `json:"desc"`
- TopicID string `json:"descId"`
- TopicSetAt int64 `json:"descTime"`
- TopicSetBy string `json:"descOwner"`
-
- GroupCreated int64 `json:"creation"`
-
- Status int16 `json:"status"`
-
- Participants []struct {
- JID string `json:"id"`
- IsAdmin bool `json:"isAdmin"`
- IsSuperAdmin bool `json:"isSuperAdmin"`
- } `json:"participants"`
-}
-
-func (ext *ExtendedConn) GetGroupMetaData(jid string) (*GroupInfo, error) {
- data, err := ext.Conn.GetGroupMetaData(jid)
- if err != nil {
- return nil, fmt.Errorf("failed to get group metadata: %v", err)
- }
- content := <-data
-
- info := &GroupInfo{}
- err = json.Unmarshal([]byte(content), info)
- if err != nil {
- return info, fmt.Errorf("failed to unmarshal group metadata: %v", err)
- }
-
- for index, participant := range info.Participants {
- info.Participants[index].JID = strings.Replace(participant.JID, OldUserSuffix, NewUserSuffix, 1)
- }
- info.NameSetBy = strings.Replace(info.NameSetBy, OldUserSuffix, NewUserSuffix, 1)
- info.TopicSetBy = strings.Replace(info.TopicSetBy, OldUserSuffix, NewUserSuffix, 1)
-
- return info, nil
-}
-
-type ProfilePicInfo struct {
- URL string `json:"eurl"`
- Tag string `json:"tag"`
-
- Status int16 `json:"status"`
-}
-
-func (ppi *ProfilePicInfo) Download() (io.ReadCloser, error) {
- resp, err := http.Get(ppi.URL)
- if err != nil {
- return nil, err
- }
- return resp.Body, nil
-}
-
-func (ppi *ProfilePicInfo) DownloadBytes() ([]byte, error) {
- body, err := ppi.Download()
- if err != nil {
- return nil, err
- }
- defer body.Close()
- data, err := ioutil.ReadAll(body)
- return data, err
-}
-
-func (ext *ExtendedConn) GetProfilePicThumb(jid string) (*ProfilePicInfo, error) {
- data, err := ext.Conn.GetProfilePicThumb(jid)
- if err != nil {
- return nil, fmt.Errorf("failed to get avatar: %v", err)
- }
- content := <-data
- info := &ProfilePicInfo{}
- err = json.Unmarshal([]byte(content), info)
- if err != nil {
- return info, fmt.Errorf("failed to unmarshal avatar info: %v", err)
- }
- return info, nil
-}