annotate cmd/auth.go @ 7:a8aab75f68c9

cmd/auth.go: refactor code
author Dennis C. M. <dennis@denniscm.com>
date Wed, 12 Mar 2025 14:45:00 +0000
parents 4deabe76bd7f
children
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 "encoding/json"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 "log"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 "net/http"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7 "net/url"
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 )
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 // TODO: Change unmarshall to JSON DECODE
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 func GetAuthUrl() string {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 baseUrl := &url.URL{
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 Scheme: "https",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 Host: "id.twitch.tv",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 Path: "/oauth2/authorize",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 params := url.Values{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 params.Add("client_id", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 params.Add("force_verify", "true")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 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
25 params.Add("response_type", "code")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26 params.Add("scope", "channel:bot user:read:chat")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 params.Add("state", "c3ab8aa609ea11e793ae92361f002671")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 baseUrl.RawQuery = params.Encode()
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 return baseUrl.String()
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
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34 type AuthRes struct {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 AccessToken string `json:"access_token"`
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 RefreshToken string `json:"refresh_token"`
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 Scope []string `json:"scope"`
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 func GetAuthToken(authCode string) AuthRes {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 baseUrl := &url.URL{
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 Scheme: "https",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 Host: "id.twitch.tv",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 Path: "/oauth2/token",
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 formData := url.Values{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50 formData.Add("client_id", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 formData.Add("client_secret", config.ClientSecret)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52 formData.Add("code", authCode)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 formData.Add("grant_type", "authorization_code")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 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
55
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56 res, err := http.PostForm(baseUrl.String(), formData)
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 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 log.Fatal(err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 defer res.Body.Close()
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 if res.StatusCode != 200 {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65 log.Fatal("GetAuthToken")
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68 var authRes AuthRes
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 err = json.NewDecoder(res.Body).Decode(&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 if err != nil {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73 log.Fatal(err)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
76 return authRes
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
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
79 func IsAuthTokenValid(authToken string) bool {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
80 baseUrl := &url.URL{
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
81 Scheme: "https",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
82 Host: "id.twitch.tv",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
83 Path: "oauth2/validate",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
84 }
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
85
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
86 req, err := http.NewRequest("GET", baseUrl.String(), nil)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
87
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
88 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
89 log.Fatal(err)
6
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
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
92 req.Header.Set("Authorization", "OAuth "+authToken)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
93
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
94 client := &http.Client{}
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
95 resp, err := client.Do(req)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
96
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
97 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
98 log.Fatal(err)
6
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
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
101 defer resp.Body.Close()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
102
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
103 return resp.StatusCode == 200
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
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
106 func RevokeAuthToken(authToken string) {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
107 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
108
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
109 baseUrl := &url.URL{
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
110 Scheme: "https",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
111 Host: "id.twitch.tv",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
112 Path: "oauth2/revoke",
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
113 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
114
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
115 data := url.Values{}
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
116 data.Add("client_id", config.ClientId)
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
117 data.Add("token", authToken)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
118
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
119 res, err := http.PostForm(baseUrl.String(), data)
6
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 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
122 log.Fatal(err)
6
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
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
125 defer res.Body.Close()
6
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 func RefreshAuthToken(authToken, refreshToken string) AuthRes {
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
129 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
130
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
131 baseUrl := &url.URL{
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
132 Scheme: "https",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
133 Host: "id.twitch.tv",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
134 Path: "oauth2/token",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
135 }
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
136
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
137 data := url.Values{}
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
138 data.Add("grant_type", "refresh_token")
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
139 data.Add("refresh_token", refreshToken)
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
140 data.Add("client_id", config.ClientId)
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
141 data.Add("client_secret", config.ClientSecret)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
142
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
143 res, err := http.PostForm(baseUrl.String(), data)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
144
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
145 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
146 log.Fatal(err)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
147 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
148
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
149 defer res.Body.Close()
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
150
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
151 var authRes AuthRes
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
152
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
153 err = json.NewDecoder(res.Body).Decode(&authRes)
6
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 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
156 log.Fatal(err)
6
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
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
159 return authRes
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
160 }
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
161
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
162 type UserRes struct {
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
163 Data []struct {
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
164 Id string `json:"id"`
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
165 } `json:"data"`
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
166 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
167
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
168 func GetUser(userName, authToken string) UserRes {
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
169 config := readConfig()
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
170
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
171 baseUrl := &url.URL{
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
172 Scheme: "https",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
173 Host: "api.twitch.tv",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
174 Path: "helix/users",
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
175 }
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
176
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
177 params := url.Values{}
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
178 params.Add("login", userName)
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
179
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
180 req, err := http.NewRequest("GET", baseUrl.String(), nil)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
181
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
182 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
183 log.Fatal(err)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
184 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
185
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
186 req.Header.Set("Client-ID", config.ClientId)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
187 req.Header.Set("Authorization", "Bearer "+authToken)
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
188
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
189 client := &http.Client{}
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
190 res, err := client.Do(req)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
191
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
192 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
193 log.Fatal(err)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
194 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
195
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
196 defer res.Body.Close()
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
197
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
198 var userRes UserRes
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
199
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
200 err = json.NewDecoder(res.Body).Decode(&userRes)
6
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 if err != nil {
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
203 log.Fatal(err)
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
204 }
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
205
7
a8aab75f68c9 cmd/auth.go: refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
206 return userRes
6
4deabe76bd7f cmd: add CMD package
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
207 }