slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.2.7__cp311-cp311-manylinux_2_36_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of slidge-whatsapp might be problematic. Click here for more details.
- slidge_whatsapp/config.py +3 -0
- slidge_whatsapp/event.go +31 -26
- slidge_whatsapp/gateway.go +13 -9
- slidge_whatsapp/gateway.py +2 -2
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.h +170 -170
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
- slidge_whatsapp/generated/build.py +135 -135
- slidge_whatsapp/generated/whatsapp.c +1496 -1496
- slidge_whatsapp/generated/whatsapp.go +1137 -1137
- slidge_whatsapp/generated/whatsapp.py +1216 -1216
- slidge_whatsapp/generated/whatsapp_go.h +170 -170
- slidge_whatsapp/go.mod +15 -12
- slidge_whatsapp/go.sum +35 -29
- slidge_whatsapp/media/media.go +21 -11
- slidge_whatsapp/session.go +73 -66
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
- slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +76 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
- slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +40 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +119 -37
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +29 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +74 -34
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +61 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +188 -152
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +444 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +78 -42
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +184 -89
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7428 -2151
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +373 -44
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +800 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +72 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1344 -438
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +52 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +25 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +261 -75
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +107 -56
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +13 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +47 -29
- slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
- slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
- slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
- slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
- slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
- slidge_whatsapp/vendor/modules.txt +52 -13
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/METADATA +1 -1
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/RECORD +330 -184
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/WHEEL +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/LICENSE +0 -0
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/entry_points.txt +0 -0
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
package whatsmeow
|
|
8
8
|
|
|
9
9
|
import (
|
|
10
|
+
"context"
|
|
10
11
|
"crypto/hmac"
|
|
11
12
|
"crypto/sha256"
|
|
12
13
|
"encoding/base64"
|
|
@@ -129,21 +130,23 @@ var mediaTypeToMMSType = map[MediaType]string{
|
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
// DownloadAny loops through the downloadable parts of the given message and downloads the first non-nil item.
|
|
132
|
-
|
|
133
|
+
//
|
|
134
|
+
// Deprecated: it's recommended to find the specific message type you want to download manually and use the Download method instead.
|
|
135
|
+
func (cli *Client) DownloadAny(ctx context.Context, msg *waE2E.Message) (data []byte, err error) {
|
|
133
136
|
if msg == nil {
|
|
134
137
|
return nil, ErrNothingDownloadableFound
|
|
135
138
|
}
|
|
136
139
|
switch {
|
|
137
140
|
case msg.ImageMessage != nil:
|
|
138
|
-
return cli.Download(msg.ImageMessage)
|
|
141
|
+
return cli.Download(ctx, msg.ImageMessage)
|
|
139
142
|
case msg.VideoMessage != nil:
|
|
140
|
-
return cli.Download(msg.VideoMessage)
|
|
143
|
+
return cli.Download(ctx, msg.VideoMessage)
|
|
141
144
|
case msg.AudioMessage != nil:
|
|
142
|
-
return cli.Download(msg.AudioMessage)
|
|
145
|
+
return cli.Download(ctx, msg.AudioMessage)
|
|
143
146
|
case msg.DocumentMessage != nil:
|
|
144
|
-
return cli.Download(msg.DocumentMessage)
|
|
147
|
+
return cli.Download(ctx, msg.DocumentMessage)
|
|
145
148
|
case msg.StickerMessage != nil:
|
|
146
|
-
return cli.Download(msg.StickerMessage)
|
|
149
|
+
return cli.Download(ctx, msg.StickerMessage)
|
|
147
150
|
default:
|
|
148
151
|
return nil, ErrNothingDownloadableFound
|
|
149
152
|
}
|
|
@@ -160,6 +163,10 @@ func getSize(msg DownloadableMessage) int {
|
|
|
160
163
|
}
|
|
161
164
|
}
|
|
162
165
|
|
|
166
|
+
// ReturnDownloadWarnings controls whether the Download function returns non-fatal validation warnings.
|
|
167
|
+
// Currently, these include [ErrFileLengthMismatch] and [ErrInvalidMediaSHA256].
|
|
168
|
+
var ReturnDownloadWarnings = true
|
|
169
|
+
|
|
163
170
|
// DownloadThumbnail downloads a thumbnail from a message.
|
|
164
171
|
//
|
|
165
172
|
// This is primarily intended for downloading link preview thumbnails, which are in ExtendedTextMessage:
|
|
@@ -167,12 +174,12 @@ func getSize(msg DownloadableMessage) int {
|
|
|
167
174
|
// var msg *waE2E.Message
|
|
168
175
|
// ...
|
|
169
176
|
// thumbnailImageBytes, err := cli.DownloadThumbnail(msg.GetExtendedTextMessage())
|
|
170
|
-
func (cli *Client) DownloadThumbnail(msg DownloadableThumbnail) ([]byte, error) {
|
|
177
|
+
func (cli *Client) DownloadThumbnail(ctx context.Context, msg DownloadableThumbnail) ([]byte, error) {
|
|
171
178
|
mediaType, ok := classToThumbnailMediaType[msg.ProtoReflect().Descriptor().Name()]
|
|
172
179
|
if !ok {
|
|
173
180
|
return nil, fmt.Errorf("%w '%s'", ErrUnknownMediaType, string(msg.ProtoReflect().Descriptor().Name()))
|
|
174
181
|
} else if len(msg.GetThumbnailDirectPath()) > 0 {
|
|
175
|
-
return cli.DownloadMediaWithPath(msg.GetThumbnailDirectPath(), msg.GetThumbnailEncSHA256(), msg.GetThumbnailSHA256(), msg.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
|
|
182
|
+
return cli.DownloadMediaWithPath(ctx, msg.GetThumbnailDirectPath(), msg.GetThumbnailEncSHA256(), msg.GetThumbnailSHA256(), msg.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
|
|
176
183
|
} else {
|
|
177
184
|
return nil, ErrNoURLPresent
|
|
178
185
|
}
|
|
@@ -200,7 +207,7 @@ func GetMediaType(msg DownloadableMessage) MediaType {
|
|
|
200
207
|
// imageData, err := cli.Download(msg.GetImageMessage())
|
|
201
208
|
//
|
|
202
209
|
// You can also use DownloadAny to download the first non-nil sub-message.
|
|
203
|
-
func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) {
|
|
210
|
+
func (cli *Client) Download(ctx context.Context, msg DownloadableMessage) ([]byte, error) {
|
|
204
211
|
if cli == nil {
|
|
205
212
|
return nil, ErrClientIsNil
|
|
206
213
|
}
|
|
@@ -216,9 +223,9 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) {
|
|
|
216
223
|
isWebWhatsappNetURL = strings.HasPrefix(url, "https://web.whatsapp.net")
|
|
217
224
|
}
|
|
218
225
|
if len(url) > 0 && !isWebWhatsappNetURL {
|
|
219
|
-
return cli.downloadAndDecrypt(url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256())
|
|
226
|
+
return cli.downloadAndDecrypt(ctx, url, msg.GetMediaKey(), mediaType, getSize(msg), msg.GetFileEncSHA256(), msg.GetFileSHA256())
|
|
220
227
|
} else if len(msg.GetDirectPath()) > 0 {
|
|
221
|
-
return cli.DownloadMediaWithPath(msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType])
|
|
228
|
+
return cli.DownloadMediaWithPath(ctx, msg.GetDirectPath(), msg.GetFileEncSHA256(), msg.GetFileSHA256(), msg.GetMediaKey(), getSize(msg), mediaType, mediaTypeToMMSType[mediaType])
|
|
222
229
|
} else {
|
|
223
230
|
if isWebWhatsappNetURL {
|
|
224
231
|
cli.Log.Warnf("Got a media message with a web.whatsapp.net URL (%s) and no direct path", url)
|
|
@@ -227,14 +234,25 @@ func (cli *Client) Download(msg DownloadableMessage) ([]byte, error) {
|
|
|
227
234
|
}
|
|
228
235
|
}
|
|
229
236
|
|
|
230
|
-
func (cli *Client) DownloadFB(
|
|
231
|
-
|
|
237
|
+
func (cli *Client) DownloadFB(
|
|
238
|
+
ctx context.Context,
|
|
239
|
+
transport *waMediaTransport.WAMediaTransport_Integral,
|
|
240
|
+
mediaType MediaType,
|
|
241
|
+
) ([]byte, error) {
|
|
242
|
+
return cli.DownloadMediaWithPath(ctx, transport.GetDirectPath(), transport.GetFileEncSHA256(), transport.GetFileSHA256(), transport.GetMediaKey(), -1, mediaType, mediaTypeToMMSType[mediaType])
|
|
232
243
|
}
|
|
233
244
|
|
|
234
245
|
// DownloadMediaWithPath downloads an attachment by manually specifying the path and encryption details.
|
|
235
|
-
func (cli *Client) DownloadMediaWithPath(
|
|
246
|
+
func (cli *Client) DownloadMediaWithPath(
|
|
247
|
+
ctx context.Context,
|
|
248
|
+
directPath string,
|
|
249
|
+
encFileHash, fileHash, mediaKey []byte,
|
|
250
|
+
fileLength int,
|
|
251
|
+
mediaType MediaType,
|
|
252
|
+
mmsType string,
|
|
253
|
+
) (data []byte, err error) {
|
|
236
254
|
var mediaConn *MediaConn
|
|
237
|
-
mediaConn, err = cli.refreshMediaConn(false)
|
|
255
|
+
mediaConn, err = cli.refreshMediaConn(ctx, false)
|
|
238
256
|
if err != nil {
|
|
239
257
|
return nil, fmt.Errorf("failed to refresh media connections: %w", err)
|
|
240
258
|
}
|
|
@@ -244,9 +262,14 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas
|
|
|
244
262
|
for i, host := range mediaConn.Hosts {
|
|
245
263
|
// TODO omit hash for unencrypted media?
|
|
246
264
|
mediaURL := fmt.Sprintf("https://%s%s&hash=%s&mms-type=%s&__wa-mms=", host.Hostname, directPath, base64.URLEncoding.EncodeToString(encFileHash), mmsType)
|
|
247
|
-
data, err = cli.downloadAndDecrypt(mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash)
|
|
248
|
-
if err == nil ||
|
|
249
|
-
errors.Is(err,
|
|
265
|
+
data, err = cli.downloadAndDecrypt(ctx, mediaURL, mediaKey, mediaType, fileLength, encFileHash, fileHash)
|
|
266
|
+
if err == nil ||
|
|
267
|
+
errors.Is(err, ErrFileLengthMismatch) ||
|
|
268
|
+
errors.Is(err, ErrInvalidMediaSHA256) ||
|
|
269
|
+
errors.Is(err, ErrMediaDownloadFailedWith403) ||
|
|
270
|
+
errors.Is(err, ErrMediaDownloadFailedWith404) ||
|
|
271
|
+
errors.Is(err, ErrMediaDownloadFailedWith410) ||
|
|
272
|
+
errors.Is(err, context.Canceled) {
|
|
250
273
|
return
|
|
251
274
|
} else if i >= len(mediaConn.Hosts)-1 {
|
|
252
275
|
return nil, fmt.Errorf("failed to download media from last host: %w", err)
|
|
@@ -256,10 +279,18 @@ func (cli *Client) DownloadMediaWithPath(directPath string, encFileHash, fileHas
|
|
|
256
279
|
return
|
|
257
280
|
}
|
|
258
281
|
|
|
259
|
-
func (cli *Client) downloadAndDecrypt(
|
|
282
|
+
func (cli *Client) downloadAndDecrypt(
|
|
283
|
+
ctx context.Context,
|
|
284
|
+
url string,
|
|
285
|
+
mediaKey []byte,
|
|
286
|
+
appInfo MediaType,
|
|
287
|
+
fileLength int,
|
|
288
|
+
fileEncSHA256,
|
|
289
|
+
fileSHA256 []byte,
|
|
290
|
+
) (data []byte, err error) {
|
|
260
291
|
iv, cipherKey, macKey, _ := getMediaKeys(mediaKey, appInfo)
|
|
261
292
|
var ciphertext, mac []byte
|
|
262
|
-
if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(url, fileEncSHA256); err != nil {
|
|
293
|
+
if ciphertext, mac, err = cli.downloadPossiblyEncryptedMediaWithRetries(ctx, url, fileEncSHA256); err != nil {
|
|
263
294
|
|
|
264
295
|
} else if mediaKey == nil && fileEncSHA256 == nil && mac == nil {
|
|
265
296
|
// Unencrypted media, just return the downloaded data
|
|
@@ -268,10 +299,12 @@ func (cli *Client) downloadAndDecrypt(url string, mediaKey []byte, appInfo Media
|
|
|
268
299
|
|
|
269
300
|
} else if data, err = cbcutil.Decrypt(cipherKey, iv, ciphertext); err != nil {
|
|
270
301
|
err = fmt.Errorf("failed to decrypt file: %w", err)
|
|
271
|
-
} else if
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
302
|
+
} else if ReturnDownloadWarnings {
|
|
303
|
+
if fileLength >= 0 && len(data) != fileLength {
|
|
304
|
+
err = fmt.Errorf("%w: expected %d, got %d", ErrFileLengthMismatch, fileLength, len(data))
|
|
305
|
+
} else if len(fileSHA256) == 32 && sha256.Sum256(data) != *(*[32]byte)(fileSHA256) {
|
|
306
|
+
err = ErrInvalidMediaSHA256
|
|
307
|
+
}
|
|
275
308
|
}
|
|
276
309
|
return
|
|
277
310
|
}
|
|
@@ -282,6 +315,9 @@ func getMediaKeys(mediaKey []byte, appInfo MediaType) (iv, cipherKey, macKey, re
|
|
|
282
315
|
}
|
|
283
316
|
|
|
284
317
|
func shouldRetryMediaDownload(err error) bool {
|
|
318
|
+
if errors.Is(err, context.Canceled) {
|
|
319
|
+
return false
|
|
320
|
+
}
|
|
285
321
|
var netErr net.Error
|
|
286
322
|
var httpErr DownloadHTTPError
|
|
287
323
|
return errors.As(err, &netErr) ||
|
|
@@ -289,12 +325,12 @@ func shouldRetryMediaDownload(err error) bool {
|
|
|
289
325
|
(errors.As(err, &httpErr) && retryafter.Should(httpErr.StatusCode, true))
|
|
290
326
|
}
|
|
291
327
|
|
|
292
|
-
func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksum []byte) (file, mac []byte, err error) {
|
|
328
|
+
func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) {
|
|
293
329
|
for retryNum := 0; retryNum < 5; retryNum++ {
|
|
294
330
|
if checksum == nil {
|
|
295
|
-
file, err = cli.downloadMedia(url)
|
|
331
|
+
file, err = cli.downloadMedia(ctx, url)
|
|
296
332
|
} else {
|
|
297
|
-
file, mac, err = cli.downloadEncryptedMedia(url, checksum)
|
|
333
|
+
file, mac, err = cli.downloadEncryptedMedia(ctx, url, checksum)
|
|
298
334
|
}
|
|
299
335
|
if err == nil || !shouldRetryMediaDownload(err) {
|
|
300
336
|
return
|
|
@@ -305,13 +341,17 @@ func (cli *Client) downloadPossiblyEncryptedMediaWithRetries(url string, checksu
|
|
|
305
341
|
retryDuration = retryafter.Parse(httpErr.Response.Header.Get("Retry-After"), retryDuration)
|
|
306
342
|
}
|
|
307
343
|
cli.Log.Warnf("Failed to download media due to network error: %v, retrying in %s...", err, retryDuration)
|
|
308
|
-
|
|
344
|
+
select {
|
|
345
|
+
case <-ctx.Done():
|
|
346
|
+
return nil, nil, ctx.Err()
|
|
347
|
+
case <-time.After(retryDuration):
|
|
348
|
+
}
|
|
309
349
|
}
|
|
310
350
|
return
|
|
311
351
|
}
|
|
312
352
|
|
|
313
|
-
func (cli *Client) doMediaDownloadRequest(url string) (*http.Response, error) {
|
|
314
|
-
req, err := http.
|
|
353
|
+
func (cli *Client) doMediaDownloadRequest(ctx context.Context, url string) (*http.Response, error) {
|
|
354
|
+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
|
315
355
|
if err != nil {
|
|
316
356
|
return nil, fmt.Errorf("failed to prepare request: %w", err)
|
|
317
357
|
}
|
|
@@ -332,8 +372,8 @@ func (cli *Client) doMediaDownloadRequest(url string) (*http.Response, error) {
|
|
|
332
372
|
return resp, nil
|
|
333
373
|
}
|
|
334
374
|
|
|
335
|
-
func (cli *Client) downloadMedia(url string) ([]byte, error) {
|
|
336
|
-
resp, err := cli.doMediaDownloadRequest(url)
|
|
375
|
+
func (cli *Client) downloadMedia(ctx context.Context, url string) ([]byte, error) {
|
|
376
|
+
resp, err := cli.doMediaDownloadRequest(ctx, url)
|
|
337
377
|
if err != nil {
|
|
338
378
|
return nil, err
|
|
339
379
|
}
|
|
@@ -344,8 +384,8 @@ func (cli *Client) downloadMedia(url string) ([]byte, error) {
|
|
|
344
384
|
|
|
345
385
|
const mediaHMACLength = 10
|
|
346
386
|
|
|
347
|
-
func (cli *Client) downloadEncryptedMedia(url string, checksum []byte) (file, mac []byte, err error) {
|
|
348
|
-
data, err := cli.downloadMedia(url)
|
|
387
|
+
func (cli *Client) downloadEncryptedMedia(ctx context.Context, url string, checksum []byte) (file, mac []byte, err error) {
|
|
388
|
+
data, err := cli.downloadMedia(ctx, url)
|
|
349
389
|
if err != nil {
|
|
350
390
|
return
|
|
351
391
|
} else if len(data) <= mediaHMACLength {
|
|
@@ -141,6 +141,7 @@ var (
|
|
|
141
141
|
var (
|
|
142
142
|
ErrOriginalMessageSecretNotFound = errors.New("original message secret key not found")
|
|
143
143
|
ErrNotEncryptedReactionMessage = errors.New("given message isn't an encrypted reaction message")
|
|
144
|
+
ErrNotEncryptedCommentMessage = errors.New("given message isn't an encrypted comment message")
|
|
144
145
|
ErrNotPollUpdateMessage = errors.New("given message isn't a poll update message")
|
|
145
146
|
)
|
|
146
147
|
|
|
@@ -13,6 +13,7 @@ import (
|
|
|
13
13
|
"strings"
|
|
14
14
|
|
|
15
15
|
waBinary "go.mau.fi/whatsmeow/binary"
|
|
16
|
+
"go.mau.fi/whatsmeow/store"
|
|
16
17
|
"go.mau.fi/whatsmeow/types"
|
|
17
18
|
"go.mau.fi/whatsmeow/types/events"
|
|
18
19
|
)
|
|
@@ -548,27 +549,43 @@ func (cli *Client) getGroupInfo(ctx context.Context, jid types.JID, lockParticip
|
|
|
548
549
|
return groupInfo, err
|
|
549
550
|
}
|
|
550
551
|
if lockParticipantCache {
|
|
551
|
-
cli.
|
|
552
|
-
defer cli.
|
|
552
|
+
cli.groupCacheLock.Lock()
|
|
553
|
+
defer cli.groupCacheLock.Unlock()
|
|
553
554
|
}
|
|
554
555
|
participants := make([]types.JID, len(groupInfo.Participants))
|
|
556
|
+
lidPairs := make([]store.LIDMapping, len(groupInfo.Participants))
|
|
555
557
|
for i, part := range groupInfo.Participants {
|
|
556
558
|
participants[i] = part.JID
|
|
559
|
+
if !part.PhoneNumber.IsEmpty() && !part.LID.IsEmpty() {
|
|
560
|
+
lidPairs[i] = store.LIDMapping{
|
|
561
|
+
LID: part.LID,
|
|
562
|
+
PN: part.PhoneNumber,
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
cli.groupCache[jid] = &groupMetaCache{
|
|
567
|
+
AddressingMode: groupInfo.AddressingMode,
|
|
568
|
+
CommunityAnnouncementGroup: groupInfo.IsAnnounce && groupInfo.IsDefaultSubGroup,
|
|
569
|
+
Members: participants,
|
|
570
|
+
}
|
|
571
|
+
err = cli.Store.LIDs.PutManyLIDMappings(ctx, lidPairs)
|
|
572
|
+
if err != nil {
|
|
573
|
+
cli.Log.Warnf("Failed to store LID mappings for members of %s: %v", jid, err)
|
|
557
574
|
}
|
|
558
|
-
cli.groupParticipantsCache[jid] = participants
|
|
559
575
|
return groupInfo, nil
|
|
560
576
|
}
|
|
561
577
|
|
|
562
|
-
func (cli *Client)
|
|
563
|
-
cli.
|
|
564
|
-
defer cli.
|
|
565
|
-
if
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
578
|
+
func (cli *Client) getCachedGroupData(ctx context.Context, jid types.JID) (*groupMetaCache, error) {
|
|
579
|
+
cli.groupCacheLock.Lock()
|
|
580
|
+
defer cli.groupCacheLock.Unlock()
|
|
581
|
+
if val, ok := cli.groupCache[jid]; ok {
|
|
582
|
+
return val, nil
|
|
583
|
+
}
|
|
584
|
+
_, err := cli.getGroupInfo(ctx, jid, false)
|
|
585
|
+
if err != nil {
|
|
586
|
+
return nil, err
|
|
570
587
|
}
|
|
571
|
-
return cli.
|
|
588
|
+
return cli.groupCache[jid], nil
|
|
572
589
|
}
|
|
573
590
|
|
|
574
591
|
func parseParticipant(childAG *waBinary.AttrUtility, child *waBinary.Node) types.GroupParticipant {
|
|
@@ -577,12 +594,14 @@ func parseParticipant(childAG *waBinary.AttrUtility, child *waBinary.Node) types
|
|
|
577
594
|
IsAdmin: pcpType == "admin" || pcpType == "superadmin",
|
|
578
595
|
IsSuperAdmin: pcpType == "superadmin",
|
|
579
596
|
JID: childAG.JID("jid"),
|
|
580
|
-
LID: childAG.OptionalJIDOrEmpty("lid"),
|
|
581
597
|
DisplayName: childAG.OptionalString("display_name"),
|
|
582
598
|
}
|
|
583
|
-
if participant.JID.Server == types.HiddenUserServer
|
|
599
|
+
if participant.JID.Server == types.HiddenUserServer {
|
|
584
600
|
participant.LID = participant.JID
|
|
585
|
-
|
|
601
|
+
participant.PhoneNumber = childAG.OptionalJIDOrEmpty("phone_number")
|
|
602
|
+
} else if participant.JID.Server == types.DefaultUserServer {
|
|
603
|
+
participant.PhoneNumber = participant.JID
|
|
604
|
+
participant.LID = childAG.OptionalJIDOrEmpty("lid")
|
|
586
605
|
}
|
|
587
606
|
if errorCode := childAG.OptionalInt("error"); errorCode != 0 {
|
|
588
607
|
participant.Error = errorCode
|
|
@@ -604,15 +623,19 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e
|
|
|
604
623
|
|
|
605
624
|
group.JID = types.NewJID(ag.String("id"), types.GroupServer)
|
|
606
625
|
group.OwnerJID = ag.OptionalJIDOrEmpty("creator")
|
|
626
|
+
group.OwnerPN = ag.OptionalJIDOrEmpty("creator_pn")
|
|
607
627
|
|
|
608
628
|
group.Name = ag.String("subject")
|
|
609
629
|
group.NameSetAt = ag.UnixTime("s_t")
|
|
610
630
|
group.NameSetBy = ag.OptionalJIDOrEmpty("s_o")
|
|
631
|
+
group.NameSetByPN = ag.OptionalJIDOrEmpty("s_o_pn")
|
|
611
632
|
|
|
612
633
|
group.GroupCreated = ag.UnixTime("creation")
|
|
634
|
+
group.CreatorCountryCode = ag.OptionalString("creator_country_code")
|
|
613
635
|
|
|
614
636
|
group.AnnounceVersionID = ag.OptionalString("a_v_id")
|
|
615
637
|
group.ParticipantVersionID = ag.OptionalString("p_v_id")
|
|
638
|
+
group.AddressingMode = types.AddressingMode(ag.OptionalString("addressing_mode"))
|
|
616
639
|
|
|
617
640
|
for _, child := range groupNode.GetChildren() {
|
|
618
641
|
childAG := child.AttrGetter()
|
|
@@ -626,6 +649,7 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e
|
|
|
626
649
|
group.Topic = string(topicBytes)
|
|
627
650
|
group.TopicID = childAG.String("id")
|
|
628
651
|
group.TopicSetBy = childAG.OptionalJIDOrEmpty("participant")
|
|
652
|
+
group.TopicSetByPN = childAG.OptionalJIDOrEmpty("participant_pn") // TODO confirm field name
|
|
629
653
|
group.TopicSetAt = childAG.UnixTime("t")
|
|
630
654
|
}
|
|
631
655
|
case "announcement":
|
|
@@ -691,16 +715,20 @@ func parseParticipantList(node *waBinary.Node) (participants []types.JID) {
|
|
|
691
715
|
return
|
|
692
716
|
}
|
|
693
717
|
|
|
694
|
-
func (cli *Client) parseGroupCreate(node *waBinary.Node) (*events.JoinedGroup, error) {
|
|
718
|
+
func (cli *Client) parseGroupCreate(parentNode, node *waBinary.Node) (*events.JoinedGroup, error) {
|
|
695
719
|
groupNode, ok := node.GetOptionalChildByTag("group")
|
|
696
720
|
if !ok {
|
|
697
721
|
return nil, fmt.Errorf("group create notification didn't contain group info")
|
|
698
722
|
}
|
|
699
723
|
var evt events.JoinedGroup
|
|
724
|
+
pag := parentNode.AttrGetter()
|
|
700
725
|
ag := node.AttrGetter()
|
|
701
726
|
evt.Reason = ag.OptionalString("reason")
|
|
702
727
|
evt.CreateKey = ag.OptionalString("key")
|
|
703
728
|
evt.Type = ag.OptionalString("type")
|
|
729
|
+
evt.Sender = pag.OptionalJID("participant")
|
|
730
|
+
evt.SenderPN = pag.OptionalJID("participant_pn")
|
|
731
|
+
evt.Notify = pag.OptionalString("notify")
|
|
704
732
|
info, err := cli.parseGroupNode(&groupNode)
|
|
705
733
|
if err != nil {
|
|
706
734
|
return nil, fmt.Errorf("failed to parse group info in create notification: %w", err)
|
|
@@ -715,6 +743,7 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
|
|
|
715
743
|
evt.JID = ag.JID("from")
|
|
716
744
|
evt.Notify = ag.OptionalString("notify")
|
|
717
745
|
evt.Sender = ag.OptionalJID("participant")
|
|
746
|
+
evt.SenderPN = ag.OptionalJID("participant_pn")
|
|
718
747
|
evt.Timestamp = ag.UnixTime("t")
|
|
719
748
|
if !ag.OK() {
|
|
720
749
|
return nil, fmt.Errorf("group change doesn't contain required attributes: %w", ag.Error())
|
|
@@ -723,8 +752,8 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
|
|
|
723
752
|
for _, child := range node.GetChildren() {
|
|
724
753
|
cag := child.AttrGetter()
|
|
725
754
|
if child.Tag == "add" || child.Tag == "remove" || child.Tag == "promote" || child.Tag == "demote" {
|
|
726
|
-
evt.PrevParticipantVersionID = cag.
|
|
727
|
-
evt.ParticipantVersionID = cag.
|
|
755
|
+
evt.PrevParticipantVersionID = cag.OptionalString("prev_v_id")
|
|
756
|
+
evt.ParticipantVersionID = cag.OptionalString("v_id")
|
|
728
757
|
}
|
|
729
758
|
switch child.Tag {
|
|
730
759
|
case "add":
|
|
@@ -744,9 +773,10 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
|
|
|
744
773
|
evt.Delete = &types.GroupDelete{Deleted: true, DeleteReason: cag.String("reason")}
|
|
745
774
|
case "subject":
|
|
746
775
|
evt.Name = &types.GroupName{
|
|
747
|
-
Name:
|
|
748
|
-
NameSetAt:
|
|
749
|
-
NameSetBy:
|
|
776
|
+
Name: cag.String("subject"),
|
|
777
|
+
NameSetAt: cag.UnixTime("s_t"),
|
|
778
|
+
NameSetBy: cag.OptionalJIDOrEmpty("s_o"),
|
|
779
|
+
NameSetByPN: cag.OptionalJIDOrEmpty("s_o_pn"),
|
|
750
780
|
}
|
|
751
781
|
case "description":
|
|
752
782
|
var topicStr string
|
|
@@ -833,40 +863,40 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
|
|
|
833
863
|
}
|
|
834
864
|
|
|
835
865
|
func (cli *Client) updateGroupParticipantCache(evt *events.GroupInfo) {
|
|
866
|
+
// TODO can the addressing mode change here?
|
|
836
867
|
if len(evt.Join) == 0 && len(evt.Leave) == 0 {
|
|
837
868
|
return
|
|
838
869
|
}
|
|
839
|
-
cli.
|
|
840
|
-
defer cli.
|
|
841
|
-
cached, ok := cli.
|
|
870
|
+
cli.groupCacheLock.Lock()
|
|
871
|
+
defer cli.groupCacheLock.Unlock()
|
|
872
|
+
cached, ok := cli.groupCache[evt.JID]
|
|
842
873
|
if !ok {
|
|
843
874
|
return
|
|
844
875
|
}
|
|
845
876
|
Outer:
|
|
846
877
|
for _, jid := range evt.Join {
|
|
847
|
-
for _, existingJID := range cached {
|
|
878
|
+
for _, existingJID := range cached.Members {
|
|
848
879
|
if jid == existingJID {
|
|
849
880
|
continue Outer
|
|
850
881
|
}
|
|
851
882
|
}
|
|
852
|
-
cached = append(cached, jid)
|
|
883
|
+
cached.Members = append(cached.Members, jid)
|
|
853
884
|
}
|
|
854
885
|
for _, jid := range evt.Leave {
|
|
855
|
-
for i, existingJID := range cached {
|
|
886
|
+
for i, existingJID := range cached.Members {
|
|
856
887
|
if existingJID == jid {
|
|
857
|
-
cached[i] = cached[len(cached)-1]
|
|
858
|
-
cached = cached[:len(cached)-1]
|
|
888
|
+
cached.Members[i] = cached.Members[len(cached.Members)-1]
|
|
889
|
+
cached.Members = cached.Members[:len(cached.Members)-1]
|
|
859
890
|
break
|
|
860
891
|
}
|
|
861
892
|
}
|
|
862
893
|
}
|
|
863
|
-
cli.groupParticipantsCache[evt.JID] = cached
|
|
864
894
|
}
|
|
865
895
|
|
|
866
896
|
func (cli *Client) parseGroupNotification(node *waBinary.Node) (any, error) {
|
|
867
897
|
children := node.GetChildren()
|
|
868
898
|
if len(children) == 1 && children[0].Tag == "create" {
|
|
869
|
-
return cli.parseGroupCreate(&children[0])
|
|
899
|
+
return cli.parseGroupCreate(node, &children[0])
|
|
870
900
|
} else {
|
|
871
901
|
groupChange, err := cli.parseGroupChange(node)
|
|
872
902
|
if err != nil {
|