-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathclient_test.go
124 lines (108 loc) · 3.87 KB
/
client_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package messagix_test
import (
"log"
"os"
"testing"
"github.com/0xzer/messagix"
"github.com/0xzer/messagix/cookies"
"github.com/0xzer/messagix/debug"
"github.com/0xzer/messagix/table"
"github.com/0xzer/messagix/types"
)
var cli *messagix.Client
func TestClient(t *testing.T) {
session := &cookies.InstagramCookies{}
err := cookies.NewCookiesFromString(``, session)
if err != nil {
log.Fatalf("failed to create insta cookies: %e", err)
}
cli, err = messagix.NewClient(types.Instagram, session, debug.NewLogger(), "")
if err != nil {
log.Fatal(err)
}
cli.SetEventHandler(evHandler)
err = cli.Connect()
if err != nil {
log.Fatalf("failed to connect to socket: %e", err)
}
cli.SaveSession("test_files/session.json")
// making sure the main program does not exit so that the socket can continue reading
wait := make(chan struct{})
<-wait
}
func evHandler(evt interface{}) {
switch evtData := evt.(type) {
case *messagix.Event_Ready:
cli.Logger.Info().
//Any("threads", evtData.Table.LSDeleteThenInsertThread).
// Any("setcontentdisplay", evtData.Table.LSSetMessageDisplayedContentTypes).
Msg("Client is ready!")
threads := evtData.Table.LSDeleteThenInsertThread
for _, thread := range threads {
cli.Logger.Info().Any("thread_name", thread.ThreadName).Any("thread_key", thread.ThreadKey).Msg("[READY] Got thread info!")
}
case *messagix.Event_PublishResponse:
// cli.Logger.Info().Any("tableData", evtData.Table).Msg("Received new event from socket")
threads := evtData.Table.LSDeleteThenInsertThread
for _, thread := range threads {
cli.Logger.Info().Any("thread_name", thread.ThreadName).Any("thread_key", thread.ThreadKey).Msg("[PUBLISH] Got thread info!")
}
case *messagix.Event_Error:
cli.Logger.Err(evtData.Err).Msg("The library encountered an error")
os.Exit(1)
case *messagix.Event_SocketClosed:
cli.Logger.Info().Any("code", evtData.Code).Any("text", evtData.Text).Msg("Socket was closed.")
os.Exit(1)
default:
cli.Logger.Info().Any("data", evtData).Interface("type", evt).Msg("Got unknown event!")
}
}
func fetchMessages() {
currentCursor := cli.SyncManager.GetCursor(1)
resp, err := cli.Threads.FetchMessages(61550046156682, 1694956983720, "mid.$cAABtBT1ku_GQ1JRdqGKo08VYGlmT", currentCursor)
if err != nil {
log.Fatalf("failed to fetch messages: %e", err)
}
cli.Logger.Debug().Any("resp", resp).Msg("fetch messages")
}
func sendReaction() {
resp, err := cli.Messages.SendReaction(11111, "mid", "👇")
if err != nil {
log.Fatalf("failed to send reaction: %e", err)
}
log.Println(resp.LSReplaceOptimisticReaction)
}
func sendMessageWithMedia() {
mediaData, _ := os.ReadFile("test_files/test.jpeg")
turtleData, _ := os.ReadFile("test_files/turtle.jpeg")
medias := []*messagix.MercuryUploadMedia{
{Filename: "test_image.jpg", MediaType: messagix.IMAGE_JPEG, MediaData: mediaData},
{Filename: "turtle.jpg", MediaType: messagix.IMAGE_JPEG, MediaData: turtleData},
}
mediaUploads, err := cli.SendMercuryUploadRequest(medias)
if err != nil {
log.Fatalf("failed: %e", err)
}
cli.Logger.Info().Any("uploads", mediaUploads).Msg("Media uploads")
sendMsgBuilder := cli.Threads.NewMessageBuilder(1111111)
sendMsgBuilder.SetMedias(mediaUploads)
sendMsgBuilder.SetText("media test :D")
sendMsgBuilder.SetLastReadWatermarkTs(1696261558117)
tableResp, err := sendMsgBuilder.Execute() // make sure to execute to send the task
if err != nil {
log.Fatalf("failed to send media: %e", err)
}
log.Println(tableResp)
}
func sendMessageText() {
msgBuilder := cli.Threads.NewMessageBuilder(11111)
msgBuilder.SetInitiatingSource(table.FACEBOOK_INBOX)
msgBuilder.SetLastReadWatermarkTs(16962611558117)
msgBuilder.SetSource(table.MESSENGER_INBOX_IN_THREAD)
msgBuilder.SetText("hello there")
tableResp, err := msgBuilder.Execute()
if err != nil {
log.Fatalf("failed to send text msg: %e", err)
}
log.Println(tableResp)
}