Mercurial > public > pacobot
changeset 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 | e9df3bb010f4 |
files | cmd/auth.go |
diffstat | 1 files changed, 62 insertions(+), 58 deletions(-) [+] |
line wrap: on
line diff
--- a/cmd/auth.go Wed Mar 12 14:13:24 2025 +0000 +++ b/cmd/auth.go Wed Mar 12 14:45:00 2025 +0000 @@ -1,9 +1,7 @@ package cmd import ( - "bytes" "encoding/json" - "io" "log" "net/http" "net/url" @@ -75,17 +73,20 @@ log.Fatal(err) } - log.Println(authRes.Scope) - return authRes } func IsAuthTokenValid(authToken string) bool { - endpoint := "https://id.twitch.tv/oauth2/validate" - req, err := http.NewRequest("GET", endpoint, nil) + baseUrl := &url.URL{ + Scheme: "https", + Host: "id.twitch.tv", + Path: "oauth2/validate", + } + + req, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { - log.Fatalf("Error creating request: %v\n", err) + log.Fatal(err) } req.Header.Set("Authorization", "OAuth "+authToken) @@ -94,7 +95,7 @@ resp, err := client.Do(req) if err != nil { - log.Fatalf("Error sending request: %v\n", err) + log.Fatal(err) } defer resp.Body.Close() @@ -105,99 +106,102 @@ func RevokeAuthToken(authToken string) { config := readConfig() - data := url.Values{} - data.Set("client_id", config.ClientId) - data.Set("token", authToken) - - endpoint := "https://id.twitch.tv/oauth2/revoke" - req, err := http.NewRequest("POST", endpoint, bytes.NewBufferString(data.Encode())) - - if err != nil { - log.Fatalf("Error creating request: %v\n", err) + baseUrl := &url.URL{ + Scheme: "https", + Host: "id.twitch.tv", + Path: "oauth2/revoke", } - req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + data := url.Values{} + data.Add("client_id", config.ClientId) + data.Add("token", authToken) - client := &http.Client{} - resp, err := client.Do(req) + res, err := http.PostForm(baseUrl.String(), data) if err != nil { - log.Fatalf("Error sending request: %v\n", err) + log.Fatal(err) } - defer resp.Body.Close() + defer res.Body.Close() } func RefreshAuthToken(authToken, refreshToken string) AuthRes { config := readConfig() + baseUrl := &url.URL{ + Scheme: "https", + Host: "id.twitch.tv", + Path: "oauth2/token", + } + data := url.Values{} - data.Set("grant_type", "refresh_token") - data.Set("refresh_token", refreshToken) - data.Set("client_id", config.ClientId) - data.Set("client_secret", config.ClientSecret) + data.Add("grant_type", "refresh_token") + data.Add("refresh_token", refreshToken) + data.Add("client_id", config.ClientId) + data.Add("client_secret", config.ClientSecret) - endpoint := "https://id.twitch.tv/oauth2/token" - req, err := http.NewRequest("POST", endpoint, bytes.NewBufferString(data.Encode())) + res, err := http.PostForm(baseUrl.String(), data) if err != nil { - log.Fatalf("Error creating request: %v\n", err) - } - - req.Header.Set("Content-Type", "application/x-www-form-urlencoded") - - client := &http.Client{} - resp, err := client.Do(req) - - if err != nil { - log.Fatalf("Error sending request: %v\n", err) + log.Fatal(err) } - defer resp.Body.Close() + defer res.Body.Close() - body, err := io.ReadAll(resp.Body) + var authRes AuthRes + + err = json.NewDecoder(res.Body).Decode(&authRes) if err != nil { - log.Fatalf("Error reading response body: %v", err) + log.Fatal(err) } - var authResponse AuthRes + return authRes +} - if err := json.Unmarshal(body, &authResponse); err != nil { - log.Fatalf("Error parsing JSON: %v", err) - } - - return authResponse +type UserRes struct { + Data []struct { + Id string `json:"id"` + } `json:"data"` } -// TODO: Return broadcaste user id -func GetBroadcasterUserId(userName, authToken string) { +func GetUser(userName, authToken string) UserRes { config := readConfig() - endpoint := "https://api.twitch.tv/helix/users?login=" + userName - req, err := http.NewRequest("GET", endpoint, nil) + baseUrl := &url.URL{ + Scheme: "https", + Host: "api.twitch.tv", + Path: "helix/users", + } + + params := url.Values{} + params.Add("login", userName) + + req, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { - log.Fatalf("Error creating request: %v\n", err) + log.Fatal(err) } req.Header.Set("Client-ID", config.ClientId) req.Header.Set("Authorization", "Bearer "+authToken) client := &http.Client{} - resp, err := client.Do(req) + res, err := client.Do(req) if err != nil { - log.Fatalf("Error sending request: %v\n", err) + log.Fatal(err) } - defer resp.Body.Close() + defer res.Body.Close() - body, err := io.ReadAll(resp.Body) + var userRes UserRes + + err = json.NewDecoder(res.Body).Decode(&userRes) if err != nil { - log.Fatalf("Error reading response body: %v", err) + log.Fatal(err) } - log.Println(string(body)) + return userRes }