tremble/cli/categories.go

54 lines
1.2 KiB
Go
Raw Permalink Normal View History

2025-07-31 15:27:22 +00:00
package main
import (
"fmt"
"github.com/charmbracelet/log"
"github.com/nicklaw5/helix/v2"
)
func categoryHelp() {
fmt.Print("\nTwitch category commands. Valid commands are:\n\n")
fmt.Println(" search <search-term>: search twitch for categories matching search term.")
}
func categories(client *helix.Client, args []string) {
if len(args) < 1 {
log.Error("Insufficient arguments.")
categoryHelp()
return
}
switch args[0] {
case "search":
{
data, err := searchCategories(client, args[1])
if err != nil {
log.Fatalf("Error searching categories: %v", err)
}
_ = data
}
default:
categoryHelp()
}
}
// searchCategories prints a list of categories matching searchTerm. On success it also
// returns a list of categories.
func searchCategories(client *helix.Client, searchTerm string) ([]helix.Category, error) {
resp, err := client.SearchCategories(&helix.SearchCategoriesParams{
Query: searchTerm,
})
if err != nil {
log.Fatalf("Error while searching for category '%v'\n", searchTerm)
return nil, err
}
// TODO: Pagination and such
for _, category := range resp.Data.Categories {
fmt.Printf("[%v] %v\n", category.ID, category.Name)
}
return resp.Data.Categories, nil
}