From 6eb3829888e65d855b269e0d74e17bfefafc7787 Mon Sep 17 00:00:00 2001 From: Tobias Gesellchen Date: Thu, 28 May 2026 23:46:08 +0200 Subject: [PATCH] chore(lint): fix golangci-lint issues in navigation-station-demo - Add package comment (revive: package-comments) - Use index-based range loop for stations slice to avoid 160-byte copy per iteration (gocritic: rangeValCopy) - Rename unused client parameters to _ in three stub functions (revive: unused-parameter) - Remove custom min() helper; Go 1.21+ provides a built-in min (revive: redefines-builtin-id) Co-Authored-By: Claude Sonnet 4.6 --- cmd/soundtouch-cli/cmd_preset.go | 1 + examples/navigation-station-demo/main.go | 30 ++++++++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/cmd/soundtouch-cli/cmd_preset.go b/cmd/soundtouch-cli/cmd_preset.go index 9a7d92a..f438fab 100644 --- a/cmd/soundtouch-cli/cmd_preset.go +++ b/cmd/soundtouch-cli/cmd_preset.go @@ -151,6 +151,7 @@ func resolveLocationAndMetadata(params *presetParams) error { !isOrionLocation(params.location) && (strings.HasPrefix(params.location, "http://") || strings.HasPrefix(params.location, "https://")) { params.location = buildOrionLocation(params.serviceURL, params.name, params.artwork, resolvedLocation) + fmt.Printf(" Wrapped stream URL in Orion location for LOCAL_INTERNET_RADIO\n") } else if params.source == "LOCAL_INTERNET_RADIO" && params.serviceURL == "" && diff --git a/examples/navigation-station-demo/main.go b/examples/navigation-station-demo/main.go index ec7db07..168b5c6 100644 --- a/examples/navigation-station-demo/main.go +++ b/examples/navigation-station-demo/main.go @@ -1,3 +1,4 @@ +// Package main demonstrates content navigation and station management with SoundTouch devices. package main import ( @@ -41,12 +42,14 @@ func main() { func demonstrateNavigationAndStations(c *client.Client) error { // 1. Browse TuneIn content fmt.Println("šŸ“» Step 1: Browsing TuneIn stations...") + if err := browseTuneInStations(c); err != nil { return fmt.Errorf("failed to browse TuneIn: %w", err) } // 2. Search for specific content fmt.Println("\nšŸ” Step 2: Searching for jazz stations...") + searchResults, err := searchForJazzStations(c) if err != nil { return fmt.Errorf("failed to search stations: %w", err) @@ -54,6 +57,7 @@ func demonstrateNavigationAndStations(c *client.Client) error { // 3. Add and play a station fmt.Println("\nāž• Step 3: Adding and playing a station...") + if err := addAndPlayStation(c, searchResults); err != nil { fmt.Printf("āš ļø Could not add station: %v\n", err) // Continue with demo even if this fails @@ -61,6 +65,7 @@ func demonstrateNavigationAndStations(c *client.Client) error { // 4. Demonstrate Pandora search (if account available) fmt.Println("\nšŸŽµ Step 4: Demonstrating Pandora search...") + if err := demonstratePandoraSearch(c); err != nil { fmt.Printf("āš ļø Pandora search not available: %v\n", err) // Continue with demo @@ -68,6 +73,7 @@ func demonstrateNavigationAndStations(c *client.Client) error { // 5. Browse stored music (if available) fmt.Println("\nšŸ’æ Step 5: Browsing stored music...") + if err := browseStoredMusic(c); err != nil { fmt.Printf("āš ļø Stored music not available: %v\n", err) // Continue with demo @@ -75,6 +81,7 @@ func demonstrateNavigationAndStations(c *client.Client) error { // 6. Search Spotify content (if account available) fmt.Println("\nšŸŽ§ Step 6: Demonstrating Spotify search...") + if err := demonstrateSpotifySearch(c); err != nil { fmt.Printf("āš ļø Spotify search not available: %v\n", err) // Continue with demo @@ -95,8 +102,10 @@ func browseTuneInStations(c *client.Client) error { if len(response.Items) > 0 { fmt.Printf(" šŸŽµ Sample stations:\n") + for i, item := range response.Items[:min(5, len(response.Items))] { fmt.Printf(" %d. %s\n", i+1, item.GetDisplayName()) + if item.IsPlayable() { fmt.Printf(" ā–¶ļø Playable\n") } else if item.IsDirectory() { @@ -125,13 +134,16 @@ func searchForJazzStations(c *client.Client) (*models.SearchStationResponse, err if len(songs) > 0 { fmt.Printf(" šŸŽµ Songs (%d): %s\n", len(songs), songs[0].GetDisplayName()) } + if len(artists) > 0 { fmt.Printf(" šŸŽ¤ Artists (%d): %s\n", len(artists), artists[0].GetDisplayName()) } + if len(stations) > 0 { fmt.Printf(" šŸ“» Stations (%d):\n", len(stations)) - for i, station := range stations[:min(3, len(stations))] { - fmt.Printf(" %d. %s (Token: %s)\n", i+1, station.GetDisplayName(), station.Token) + + for i := range stations[:min(3, len(stations))] { + fmt.Printf(" %d. %s (Token: %s)\n", i+1, stations[i].GetDisplayName(), stations[i].Token) } } @@ -176,7 +188,7 @@ func addAndPlayStation(c *client.Client, searchResults *models.SearchStationResp return nil } -func demonstratePandoraSearch(c *client.Client) error { +func demonstratePandoraSearch(_ *client.Client) error { // Note: This would require a valid Pandora account // For demo purposes, we'll show how it would work fmt.Printf(" šŸŽµ Pandora search requires a valid source account\n") @@ -190,7 +202,7 @@ func demonstratePandoraSearch(c *client.Client) error { return nil } -func browseStoredMusic(c *client.Client) error { +func browseStoredMusic(_ *client.Client) error { // Note: This would require a valid device ID for stored music fmt.Printf(" šŸ’æ Stored music browsing requires device ID\n") fmt.Printf(" šŸ’” Example usage:\n") @@ -204,7 +216,7 @@ func browseStoredMusic(c *client.Client) error { return nil } -func demonstrateSpotifySearch(c *client.Client) error { +func demonstrateSpotifySearch(_ *client.Client) error { // Note: This would require a valid Spotify account fmt.Printf(" šŸŽ§ Spotify search requires a valid source account\n") fmt.Printf(" šŸ’” Example usage:\n") @@ -218,14 +230,6 @@ func demonstrateSpotifySearch(c *client.Client) error { return nil } -// Helper function to get minimum of two integers -func min(a, b int) int { - if a < b { - return a - } - return b -} - func printUsage() { fmt.Println("šŸŽµ SoundTouch Navigation & Station Management Demo") fmt.Println()