annotate cmd/auth.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 a8aab75f68c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 package cmd
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 import (
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 "bytes"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 "encoding/json"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 "io"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7 "log"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 "net/http"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9 "net/url"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 )
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12 // TODO: Change unmarshall to JSON DECODE
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 func GetAuthUrl() string {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 baseUrl := &url.URL{
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 Scheme: "https",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 Host: "id.twitch.tv",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20 Path: "/oauth2/authorize",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 params := url.Values{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 params.Add("client_id", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 params.Add("force_verify", "true")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26 params.Add("redirect_uri", "http://localhost:8080/twitch-auth-code-callback")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 params.Add("response_type", "code")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28 params.Add("scope", "channel:bot user:read:chat")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 params.Add("state", "c3ab8aa609ea11e793ae92361f002671")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 baseUrl.RawQuery = params.Encode()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33 return baseUrl.String()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 type AuthRes struct {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 AccessToken string `json:"access_token"`
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 RefreshToken string `json:"refresh_token"`
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39 Scope []string `json:"scope"`
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 func GetAuthToken(authCode string) AuthRes {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 baseUrl := &url.URL{
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 Scheme: "https",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 Host: "id.twitch.tv",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48 Path: "/oauth2/token",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 formData := url.Values{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52 formData.Add("client_id", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 formData.Add("client_secret", config.ClientSecret)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 formData.Add("code", authCode)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55 formData.Add("grant_type", "authorization_code")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56 formData.Add("redirect_uri", "http://localhost:8080/twitch-auth-code-callback")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
57
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
58 res, err := http.PostForm(baseUrl.String(), formData)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61 log.Fatal(err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 defer res.Body.Close()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 if res.StatusCode != 200 {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 log.Fatal("GetAuthToken")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 var authRes AuthRes
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
71
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
72 err = json.NewDecoder(res.Body).Decode(&authRes)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75 log.Fatal(err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
76 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
77
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
78 log.Println(authRes.Scope)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
79
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
80 return authRes
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
81 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
82
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
83 func IsAuthTokenValid(authToken string) bool {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
84 endpoint := "https://id.twitch.tv/oauth2/validate"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
85 req, err := http.NewRequest("GET", endpoint, nil)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
86
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
87 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
88 log.Fatalf("Error creating request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
89 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
90
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
91 req.Header.Set("Authorization", "OAuth "+authToken)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
92
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
93 client := &http.Client{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
94 resp, err := client.Do(req)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
95
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
96 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
97 log.Fatalf("Error sending request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
98 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
99
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
100 defer resp.Body.Close()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
101
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
102 return resp.StatusCode == 200
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
103 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
104
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
105 func RevokeAuthToken(authToken string) {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
106 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
107
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
108 data := url.Values{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
109 data.Set("client_id", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
110 data.Set("token", authToken)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
111
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
112 endpoint := "https://id.twitch.tv/oauth2/revoke"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
113 req, err := http.NewRequest("POST", endpoint, bytes.NewBufferString(data.Encode()))
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
114
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
115 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
116 log.Fatalf("Error creating request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
117 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
118
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
119 req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
120
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
121 client := &http.Client{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
122 resp, err := client.Do(req)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
123
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
124 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
125 log.Fatalf("Error sending request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
126 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
127
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
128 defer resp.Body.Close()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
129 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
130
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
131 func RefreshAuthToken(authToken, refreshToken string) AuthRes {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
132 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
133
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
134 data := url.Values{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
135 data.Set("grant_type", "refresh_token")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
136 data.Set("refresh_token", refreshToken)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
137 data.Set("client_id", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
138 data.Set("client_secret", config.ClientSecret)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
139
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
140 endpoint := "https://id.twitch.tv/oauth2/token"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
141 req, err := http.NewRequest("POST", endpoint, bytes.NewBufferString(data.Encode()))
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
142
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
143 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
144 log.Fatalf("Error creating request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
145 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
146
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
147 req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
148
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
149 client := &http.Client{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
150 resp, err := client.Do(req)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
151
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
152 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
153 log.Fatalf("Error sending request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
154 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
155
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
156 defer resp.Body.Close()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
157
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
158 body, err := io.ReadAll(resp.Body)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
159
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
160 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
161 log.Fatalf("Error reading response body: %v", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
162 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
163
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
164 var authResponse AuthRes
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
165
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
166 if err := json.Unmarshal(body, &authResponse); err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
167 log.Fatalf("Error parsing JSON: %v", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
168 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
169
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
170 return authResponse
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
171 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
172
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
173 // TODO: Return broadcaste user id
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
174 func GetBroadcasterUserId(userName, authToken string) {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
175 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
176
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
177 endpoint := "https://api.twitch.tv/helix/users?login=" + userName
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
178 req, err := http.NewRequest("GET", endpoint, nil)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
179
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
180 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
181 log.Fatalf("Error creating request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
182 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
183
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
184 req.Header.Set("Client-ID", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
185 req.Header.Set("Authorization", "Bearer "+authToken)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
186
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
187 client := &http.Client{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
188 resp, err := client.Do(req)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
189
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
190 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
191 log.Fatalf("Error sending request: %v\n", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
192 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
193
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
194 defer resp.Body.Close()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
195
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
196 body, err := io.ReadAll(resp.Body)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
197
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
198 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
199 log.Fatalf("Error reading response body: %v", err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
200 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
201
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
202 log.Println(string(body))
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
203 }