comparison cmd/events.go @ 6:4deabe76bd7f

cmd: add CMD package
author Dennis C. M. <dennis@denniscm.com>
date Wed, 12 Mar 2025 14:13:24 +0000
parents
children
comparison
equal deleted inserted replaced
5:8cf3011fc949 6:4deabe76bd7f
1 package cmd
2
3 import (
4 "bytes"
5 "encoding/json"
6 "io"
7 "log"
8 "net/http"
9 "net/url"
10 )
11
12 type ChannelChatMsgSubPayload struct {
13 Payload struct {
14 Event struct {
15 Msg struct {
16 Text string `json:"text"`
17 } `json:"message"`
18 } `json:"event"`
19 } `json:"payload"`
20 }
21
22 func ChannelChatMsgSub(authToken, session_id string) {
23 config := readConfig()
24
25 data := map[string]interface{}{
26 "type": "channel.chat.message",
27 "version": "1",
28 "condition": map[string]string{
29 "broadcaster_user_id": config.BroadcasterUserId,
30 "user_id": config.BroadcasterUserId,
31 },
32 "transport": map[string]string{
33 "method": "websocket",
34 "session_id": session_id,
35 },
36 }
37
38 jsonData, err := json.Marshal(data)
39
40 if err != nil {
41 log.Fatal(err)
42 }
43
44 eventSub(authToken, jsonData)
45 }
46
47 func eventSub(authToken string, subData []byte) {
48 baseUrl := &url.URL{
49 Scheme: "https",
50 Host: "api.twitch.tv",
51 Path: "helix/eventsub/subscriptions",
52 }
53
54 req, err := http.NewRequest("POST", baseUrl.String(), bytes.NewBuffer(subData))
55
56 if err != nil {
57 log.Fatal(err)
58 }
59
60 config := readConfig()
61
62 req.Header.Set("Authorization", "Bearer "+authToken)
63 req.Header.Set("Client-Id", config.ClientId)
64 req.Header.Set("Content-Type", "application/json")
65
66 client := &http.Client{}
67 res, err := client.Do(req)
68
69 if err != nil {
70 log.Fatal(err)
71 }
72
73 defer res.Body.Close()
74
75 body, err := io.ReadAll(res.Body)
76
77 if err != nil {
78 log.Fatal(err)
79 }
80
81 log.Println(string(body))
82 }