nodejs-insta-private-api-mqt 1.3.85 → 1.3.86
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.
- package/dist/dist/constants/constants.d.ts +1 -0
- package/dist/dist/constants/index.d.ts +25 -0
- package/dist/dist/core/client.d.ts +106 -0
- package/dist/dist/core/nav-chain.d.ts +77 -0
- package/dist/dist/core/repository.d.ts +3 -0
- package/dist/dist/core/request.d.ts +76 -0
- package/dist/dist/core/state.d.ts +605 -0
- package/dist/dist/core/utils.d.ts +129 -0
- package/dist/dist/downloadMedia.d.ts +106 -0
- package/{dist-ts → dist}/dist/downloadMedia.js +19 -20
- package/dist/dist/errors/index.d.ts +18 -0
- package/dist/dist/extend.d.ts +20 -0
- package/dist/dist/fbns/fbns.client.d.ts +43 -0
- package/dist/dist/fbns/fbns.client.events.d.ts +0 -0
- package/{dist-ts → dist}/dist/fbns/fbns.client.js +4 -5
- package/dist/dist/fbns/fbns.device-auth.d.ts +9 -0
- package/{src-ts/dist/fbns/fbns.device-auth.ts → dist/dist/fbns/fbns.device-auth.js} +6 -3
- package/dist/dist/fbns/fbns.types.d.ts +0 -0
- package/dist/dist/fbns/fbns.utilities.d.ts +4 -0
- package/dist/dist/fbns/index.d.ts +2 -0
- package/dist/dist/index.d.ts +49 -0
- package/dist/dist/mqtt-shim.d.ts +1 -0
- package/dist/dist/mqttot/index.d.ts +2 -0
- package/dist/dist/mqttot/mqttot.client.d.ts +77 -0
- package/{dist-ts → dist}/dist/mqttot/mqttot.client.js +10 -10
- package/dist/dist/mqttot/mqttot.connect.request.packet.d.ts +1 -0
- package/dist/dist/mqttot/mqttot.connect.response.packet.d.ts +5 -0
- package/dist/dist/mqttot/mqttot.connection.d.ts +6 -0
- package/dist/dist/realtime/commands/commands.d.ts +19 -0
- package/dist/dist/realtime/commands/direct.commands.d.ts +142 -0
- package/dist/dist/realtime/commands/enhanced.direct.commands.d.ts +425 -0
- package/{dist-ts → dist}/dist/realtime/commands/enhanced.direct.commands.js +8 -10
- package/dist/dist/realtime/commands/index.d.ts +2 -0
- package/dist/dist/realtime/delta-sync.manager.d.ts +82 -0
- package/{dist-ts → dist}/dist/realtime/delta-sync.manager.js +7 -10
- package/dist/dist/realtime/features/dm-sender.d.ts +20 -0
- package/{src-ts/dist/realtime/features/dm-sender.ts → dist/dist/realtime/features/dm-sender.js} +6 -3
- package/dist/dist/realtime/features/error-handler.d.ts +33 -0
- package/{dist-ts → dist}/dist/realtime/features/error-handler.js +4 -4
- package/dist/dist/realtime/features/gap-handler.d.ts +19 -0
- package/dist/dist/realtime/features/persistent-logger.d.ts +28 -0
- package/{dist-ts → dist}/dist/realtime/features/persistent-logger.js +3 -3
- package/dist/dist/realtime/features/presence.manager.d.ts +24 -0
- package/{src-ts/dist/realtime/features/presence.manager.ts → dist/dist/realtime/features/presence.manager.js} +2 -1
- package/dist/dist/realtime/features/session-health-monitor.d.ts +93 -0
- package/{src-ts/dist/realtime/features/session-health-monitor.ts → dist/dist/realtime/features/session-health-monitor.js} +45 -65
- package/dist/dist/realtime/index.d.ts +9 -0
- package/dist/dist/realtime/messages/app-presence.event.d.ts +0 -0
- package/dist/dist/realtime/messages/index.d.ts +2 -0
- package/dist/dist/realtime/messages/message-sync.message.d.ts +1 -0
- package/dist/dist/realtime/messages/realtime-sub.direct.data.d.ts +0 -0
- package/dist/dist/realtime/messages/thread-update.message.d.ts +0 -0
- package/dist/dist/realtime/mixins/index.d.ts +2 -0
- package/dist/dist/realtime/mixins/message-sync.mixin.d.ts +38 -0
- package/{dist-ts → dist}/dist/realtime/mixins/message-sync.mixin.js +16 -18
- package/dist/dist/realtime/mixins/mixin.d.ts +4 -0
- package/dist/dist/realtime/mixins/presence-typing.mixin.d.ts +9 -0
- package/dist/dist/realtime/mixins/realtime-sub.mixin.d.ts +37 -0
- package/{dist-ts → dist}/dist/realtime/mixins/realtime-sub.mixin.js +4 -5
- package/dist/dist/realtime/parsers/graphql-parser.d.ts +18 -0
- package/dist/dist/realtime/parsers/graphql.parser.d.ts +10 -0
- package/{src-ts/dist/realtime/parsers/graphql.parser.ts → dist/dist/realtime/parsers/graphql.parser.js} +0 -1
- package/dist/dist/realtime/parsers/index.d.ts +2 -0
- package/dist/dist/realtime/parsers/iris-parser.d.ts +18 -0
- package/dist/dist/realtime/parsers/iris.parser.d.ts +3 -0
- package/dist/dist/realtime/parsers/json-parser.d.ts +18 -0
- package/dist/dist/realtime/parsers/json.parser.d.ts +6 -0
- package/dist/dist/realtime/parsers/parser.d.ts +0 -0
- package/dist/dist/realtime/parsers/region-hint-parser.d.ts +18 -0
- package/dist/dist/realtime/parsers/region-hint.parser.d.ts +4 -0
- package/dist/dist/realtime/parsers/skywalker-parser.d.ts +18 -0
- package/dist/dist/realtime/parsers/skywalker.parser.d.ts +7 -0
- package/dist/dist/realtime/parsers-advanced.d.ts +93 -0
- package/{dist-ts → dist}/dist/realtime/parsers-advanced.js +5 -8
- package/dist/dist/realtime/proto-parser.d.ts +27 -0
- package/{dist-ts → dist}/dist/realtime/proto-parser.js +1 -2
- package/dist/dist/realtime/protocols/iris.handshake.d.ts +41 -0
- package/dist/dist/realtime/protocols/proto-definitions.d.ts +0 -0
- package/dist/dist/realtime/protocols/skywalker.protocol.d.ts +20 -0
- package/{src-ts/dist/realtime/protocols/skywalker.protocol.ts → dist/dist/realtime/protocols/skywalker.protocol.js} +8 -5
- package/dist/dist/realtime/realtime.client.d.ts +169 -0
- package/dist/dist/realtime/realtime.client.events.d.ts +0 -0
- package/{dist-ts → dist}/dist/realtime/realtime.client.js +75 -86
- package/dist/dist/realtime/realtime.service.d.ts +109 -0
- package/dist/dist/realtime/reconnect.manager.d.ts +15 -0
- package/dist/dist/realtime/session.manager.d.ts +25 -0
- package/dist/dist/realtime/subscriptions/graphql.subscription.d.ts +4 -0
- package/dist/dist/realtime/subscriptions/index.d.ts +2 -0
- package/dist/dist/realtime/subscriptions/skywalker.subscription.d.ts +4 -0
- package/dist/dist/realtime/topic-map.d.ts +97 -0
- package/dist/dist/realtime/topic.d.ts +71 -0
- package/dist/dist/repositories/account.repository.d.ts +72 -0
- package/{dist-ts → dist}/dist/repositories/account.repository.js +4 -6
- package/dist/dist/repositories/bloks.repository.d.ts +6 -0
- package/dist/dist/repositories/captcha.repository.d.ts +6 -0
- package/dist/dist/repositories/challenge.repository.d.ts +12 -0
- package/{dist-ts → dist}/dist/repositories/challenge.repository.js +1 -2
- package/dist/dist/repositories/clip.repository.d.ts +10 -0
- package/dist/dist/repositories/close-friends.repository.d.ts +8 -0
- package/dist/dist/repositories/collection.repository.d.ts +8 -0
- package/dist/dist/repositories/direct-thread.repository.d.ts +88 -0
- package/{dist-ts → dist}/dist/repositories/direct-thread.repository.js +7 -9
- package/dist/dist/repositories/direct.repository.d.ts +22 -0
- package/{dist-ts → dist}/dist/repositories/direct.repository.js +4 -5
- package/dist/dist/repositories/explore.repository.d.ts +7 -0
- package/dist/dist/repositories/fbsearch.repository.d.ts +14 -0
- package/dist/dist/repositories/feed.repository.d.ts +19 -0
- package/dist/dist/repositories/friendship.repository.d.ts +26 -0
- package/dist/dist/repositories/fundraiser.repository.d.ts +6 -0
- package/dist/dist/repositories/hashtag.repository.d.ts +11 -0
- package/dist/dist/repositories/highlights.repository.d.ts +11 -0
- package/dist/dist/repositories/insights.repository.d.ts +8 -0
- package/dist/dist/repositories/location.repository.d.ts +9 -0
- package/dist/dist/repositories/media.repository.d.ts +41 -0
- package/{dist-ts → dist}/dist/repositories/media.repository.js +1 -2
- package/dist/dist/repositories/multiple-accounts.repository.d.ts +7 -0
- package/dist/dist/repositories/news.repository.d.ts +6 -0
- package/dist/dist/repositories/note.repository.d.ts +8 -0
- package/dist/dist/repositories/notification.repository.d.ts +33 -0
- package/{dist-ts → dist}/dist/repositories/notification.repository.js +1 -1
- package/dist/dist/repositories/share.repository.d.ts +12 -0
- package/dist/dist/repositories/signup.repository.d.ts +19 -0
- package/dist/dist/repositories/story.repository.d.ts +23 -0
- package/{dist-ts → dist}/dist/repositories/story.repository.js +1 -2
- package/dist/dist/repositories/timeline.repository.d.ts +7 -0
- package/dist/dist/repositories/totp.repository.d.ts +14 -0
- package/dist/dist/repositories/track.repository.d.ts +7 -0
- package/{dist-ts → dist}/dist/repositories/track.repository.js +1 -2
- package/dist/dist/repositories/upload.repository.d.ts +30 -0
- package/{dist-ts → dist}/dist/repositories/upload.repository.js +4 -5
- package/dist/dist/repositories/user.repository.d.ts +52 -0
- package/dist/dist/sendmedia/index.d.ts +12 -0
- package/dist/dist/sendmedia/sendFile.d.ts +8 -0
- package/dist/dist/sendmedia/sendPhoto.d.ts +26 -0
- package/dist/dist/sendmedia/sendRavenPhoto.d.ts +14 -0
- package/{dist-ts → dist}/dist/sendmedia/sendRavenPhoto.js +4 -5
- package/dist/dist/sendmedia/sendRavenVideo.d.ts +15 -0
- package/{dist-ts → dist}/dist/sendmedia/sendRavenVideo.js +4 -5
- package/dist/dist/sendmedia/uploadPhoto.d.ts +8 -0
- package/dist/dist/sendmedia/uploadfFile.d.ts +13 -0
- package/{dist-ts → dist}/dist/sendmedia/uploadfFile.js +3 -4
- package/dist/dist/services/live.service.d.ts +13 -0
- package/dist/dist/services/search.service.d.ts +11 -0
- package/dist/dist/shared/index.d.ts +4 -0
- package/{src-ts/dist/shared/index.ts → dist/dist/shared/index.js} +14 -13
- package/dist/dist/shared/shared.d.ts +15 -0
- package/dist/dist/thrift/index.d.ts +2 -0
- package/dist/dist/thrift/thrift.d.ts +11 -0
- package/dist/dist/thrift/thrift.reading.d.ts +49 -0
- package/{dist-ts → dist}/dist/thrift/thrift.reading.js +3 -5
- package/dist/dist/thrift/thrift.writing.d.ts +49 -0
- package/{dist-ts → dist}/dist/thrift/thrift.writing.js +2 -4
- package/dist/dist/types/index.d.ts +28 -0
- package/dist/dist/useMultiFileAuthState.d.ts +267 -0
- package/{dist-ts → dist}/dist/useMultiFileAuthState.js +47 -61
- package/dist/dist/utils/helper-1.d.ts +0 -0
- package/dist/dist/utils/helper-10.d.ts +0 -0
- package/dist/dist/utils/helper-11.d.ts +0 -0
- package/dist/dist/utils/helper-12.d.ts +0 -0
- package/dist/dist/utils/helper-13.d.ts +0 -0
- package/dist/dist/utils/helper-14.d.ts +0 -0
- package/dist/dist/utils/helper-15.d.ts +0 -0
- package/dist/dist/utils/helper-16.d.ts +0 -0
- package/dist/dist/utils/helper-17.d.ts +0 -0
- package/dist/dist/utils/helper-18.d.ts +0 -0
- package/dist/dist/utils/helper-19.d.ts +0 -0
- package/dist/dist/utils/helper-2.d.ts +0 -0
- package/dist/dist/utils/helper-20.d.ts +0 -0
- package/dist/dist/utils/helper-21.d.ts +0 -0
- package/dist/dist/utils/helper-22.d.ts +0 -0
- package/dist/dist/utils/helper-23.d.ts +0 -0
- package/dist/dist/utils/helper-24.d.ts +0 -0
- package/dist/dist/utils/helper-25.d.ts +0 -0
- package/dist/dist/utils/helper-26.d.ts +0 -0
- package/dist/dist/utils/helper-27.d.ts +0 -0
- package/dist/dist/utils/helper-28.d.ts +0 -0
- package/dist/dist/utils/helper-29.d.ts +0 -0
- package/dist/dist/utils/helper-3.d.ts +0 -0
- package/dist/dist/utils/helper-30.d.ts +0 -0
- package/dist/dist/utils/helper-4.d.ts +0 -0
- package/dist/dist/utils/helper-5.d.ts +0 -0
- package/dist/dist/utils/helper-6.d.ts +0 -0
- package/dist/dist/utils/helper-7.d.ts +0 -0
- package/dist/dist/utils/helper-8.d.ts +0 -0
- package/dist/dist/utils/helper-9.d.ts +0 -0
- package/dist/dist/utils/index.d.ts +56 -0
- package/{dist-ts → dist}/dist/utils/index.js +1 -2
- package/dist/dist/utils/insta-mqtt-helper.d.ts +30 -0
- package/dist/examples/listen-to-messages.d.ts +4 -0
- package/{dist-ts → dist}/examples/listen-to-messages.js +1 -2
- package/package.json +37 -42
- package/dist-ts/dist/fbns/fbns.device-auth.js +0 -59
- package/dist-ts/dist/realtime/features/dm-sender.js +0 -94
- package/dist-ts/dist/realtime/features/presence.manager.js +0 -68
- package/dist-ts/dist/realtime/features/session-health-monitor.js +0 -327
- package/dist-ts/dist/realtime/parsers/graphql.parser.js +0 -22
- package/dist-ts/dist/realtime/protocols/skywalker.protocol.js +0 -96
- package/dist-ts/dist/shared/index.js +0 -98
- package/examples/listen-to-messages.js +0 -86
- package/src-ts/dist/constants/constants.ts +0 -342
- package/src-ts/dist/constants/index.ts +0 -58
- package/src-ts/dist/core/client.ts +0 -419
- package/src-ts/dist/core/nav-chain.ts +0 -282
- package/src-ts/dist/core/repository.ts +0 -7
- package/src-ts/dist/core/request.ts +0 -395
- package/src-ts/dist/core/state.ts +0 -1484
- package/src-ts/dist/core/utils.ts +0 -786
- package/src-ts/dist/downloadMedia.ts +0 -381
- package/src-ts/dist/errors/index.ts +0 -38
- package/src-ts/dist/extend.ts +0 -167
- package/src-ts/dist/fbns/fbns.client.events.ts +0 -3
- package/src-ts/dist/fbns/fbns.client.ts +0 -252
- package/src-ts/dist/fbns/fbns.types.ts +0 -3
- package/src-ts/dist/fbns/fbns.utilities.ts +0 -79
- package/src-ts/dist/fbns/index.ts +0 -21
- package/src-ts/dist/index.ts +0 -139
- package/src-ts/dist/mqtt-shim.ts +0 -15
- package/src-ts/dist/mqttot/index.ts +0 -21
- package/src-ts/dist/mqttot/mqttot.client.ts +0 -318
- package/src-ts/dist/mqttot/mqttot.connect.request.packet.ts +0 -9
- package/src-ts/dist/mqttot/mqttot.connect.response.packet.ts +0 -24
- package/src-ts/dist/mqttot/mqttot.connection.ts +0 -77
- package/src-ts/dist/realtime/commands/commands.ts +0 -71
- package/src-ts/dist/realtime/commands/direct.commands.ts +0 -417
- package/src-ts/dist/realtime/commands/enhanced.direct.commands.ts +0 -1731
- package/src-ts/dist/realtime/commands/index.ts +0 -20
- package/src-ts/dist/realtime/delta-sync.manager.ts +0 -293
- package/src-ts/dist/realtime/features/error-handler.ts +0 -185
- package/src-ts/dist/realtime/features/gap-handler.ts +0 -61
- package/src-ts/dist/realtime/features/persistent-logger.ts +0 -186
- package/src-ts/dist/realtime/index.ts +0 -30
- package/src-ts/dist/realtime/messages/app-presence.event.ts +0 -3
- package/src-ts/dist/realtime/messages/index.ts +0 -20
- package/src-ts/dist/realtime/messages/message-sync.message.ts +0 -43
- package/src-ts/dist/realtime/messages/realtime-sub.direct.data.ts +0 -3
- package/src-ts/dist/realtime/messages/thread-update.message.ts +0 -3
- package/src-ts/dist/realtime/mixins/index.ts +0 -20
- package/src-ts/dist/realtime/mixins/message-sync.mixin.ts +0 -596
- package/src-ts/dist/realtime/mixins/mixin.ts +0 -41
- package/src-ts/dist/realtime/mixins/presence-typing.mixin.ts +0 -33
- package/src-ts/dist/realtime/mixins/realtime-sub.mixin.ts +0 -181
- package/src-ts/dist/realtime/parsers/graphql-parser.ts +0 -43
- package/src-ts/dist/realtime/parsers/index.ts +0 -23
- package/src-ts/dist/realtime/parsers/iris-parser.ts +0 -43
- package/src-ts/dist/realtime/parsers/iris.parser.ts +0 -10
- package/src-ts/dist/realtime/parsers/json-parser.ts +0 -43
- package/src-ts/dist/realtime/parsers/json.parser.ts +0 -10
- package/src-ts/dist/realtime/parsers/parser.ts +0 -3
- package/src-ts/dist/realtime/parsers/region-hint-parser.ts +0 -43
- package/src-ts/dist/realtime/parsers/region-hint.parser.ts +0 -15
- package/src-ts/dist/realtime/parsers/skywalker-parser.ts +0 -43
- package/src-ts/dist/realtime/parsers/skywalker.parser.ts +0 -15
- package/src-ts/dist/realtime/parsers-advanced.ts +0 -158
- package/src-ts/dist/realtime/proto-parser.ts +0 -195
- package/src-ts/dist/realtime/protocols/iris.handshake.ts +0 -74
- package/src-ts/dist/realtime/protocols/proto-definitions.ts +0 -80
- package/src-ts/dist/realtime/realtime.client.events.ts +0 -3
- package/src-ts/dist/realtime/realtime.client.ts +0 -1996
- package/src-ts/dist/realtime/realtime.service.ts +0 -462
- package/src-ts/dist/realtime/reconnect.manager.ts +0 -88
- package/src-ts/dist/realtime/session.manager.ts +0 -121
- package/src-ts/dist/realtime/subscriptions/graphql.subscription.ts +0 -99
- package/src-ts/dist/realtime/subscriptions/index.ts +0 -19
- package/src-ts/dist/realtime/subscriptions/skywalker.subscription.ts +0 -13
- package/src-ts/dist/realtime/topic-map.ts +0 -71
- package/src-ts/dist/realtime/topic.ts +0 -80
- package/src-ts/dist/repositories/account.repository.ts +0 -1384
- package/src-ts/dist/repositories/bloks.repository.ts +0 -70
- package/src-ts/dist/repositories/captcha.repository.ts +0 -44
- package/src-ts/dist/repositories/challenge.repository.ts +0 -120
- package/src-ts/dist/repositories/clip.repository.ts +0 -165
- package/src-ts/dist/repositories/close-friends.repository.ts +0 -46
- package/src-ts/dist/repositories/collection.repository.ts +0 -68
- package/src-ts/dist/repositories/direct-thread.repository.ts +0 -446
- package/src-ts/dist/repositories/direct.repository.ts +0 -266
- package/src-ts/dist/repositories/explore.repository.ts +0 -70
- package/src-ts/dist/repositories/fbsearch.repository.ts +0 -140
- package/src-ts/dist/repositories/feed.repository.ts +0 -245
- package/src-ts/dist/repositories/friendship.repository.ts +0 -296
- package/src-ts/dist/repositories/fundraiser.repository.ts +0 -49
- package/src-ts/dist/repositories/hashtag.repository.ts +0 -99
- package/src-ts/dist/repositories/highlights.repository.ts +0 -121
- package/src-ts/dist/repositories/insights.repository.ts +0 -82
- package/src-ts/dist/repositories/location.repository.ts +0 -84
- package/src-ts/dist/repositories/media.repository.ts +0 -395
- package/src-ts/dist/repositories/multiple-accounts.repository.ts +0 -41
- package/src-ts/dist/repositories/news.repository.ts +0 -35
- package/src-ts/dist/repositories/note.repository.ts +0 -57
- package/src-ts/dist/repositories/notification.repository.ts +0 -79
- package/src-ts/dist/repositories/share.repository.ts +0 -35
- package/src-ts/dist/repositories/signup.repository.ts +0 -218
- package/src-ts/dist/repositories/story.repository.ts +0 -290
- package/src-ts/dist/repositories/timeline.repository.ts +0 -60
- package/src-ts/dist/repositories/totp.repository.ts +0 -139
- package/src-ts/dist/repositories/track.repository.ts +0 -53
- package/src-ts/dist/repositories/upload.repository.ts +0 -204
- package/src-ts/dist/repositories/user.repository.ts +0 -360
- package/src-ts/dist/sendmedia/index.ts +0 -27
- package/src-ts/dist/sendmedia/sendFile.ts +0 -72
- package/src-ts/dist/sendmedia/sendPhoto.ts +0 -142
- package/src-ts/dist/sendmedia/sendRavenPhoto.ts +0 -153
- package/src-ts/dist/sendmedia/sendRavenVideo.ts +0 -158
- package/src-ts/dist/sendmedia/uploadPhoto.ts +0 -107
- package/src-ts/dist/sendmedia/uploadfFile.ts +0 -130
- package/src-ts/dist/services/live.service.ts +0 -139
- package/src-ts/dist/services/search.service.ts +0 -115
- package/src-ts/dist/shared/shared.ts +0 -86
- package/src-ts/dist/thrift/index.ts +0 -20
- package/src-ts/dist/thrift/thrift.reading.ts +0 -368
- package/src-ts/dist/thrift/thrift.ts +0 -111
- package/src-ts/dist/thrift/thrift.writing.ts +0 -396
- package/src-ts/dist/types/index.ts +0 -285
- package/src-ts/dist/useMultiFileAuthState.ts +0 -1800
- package/src-ts/dist/utils/helper-1.ts +0 -1
- package/src-ts/dist/utils/helper-10.ts +0 -1
- package/src-ts/dist/utils/helper-11.ts +0 -1
- package/src-ts/dist/utils/helper-12.ts +0 -1
- package/src-ts/dist/utils/helper-13.ts +0 -1
- package/src-ts/dist/utils/helper-14.ts +0 -1
- package/src-ts/dist/utils/helper-15.ts +0 -1
- package/src-ts/dist/utils/helper-16.ts +0 -1
- package/src-ts/dist/utils/helper-17.ts +0 -1
- package/src-ts/dist/utils/helper-18.ts +0 -1
- package/src-ts/dist/utils/helper-19.ts +0 -1
- package/src-ts/dist/utils/helper-2.ts +0 -1
- package/src-ts/dist/utils/helper-20.ts +0 -1
- package/src-ts/dist/utils/helper-21.ts +0 -1
- package/src-ts/dist/utils/helper-22.ts +0 -1
- package/src-ts/dist/utils/helper-23.ts +0 -1
- package/src-ts/dist/utils/helper-24.ts +0 -1
- package/src-ts/dist/utils/helper-25.ts +0 -1
- package/src-ts/dist/utils/helper-26.ts +0 -1
- package/src-ts/dist/utils/helper-27.ts +0 -1
- package/src-ts/dist/utils/helper-28.ts +0 -1
- package/src-ts/dist/utils/helper-29.ts +0 -1
- package/src-ts/dist/utils/helper-3.ts +0 -1
- package/src-ts/dist/utils/helper-30.ts +0 -1
- package/src-ts/dist/utils/helper-4.ts +0 -1
- package/src-ts/dist/utils/helper-5.ts +0 -1
- package/src-ts/dist/utils/helper-6.ts +0 -1
- package/src-ts/dist/utils/helper-7.ts +0 -1
- package/src-ts/dist/utils/helper-8.ts +0 -1
- package/src-ts/dist/utils/helper-9.ts +0 -1
- package/src-ts/dist/utils/index.ts +0 -280
- package/src-ts/dist/utils/insta-mqtt-helper.ts +0 -128
- package/src-ts/examples/listen-to-messages.ts +0 -86
- /package/{dist-ts → dist}/dist/constants/constants.js +0 -0
- /package/{dist-ts → dist}/dist/constants/index.js +0 -0
- /package/{dist-ts → dist}/dist/core/client.js +0 -0
- /package/{dist-ts → dist}/dist/core/nav-chain.js +0 -0
- /package/{dist-ts → dist}/dist/core/repository.js +0 -0
- /package/{dist-ts → dist}/dist/core/request.js +0 -0
- /package/{dist-ts → dist}/dist/core/state.js +0 -0
- /package/{dist-ts → dist}/dist/core/utils.js +0 -0
- /package/{dist-ts → dist}/dist/errors/index.js +0 -0
- /package/{dist-ts → dist}/dist/extend.js +0 -0
- /package/{dist-ts → dist}/dist/fbns/fbns.client.events.js +0 -0
- /package/{dist-ts → dist}/dist/fbns/fbns.types.js +0 -0
- /package/{dist-ts → dist}/dist/fbns/fbns.utilities.js +0 -0
- /package/{dist-ts → dist}/dist/fbns/index.js +0 -0
- /package/{dist-ts → dist}/dist/index.js +0 -0
- /package/{dist-ts → dist}/dist/mqtt-shim.js +0 -0
- /package/{dist-ts → dist}/dist/mqttot/index.js +0 -0
- /package/{dist-ts → dist}/dist/mqttot/mqttot.connect.request.packet.js +0 -0
- /package/{dist-ts → dist}/dist/mqttot/mqttot.connect.response.packet.js +0 -0
- /package/{dist-ts → dist}/dist/mqttot/mqttot.connection.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/commands/commands.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/commands/direct.commands.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/commands/index.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/features/gap-handler.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/index.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/messages/app-presence.event.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/messages/index.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/messages/message-sync.message.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/messages/realtime-sub.direct.data.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/messages/thread-update.message.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/mixins/index.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/mixins/mixin.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/mixins/presence-typing.mixin.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/graphql-parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/index.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/iris-parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/iris.parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/json-parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/json.parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/region-hint-parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/region-hint.parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/skywalker-parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/parsers/skywalker.parser.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/protocols/iris.handshake.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/protocols/proto-definitions.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/realtime.client.events.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/realtime.service.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/reconnect.manager.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/session.manager.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/subscriptions/graphql.subscription.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/subscriptions/index.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/subscriptions/skywalker.subscription.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/topic-map.js +0 -0
- /package/{dist-ts → dist}/dist/realtime/topic.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/bloks.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/captcha.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/clip.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/close-friends.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/collection.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/explore.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/fbsearch.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/feed.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/friendship.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/fundraiser.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/hashtag.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/highlights.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/insights.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/location.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/multiple-accounts.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/news.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/note.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/share.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/signup.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/timeline.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/totp.repository.js +0 -0
- /package/{dist-ts → dist}/dist/repositories/user.repository.js +0 -0
- /package/{dist-ts → dist}/dist/sendmedia/index.js +0 -0
- /package/{dist-ts → dist}/dist/sendmedia/sendFile.js +0 -0
- /package/{dist-ts → dist}/dist/sendmedia/sendPhoto.js +0 -0
- /package/{dist-ts → dist}/dist/sendmedia/uploadPhoto.js +0 -0
- /package/{dist-ts → dist}/dist/services/live.service.js +0 -0
- /package/{dist-ts → dist}/dist/services/search.service.js +0 -0
- /package/{dist-ts → dist}/dist/shared/shared.js +0 -0
- /package/{dist-ts → dist}/dist/thrift/index.js +0 -0
- /package/{dist-ts → dist}/dist/thrift/thrift.js +0 -0
- /package/{dist-ts → dist}/dist/types/index.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-1.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-10.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-11.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-12.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-13.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-14.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-15.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-16.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-17.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-18.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-19.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-2.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-20.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-21.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-22.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-23.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-24.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-25.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-26.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-27.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-28.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-29.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-3.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-30.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-4.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-5.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-6.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-7.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-8.js +0 -0
- /package/{dist-ts → dist}/dist/utils/helper-9.js +0 -0
- /package/{dist-ts → dist}/dist/utils/insta-mqtt-helper.js +0 -0
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
const { v4: uuidv4 } = require('uuid');
|
|
2
|
-
const axios = require('axios');
|
|
3
|
-
|
|
4
|
-
function buildRavenPhotoRuploadParams(uploadId) {
|
|
5
|
-
return {
|
|
6
|
-
retry_context: JSON.stringify({ num_step_auto_retry: 0, num_reupload: 0, num_step_manual_retry: 0 }),
|
|
7
|
-
media_type: '1',
|
|
8
|
-
upload_id: uploadId.toString(),
|
|
9
|
-
image_compression: JSON.stringify({ lib_name: 'moz', lib_version: '3.1.m', quality: '95' }),
|
|
10
|
-
xsharing_user_ids: JSON.stringify([]),
|
|
11
|
-
direct_v2: '1',
|
|
12
|
-
is_optimistic_upload: 'false',
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async function sendRavenPhoto(session, photoBuffer, options = {}) {
|
|
17
|
-
const {
|
|
18
|
-
threadId,
|
|
19
|
-
viewMode = 'replayable',
|
|
20
|
-
mimeType = 'image/jpeg',
|
|
21
|
-
} = options;
|
|
22
|
-
|
|
23
|
-
if (!photoBuffer || !Buffer.isBuffer(photoBuffer) || photoBuffer.length === 0) {
|
|
24
|
-
throw new Error('sendRavenPhoto: photoBuffer must be a non-empty Buffer.');
|
|
25
|
-
}
|
|
26
|
-
if (!threadId) {
|
|
27
|
-
throw new Error('sendRavenPhoto: threadId is required.');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const uploadId = Date.now().toString();
|
|
31
|
-
const randomSuffix = Math.floor(Math.random() * (9999999999 - 1000000000) + 1000000000);
|
|
32
|
-
const name = `${uploadId}_0_${randomSuffix}`;
|
|
33
|
-
const waterfallId = uuidv4();
|
|
34
|
-
const ruploadParams = buildRavenPhotoRuploadParams(uploadId);
|
|
35
|
-
|
|
36
|
-
const defaultHeaders = session.request.getDefaultHeaders();
|
|
37
|
-
|
|
38
|
-
const messengerUploadHeaders = {
|
|
39
|
-
...defaultHeaders,
|
|
40
|
-
'X_FB_PHOTO_WATERFALL_ID': waterfallId,
|
|
41
|
-
'X-Entity-Type': mimeType,
|
|
42
|
-
'Offset': '0',
|
|
43
|
-
'X-Instagram-Rupload-Params': JSON.stringify(ruploadParams),
|
|
44
|
-
'X-Entity-Name': name,
|
|
45
|
-
'X-Entity-Length': String(photoBuffer.length),
|
|
46
|
-
'Content-Type': 'application/octet-stream',
|
|
47
|
-
'Content-Length': String(photoBuffer.length),
|
|
48
|
-
'ephemeral_media_view_mode': viewMode === 'replayable' ? '1' : '0',
|
|
49
|
-
'ig_raven_metadata': '{}',
|
|
50
|
-
'image_type': 'FILE_ATTACHMENT',
|
|
51
|
-
'Host': 'rupload.facebook.com',
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const uploadResp = await axios({
|
|
55
|
-
url: `https://rupload.facebook.com/messenger_image/${name}`,
|
|
56
|
-
method: 'POST',
|
|
57
|
-
headers: messengerUploadHeaders,
|
|
58
|
-
data: photoBuffer,
|
|
59
|
-
maxBodyLength: Infinity,
|
|
60
|
-
maxContentLength: Infinity,
|
|
61
|
-
transformRequest: [(d) => d],
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
const uploadParsed = uploadResp.data;
|
|
65
|
-
const serverUploadId = (uploadParsed.upload_id || uploadId).toString();
|
|
66
|
-
const attachmentFbid = uploadParsed.media_id
|
|
67
|
-
|| (uploadParsed.media && uploadParsed.media.pk)
|
|
68
|
-
|| (uploadParsed.media && uploadParsed.media.id)
|
|
69
|
-
|| null;
|
|
70
|
-
|
|
71
|
-
const clientContext = BigInt(Math.floor(Math.random() * 2**62)).toString();
|
|
72
|
-
const compositionId = uuidv4();
|
|
73
|
-
const cameraSessionId = uuidv4();
|
|
74
|
-
const now = Math.floor(Date.now() / 1000);
|
|
75
|
-
|
|
76
|
-
const form = {
|
|
77
|
-
allow_multi_configures: '1',
|
|
78
|
-
recipient_users: '[]',
|
|
79
|
-
view_mode: viewMode,
|
|
80
|
-
is_shh_mode: '0',
|
|
81
|
-
camera_entry_point: '3',
|
|
82
|
-
thread_ids: JSON.stringify([String(threadId)]),
|
|
83
|
-
reshare_mode: 'allow_reshare',
|
|
84
|
-
original_media_type: '1',
|
|
85
|
-
send_attribution: 'direct_thread_camera',
|
|
86
|
-
client_context: clientContext,
|
|
87
|
-
camera_session_id: cameraSessionId,
|
|
88
|
-
include_e2ee_mentioned_user_list: '1',
|
|
89
|
-
hide_from_profile_grid: 'false',
|
|
90
|
-
scene_capture_type: '',
|
|
91
|
-
timezone_offset: String(new Date().getTimezoneOffset() * -60),
|
|
92
|
-
client_shared_at: String(now),
|
|
93
|
-
configure_mode: '2',
|
|
94
|
-
source_type: '4',
|
|
95
|
-
camera_position: 'unknown',
|
|
96
|
-
_uid: String(session.state.cookieUserId || session.state.igUserId),
|
|
97
|
-
device_id: session.state.deviceId,
|
|
98
|
-
composition_id: compositionId,
|
|
99
|
-
mutation_token: clientContext,
|
|
100
|
-
_uuid: session.state.uuid,
|
|
101
|
-
creation_tool_info: '[]',
|
|
102
|
-
creation_surface: 'camera',
|
|
103
|
-
capture_type: 'normal',
|
|
104
|
-
audience: 'default',
|
|
105
|
-
upload_id: serverUploadId,
|
|
106
|
-
client_timestamp: String(now),
|
|
107
|
-
sampled: 'true',
|
|
108
|
-
media_transformation_info: JSON.stringify({
|
|
109
|
-
width: '720', height: '1280',
|
|
110
|
-
x_transform: '0', y_transform: '0',
|
|
111
|
-
zoom: '1.0', rotation: '0.0', background_coverage: '0.0',
|
|
112
|
-
}),
|
|
113
|
-
edits: JSON.stringify({ filter_type: 0, filter_strength: 0.5, crop_original_size: [720.0, 1280.0] }),
|
|
114
|
-
extra: JSON.stringify({ source_width: 720, source_height: 1280 }),
|
|
115
|
-
device: JSON.stringify({
|
|
116
|
-
manufacturer: session.state.devicePayload?.manufacturer || 'samsung',
|
|
117
|
-
model: session.state.devicePayload?.model || 'SM-S938B',
|
|
118
|
-
android_version: session.state.devicePayload?.android_version || 35,
|
|
119
|
-
android_release: session.state.devicePayload?.android_release || '15',
|
|
120
|
-
}),
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
if (attachmentFbid) {
|
|
124
|
-
form.attachment_fbid = String(attachmentFbid);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const signedForm = (session.request && typeof session.request.sign === 'function')
|
|
128
|
-
? session.request.sign(form)
|
|
129
|
-
: form;
|
|
130
|
-
|
|
131
|
-
const broadcastResponse = await session.request.send({
|
|
132
|
-
url: '/api/v1/direct_v2/threads/broadcast/raven_attachment/',
|
|
133
|
-
method: 'POST',
|
|
134
|
-
form: signedForm,
|
|
135
|
-
qs: { use_unified_inbox: true },
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
const body = broadcastResponse && (broadcastResponse.body || broadcastResponse.data || broadcastResponse);
|
|
139
|
-
return typeof body === 'string' ? JSON.parse(body) : body;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
async function sendRavenPhotoOnce(session, photoBuffer, options = {}) {
|
|
143
|
-
return sendRavenPhoto(session, photoBuffer, { ...options, viewMode: 'once' });
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
async function sendRavenPhotoReplayable(session, photoBuffer, options = {}) {
|
|
147
|
-
return sendRavenPhoto(session, photoBuffer, { ...options, viewMode: 'replayable' });
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
module.exports = sendRavenPhoto;
|
|
151
|
-
module.exports.sendRavenPhoto = sendRavenPhoto;
|
|
152
|
-
module.exports.sendRavenPhotoOnce = sendRavenPhotoOnce;
|
|
153
|
-
module.exports.sendRavenPhotoReplayable = sendRavenPhotoReplayable;
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
const { v4: uuidv4 } = require('uuid');
|
|
2
|
-
const axios = require('axios');
|
|
3
|
-
|
|
4
|
-
function buildRavenVideoRuploadParams(uploadId, options = {}) {
|
|
5
|
-
return {
|
|
6
|
-
retry_context: JSON.stringify({ num_step_auto_retry: 0, num_reupload: 0, num_step_manual_retry: 0 }),
|
|
7
|
-
media_type: '2',
|
|
8
|
-
upload_id: uploadId.toString(),
|
|
9
|
-
upload_media_duration_ms: String(Math.round((options.duration || 0) * 1000)),
|
|
10
|
-
upload_media_width: String(options.width || 720),
|
|
11
|
-
upload_media_height: String(options.height || 1280),
|
|
12
|
-
xsharing_user_ids: JSON.stringify([]),
|
|
13
|
-
direct_v2: '1',
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async function sendRavenVideo(session, videoBuffer, options = {}) {
|
|
18
|
-
const {
|
|
19
|
-
threadId,
|
|
20
|
-
viewMode = 'replayable',
|
|
21
|
-
duration = 0,
|
|
22
|
-
width = 720,
|
|
23
|
-
height = 1280,
|
|
24
|
-
} = options;
|
|
25
|
-
|
|
26
|
-
if (!videoBuffer || !Buffer.isBuffer(videoBuffer) || videoBuffer.length === 0) {
|
|
27
|
-
throw new Error('sendRavenVideo: videoBuffer must be a non-empty Buffer.');
|
|
28
|
-
}
|
|
29
|
-
if (!threadId) {
|
|
30
|
-
throw new Error('sendRavenVideo: threadId is required.');
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const uploadId = Date.now().toString();
|
|
34
|
-
const randomSuffix = Math.floor(Math.random() * (9999999999 - 1000000000) + 1000000000);
|
|
35
|
-
const name = `${uploadId}_0_${randomSuffix}`;
|
|
36
|
-
const waterfallId = uuidv4();
|
|
37
|
-
const ruploadParams = buildRavenVideoRuploadParams(uploadId, { duration, width, height });
|
|
38
|
-
|
|
39
|
-
const defaultHeaders = session.request.getDefaultHeaders();
|
|
40
|
-
|
|
41
|
-
const messengerUploadHeaders = {
|
|
42
|
-
...defaultHeaders,
|
|
43
|
-
'X_FB_VIDEO_WATERFALL_ID': waterfallId,
|
|
44
|
-
'X-Entity-Type': 'video/mp4',
|
|
45
|
-
'Offset': '0',
|
|
46
|
-
'X-Instagram-Rupload-Params': JSON.stringify(ruploadParams),
|
|
47
|
-
'X-Entity-Name': name,
|
|
48
|
-
'X-Entity-Length': String(videoBuffer.length),
|
|
49
|
-
'Content-Type': 'application/octet-stream',
|
|
50
|
-
'Content-Length': String(videoBuffer.length),
|
|
51
|
-
'ephemeral_media_view_mode': '1',
|
|
52
|
-
'ig_raven_metadata': '{}',
|
|
53
|
-
'video_type': 'FILE_ATTACHMENT',
|
|
54
|
-
'x-fb-congestion-signal': '1',
|
|
55
|
-
'Host': 'rupload.facebook.com',
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const uploadResp = await axios({
|
|
59
|
-
url: `https://rupload.facebook.com/messenger_video/${name}`,
|
|
60
|
-
method: 'POST',
|
|
61
|
-
headers: messengerUploadHeaders,
|
|
62
|
-
data: videoBuffer,
|
|
63
|
-
maxBodyLength: Infinity,
|
|
64
|
-
maxContentLength: Infinity,
|
|
65
|
-
transformRequest: [(d) => d],
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
const uploadParsed = uploadResp.data;
|
|
69
|
-
const serverUploadId = (uploadParsed.upload_id || uploadId).toString();
|
|
70
|
-
const attachmentFbid = uploadParsed.media_id
|
|
71
|
-
|| (uploadParsed.media && uploadParsed.media.pk)
|
|
72
|
-
|| (uploadParsed.media && uploadParsed.media.id)
|
|
73
|
-
|| null;
|
|
74
|
-
|
|
75
|
-
const clientContext = BigInt(Math.floor(Math.random() * 2**62)).toString();
|
|
76
|
-
const compositionId = uuidv4();
|
|
77
|
-
const cameraSessionId = uuidv4();
|
|
78
|
-
const now = Math.floor(Date.now() / 1000);
|
|
79
|
-
|
|
80
|
-
const form = {
|
|
81
|
-
allow_multi_configures: '1',
|
|
82
|
-
recipient_users: '[]',
|
|
83
|
-
view_mode: viewMode,
|
|
84
|
-
is_shh_mode: '0',
|
|
85
|
-
camera_entry_point: '3',
|
|
86
|
-
thread_ids: JSON.stringify([String(threadId)]),
|
|
87
|
-
reshare_mode: 'allow_reshare',
|
|
88
|
-
original_media_type: '1',
|
|
89
|
-
send_attribution: 'direct_thread_camera',
|
|
90
|
-
client_context: clientContext,
|
|
91
|
-
camera_session_id: cameraSessionId,
|
|
92
|
-
include_e2ee_mentioned_user_list: '1',
|
|
93
|
-
hide_from_profile_grid: 'false',
|
|
94
|
-
scene_capture_type: '',
|
|
95
|
-
timezone_offset: String(new Date().getTimezoneOffset() * -60),
|
|
96
|
-
client_shared_at: String(now),
|
|
97
|
-
configure_mode: '2',
|
|
98
|
-
source_type: '4',
|
|
99
|
-
camera_position: 'unknown',
|
|
100
|
-
_uid: String(session.state.cookieUserId || session.state.igUserId),
|
|
101
|
-
device_id: session.state.deviceId,
|
|
102
|
-
composition_id: compositionId,
|
|
103
|
-
mutation_token: clientContext,
|
|
104
|
-
_uuid: session.state.uuid,
|
|
105
|
-
creation_tool_info: '[]',
|
|
106
|
-
creation_surface: 'camera',
|
|
107
|
-
capture_type: 'normal',
|
|
108
|
-
audience: 'default',
|
|
109
|
-
upload_id: serverUploadId,
|
|
110
|
-
client_timestamp: String(now),
|
|
111
|
-
sampled: 'true',
|
|
112
|
-
video_result: '',
|
|
113
|
-
media_type: '1',
|
|
114
|
-
media_transformation_info: JSON.stringify({
|
|
115
|
-
width: String(width), height: String(height),
|
|
116
|
-
x_transform: '0', y_transform: '0',
|
|
117
|
-
zoom: '1.0', rotation: '0.0', background_coverage: '0.0',
|
|
118
|
-
}),
|
|
119
|
-
extra: JSON.stringify({ source_width: width, source_height: height }),
|
|
120
|
-
device: JSON.stringify({
|
|
121
|
-
manufacturer: session.state.devicePayload?.manufacturer || 'samsung',
|
|
122
|
-
model: session.state.devicePayload?.model || 'SM-S938B',
|
|
123
|
-
android_version: session.state.devicePayload?.android_version || 35,
|
|
124
|
-
android_release: session.state.devicePayload?.android_release || '15',
|
|
125
|
-
}),
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
if (attachmentFbid) {
|
|
129
|
-
form.attachment_fbid = String(attachmentFbid);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const signedForm = (session.request && typeof session.request.sign === 'function')
|
|
133
|
-
? session.request.sign(form)
|
|
134
|
-
: form;
|
|
135
|
-
|
|
136
|
-
const broadcastResponse = await session.request.send({
|
|
137
|
-
url: '/api/v1/direct_v2/threads/broadcast/raven_attachment/',
|
|
138
|
-
method: 'POST',
|
|
139
|
-
form: signedForm,
|
|
140
|
-
qs: { use_unified_inbox: true },
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
const body = broadcastResponse && (broadcastResponse.body || broadcastResponse.data || broadcastResponse);
|
|
144
|
-
return typeof body === 'string' ? JSON.parse(body) : body;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
async function sendRavenVideoOnce(session, videoBuffer, options = {}) {
|
|
148
|
-
return sendRavenVideo(session, videoBuffer, { ...options, viewMode: 'once' });
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
async function sendRavenVideoReplayable(session, videoBuffer, options = {}) {
|
|
152
|
-
return sendRavenVideo(session, videoBuffer, { ...options, viewMode: 'replayable' });
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
module.exports = sendRavenVideo;
|
|
156
|
-
module.exports.sendRavenVideo = sendRavenVideo;
|
|
157
|
-
module.exports.sendRavenVideoOnce = sendRavenVideoOnce;
|
|
158
|
-
module.exports.sendRavenVideoReplayable = sendRavenVideoReplayable;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* uploadPhoto.js - FIXED version based on instagram-private-api
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const { v4: uuidv4 } = require('uuid');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Validate buffer and mime type
|
|
9
|
-
*/
|
|
10
|
-
function validateImageInput(photoBuffer, mimeType) {
|
|
11
|
-
if (!photoBuffer || !Buffer.isBuffer(photoBuffer) || photoBuffer.length === 0) {
|
|
12
|
-
throw new Error('uploadPhoto: photoBuffer must be a non-empty Buffer.');
|
|
13
|
-
}
|
|
14
|
-
const allowed = ['image/jpeg', 'image/jpg', 'image/png'];
|
|
15
|
-
if (!allowed.includes(mimeType)) {
|
|
16
|
-
throw new Error(`uploadPhoto: mimeType must be one of ${allowed.join(', ')}.`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Build Instagram rupload params for photo - Matching instagram-private-api
|
|
22
|
-
*/
|
|
23
|
-
function buildRuploadParams(uploadId, mimeType) {
|
|
24
|
-
const isJpeg = mimeType === 'image/jpeg' || mimeType === 'image/jpg';
|
|
25
|
-
const compression = isJpeg
|
|
26
|
-
? JSON.stringify({ lib_name: 'moz', lib_version: '3.1.m', quality: '80' })
|
|
27
|
-
: JSON.stringify({ lib_name: 'png', lib_version: '1.0', quality: '100' });
|
|
28
|
-
|
|
29
|
-
return {
|
|
30
|
-
retry_context: JSON.stringify({ num_step_auto_retry: 0, num_reupload: 0, num_step_manual_retry: 0 }),
|
|
31
|
-
media_type: '1', // String '1' per instagram-private-api
|
|
32
|
-
upload_id: uploadId.toString(),
|
|
33
|
-
xsharing_user_ids: JSON.stringify([]),
|
|
34
|
-
image_compression: compression,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Upload a photo to Instagram's rupload endpoint.
|
|
40
|
-
*/
|
|
41
|
-
async function uploadPhoto(session, photoBuffer, options = {}) {
|
|
42
|
-
const {
|
|
43
|
-
mimeType = 'image/jpeg',
|
|
44
|
-
fileName,
|
|
45
|
-
signal,
|
|
46
|
-
} = options;
|
|
47
|
-
|
|
48
|
-
validateImageInput(photoBuffer, mimeType);
|
|
49
|
-
|
|
50
|
-
const uploadId = Date.now().toString();
|
|
51
|
-
const name = `${uploadId}_0_${Math.floor(Math.random() * (9999999999 - 1000000000) + 1000000000)}`;
|
|
52
|
-
const contentLength = photoBuffer.byteLength;
|
|
53
|
-
|
|
54
|
-
const ruploadParams = buildRuploadParams(uploadId, mimeType);
|
|
55
|
-
|
|
56
|
-
// Headers expected by Instagram rupload (matched with instagram-private-api)
|
|
57
|
-
const headers = {
|
|
58
|
-
'X_FB_PHOTO_WATERFALL_ID': uuidv4(),
|
|
59
|
-
'X-Entity-Type': 'image/jpeg',
|
|
60
|
-
'Offset': '0',
|
|
61
|
-
'X-Instagram-Rupload-Params': JSON.stringify(ruploadParams),
|
|
62
|
-
'X-Entity-Name': name,
|
|
63
|
-
'X-Entity-Length': String(contentLength),
|
|
64
|
-
'Content-Type': 'application/octet-stream',
|
|
65
|
-
'Content-Length': String(contentLength),
|
|
66
|
-
'Accept-Encoding': 'gzip',
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// If it's png, maybe we should adjust X-Entity-Type?
|
|
70
|
-
// instagram-private-api seems to hardcode 'image/jpeg' in the trace for 'photo' method.
|
|
71
|
-
// We'll stick to 'image/jpeg' for X-Entity-Type as per reference unless user provided PNG which might work anyway.
|
|
72
|
-
|
|
73
|
-
const url = `/rupload_igphoto/${name}`;
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
const response = await session.request.send({
|
|
77
|
-
url,
|
|
78
|
-
method: 'POST',
|
|
79
|
-
headers,
|
|
80
|
-
body: photoBuffer,
|
|
81
|
-
signal,
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
if (!response) {
|
|
85
|
-
throw new Error('uploadPhoto: Empty response from Instagram rupload endpoint.');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Try to get upload_id from response
|
|
89
|
-
let serverUploadId = null;
|
|
90
|
-
if (typeof response === 'object' && response.body) {
|
|
91
|
-
try {
|
|
92
|
-
const body = typeof response.body === 'string' ? JSON.parse(response.body) : response.body;
|
|
93
|
-
serverUploadId = body.upload_id;
|
|
94
|
-
} catch (e) {
|
|
95
|
-
// ignore parse error
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return serverUploadId || uploadId;
|
|
100
|
-
} catch (err) {
|
|
101
|
-
// If error, try to extract message
|
|
102
|
-
const msg = err.message || err.toString();
|
|
103
|
-
throw new Error(`uploadPhoto: Upload failed — ${msg}`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
module.exports = uploadPhoto;
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* uploadfFile.js - FIXED version based on instagram-private-api
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const { v4: uuidv4 } = require('uuid');
|
|
6
|
-
|
|
7
|
-
const DEFAULT_CHUNK_SIZE = 512 * 1024; // 512KB
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Validate upload input
|
|
11
|
-
*/
|
|
12
|
-
function validateFileInput(fileBuffer, mimeType) {
|
|
13
|
-
if (!fileBuffer || !Buffer.isBuffer(fileBuffer) || fileBuffer.length === 0) {
|
|
14
|
-
throw new Error('uploadFile: fileBuffer must be a non-empty Buffer.');
|
|
15
|
-
}
|
|
16
|
-
if (typeof mimeType !== 'string' || mimeType.length === 0) {
|
|
17
|
-
throw new Error('uploadFile: mimeType must be a non-empty string.');
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Build rupload params - Matching instagram-private-api
|
|
23
|
-
*/
|
|
24
|
-
function buildRuploadParams(uploadId, mimeType, opts) {
|
|
25
|
-
const isVideo = mimeType.startsWith('video/');
|
|
26
|
-
const isAudio = mimeType.startsWith('audio/');
|
|
27
|
-
|
|
28
|
-
const params = {
|
|
29
|
-
retry_context: JSON.stringify({ num_step_auto_retry: 0, num_reupload: 0, num_step_manual_retry: 0 }),
|
|
30
|
-
media_type: isVideo ? '2' : '3', // 2 for video, 3 for audio/others?
|
|
31
|
-
upload_id: uploadId.toString(),
|
|
32
|
-
xsharing_user_ids: JSON.stringify([]),
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
if (isVideo) {
|
|
36
|
-
params.upload_media_duration_ms = opts.duration?.toString() || '0';
|
|
37
|
-
params.upload_media_width = opts.width?.toString() || '720';
|
|
38
|
-
params.upload_media_height = opts.height?.toString() || '1280';
|
|
39
|
-
params.direct_v2 = '1';
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return params;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Upload file via rupload with chunking.
|
|
47
|
-
*/
|
|
48
|
-
async function uploadFile(session, fileBuffer, options = {}) {
|
|
49
|
-
const {
|
|
50
|
-
mimeType = 'video/mp4',
|
|
51
|
-
fileName,
|
|
52
|
-
chunkSize = DEFAULT_CHUNK_SIZE,
|
|
53
|
-
signal,
|
|
54
|
-
} = options;
|
|
55
|
-
|
|
56
|
-
validateFileInput(fileBuffer, mimeType);
|
|
57
|
-
|
|
58
|
-
const uploadId = Date.now().toString();
|
|
59
|
-
const name = `${uploadId}_0_${Math.floor(Math.random() * 9000000000 + 1000000000)}`;
|
|
60
|
-
const totalLength = fileBuffer.length;
|
|
61
|
-
const waterfallId = uuidv4();
|
|
62
|
-
|
|
63
|
-
const ruploadParams = buildRuploadParams(uploadId, mimeType, options);
|
|
64
|
-
|
|
65
|
-
const endpoint = mimeType.startsWith('image/')
|
|
66
|
-
? `/rupload_igphoto/${name}`
|
|
67
|
-
: `/rupload_igvideo/${name}`;
|
|
68
|
-
|
|
69
|
-
// Start upload
|
|
70
|
-
let offset = 0;
|
|
71
|
-
const size = Math.max(64 * 1024, Math.min(4 * 1024 * 1024, chunkSize));
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
while (offset < totalLength) {
|
|
75
|
-
const end = Math.min(offset + size, totalLength);
|
|
76
|
-
const chunk = fileBuffer.subarray(offset, end);
|
|
77
|
-
|
|
78
|
-
const headers = {
|
|
79
|
-
'X-Instagram-Rupload-Params': JSON.stringify(ruploadParams),
|
|
80
|
-
'X_FB_VIDEO_WATERFALL_ID': waterfallId,
|
|
81
|
-
'X-Entity-Type': mimeType,
|
|
82
|
-
'X-Entity-Name': name,
|
|
83
|
-
'X-Entity-Length': String(totalLength),
|
|
84
|
-
'Offset': String(offset),
|
|
85
|
-
'Content-Type': 'application/octet-stream',
|
|
86
|
-
'Content-Length': String(chunk.length),
|
|
87
|
-
'Accept-Encoding': 'gzip',
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
const res = await session.request.send({
|
|
91
|
-
url: endpoint,
|
|
92
|
-
method: 'POST',
|
|
93
|
-
headers,
|
|
94
|
-
body: chunk,
|
|
95
|
-
signal,
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
if (!res) throw new Error(`uploadFile: Empty response at offset ${offset}`);
|
|
99
|
-
offset = end;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Finalize
|
|
103
|
-
const confirm = await session.request.send({
|
|
104
|
-
url: endpoint,
|
|
105
|
-
method: 'POST',
|
|
106
|
-
headers: {
|
|
107
|
-
'X-Instagram-Rupload-Params': JSON.stringify(ruploadParams),
|
|
108
|
-
'X_FB_VIDEO_WATERFALL_ID': waterfallId,
|
|
109
|
-
'X-Entity-Type': mimeType,
|
|
110
|
-
'Offset': String(totalLength),
|
|
111
|
-
'Content-Length': '0',
|
|
112
|
-
},
|
|
113
|
-
signal,
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
let serverUploadId = null;
|
|
117
|
-
if (confirm && confirm.body) {
|
|
118
|
-
try {
|
|
119
|
-
const body = typeof confirm.body === 'string' ? JSON.parse(confirm.body) : confirm.body;
|
|
120
|
-
serverUploadId = body.upload_id;
|
|
121
|
-
} catch (e) {}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return serverUploadId || uploadId;
|
|
125
|
-
} catch (err) {
|
|
126
|
-
throw new Error(`uploadFile: Upload failed — ${err.message}`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
module.exports = uploadFile;
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
const Repository = require('../core/repository');
|
|
2
|
-
|
|
3
|
-
class LiveService extends Repository {
|
|
4
|
-
async create(options = {}) {
|
|
5
|
-
const {
|
|
6
|
-
previewWidth = 720,
|
|
7
|
-
previewHeight = 1280,
|
|
8
|
-
broadcastMessage = '',
|
|
9
|
-
} = options;
|
|
10
|
-
|
|
11
|
-
const response = await this.client.request.send({
|
|
12
|
-
method: 'POST',
|
|
13
|
-
url: '/api/v1/live/create/',
|
|
14
|
-
form: this.client.request.sign({
|
|
15
|
-
_uuid: this.client.state.uuid,
|
|
16
|
-
preview_width: previewWidth,
|
|
17
|
-
preview_height: previewHeight,
|
|
18
|
-
broadcast_message: broadcastMessage,
|
|
19
|
-
}),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
return response.body;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async start(broadcastId, shouldSendNotifications = false) {
|
|
26
|
-
const response = await this.client.request.send({
|
|
27
|
-
method: 'POST',
|
|
28
|
-
url: `/api/v1/live/${broadcastId}/start/`,
|
|
29
|
-
form: this.client.request.sign({
|
|
30
|
-
_uuid: this.client.state.uuid,
|
|
31
|
-
should_send_notifications: shouldSendNotifications ? '1' : '0',
|
|
32
|
-
}),
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
return response.body;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async end(broadcastId, endAfterCopyrightWarning = false) {
|
|
39
|
-
const response = await this.client.request.send({
|
|
40
|
-
method: 'POST',
|
|
41
|
-
url: `/api/v1/live/${broadcastId}/end_broadcast/`,
|
|
42
|
-
form: this.client.request.sign({
|
|
43
|
-
_uuid: this.client.state.uuid,
|
|
44
|
-
end_after_copyright_warning: endAfterCopyrightWarning ? '1' : '0',
|
|
45
|
-
}),
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
return response.body;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async info(broadcastId) {
|
|
52
|
-
const response = await this.client.request.send({
|
|
53
|
-
method: 'GET',
|
|
54
|
-
url: `/api/v1/live/${broadcastId}/info/`,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
return response.body;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async getViewerList(broadcastId) {
|
|
61
|
-
const response = await this.client.request.send({
|
|
62
|
-
method: 'GET',
|
|
63
|
-
url: `/api/v1/live/${broadcastId}/get_viewer_list/`,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
return response.body;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
async comment(broadcastId, message) {
|
|
70
|
-
const response = await this.client.request.send({
|
|
71
|
-
method: 'POST',
|
|
72
|
-
url: `/api/v1/live/${broadcastId}/comment/`,
|
|
73
|
-
form: this.client.request.sign({
|
|
74
|
-
_uuid: this.client.state.uuid,
|
|
75
|
-
user_breadcrumb: this.client.request.userBreadcrumb(message.length),
|
|
76
|
-
idempotence_token: Date.now(),
|
|
77
|
-
comment_text: message,
|
|
78
|
-
live_or_vod: '1',
|
|
79
|
-
offset: '0',
|
|
80
|
-
}),
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
return response.body;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
async like(broadcastId, likeCount = 1) {
|
|
87
|
-
const response = await this.client.request.send({
|
|
88
|
-
method: 'POST',
|
|
89
|
-
url: `/api/v1/live/${broadcastId}/like/`,
|
|
90
|
-
form: this.client.request.sign({
|
|
91
|
-
_uuid: this.client.state.uuid,
|
|
92
|
-
user_like_count: likeCount,
|
|
93
|
-
}),
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
return response.body;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
async getHeartbeatAndViewerCount(broadcastId) {
|
|
100
|
-
const response = await this.client.request.send({
|
|
101
|
-
method: 'POST',
|
|
102
|
-
url: `/api/v1/live/${broadcastId}/heartbeat_and_get_viewer_count/`,
|
|
103
|
-
form: this.client.request.sign({
|
|
104
|
-
_uuid: this.client.state.uuid,
|
|
105
|
-
offset_to_video_start: '0',
|
|
106
|
-
}),
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
return response.body;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
async muteComment(broadcastId, userId) {
|
|
113
|
-
const response = await this.client.request.send({
|
|
114
|
-
method: 'POST',
|
|
115
|
-
url: `/api/v1/live/${broadcastId}/mute_comment/`,
|
|
116
|
-
form: this.client.request.sign({
|
|
117
|
-
_uuid: this.client.state.uuid,
|
|
118
|
-
user_id: userId,
|
|
119
|
-
}),
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
return response.body;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
async unmuteComment(broadcastId, userId) {
|
|
126
|
-
const response = await this.client.request.send({
|
|
127
|
-
method: 'POST',
|
|
128
|
-
url: `/api/v1/live/${broadcastId}/unmute_comment/`,
|
|
129
|
-
form: this.client.request.sign({
|
|
130
|
-
_uuid: this.client.state.uuid,
|
|
131
|
-
user_id: userId,
|
|
132
|
-
}),
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
return response.body;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
module.exports = LiveService;
|