//go:build windows // stub_windows.go provides a no-op Spotify implementation on Windows // where go-librespot (CGO: FLAC, Vorbis, ALSA) cannot compile. package spotify import ( "context" "errors" "time" "github.com/gopxl/beep/v2" "github.com/bjarneo/cliamp/playlist" ) var errSpotifyUnavailable = errors.New("spotify: unavailable on Windows (go-librespot requires CGO)") // Session is a no-op on Windows. type Session struct{} // SpotifyProvider is a no-op on Windows. type SpotifyProvider struct{} // New returns nil — Spotify is disabled on Windows because // go-librespot requires CGO (FLAC, Vorbis, ALSA) which cannot // cross-compile. Callers must nil-check the return value. // bitrate is ignored on this platform. func New(_ *Session, _ string, _ int) *SpotifyProvider { return nil } // Close is a no-op. func (p *SpotifyProvider) Close() {} // Name returns the provider name. func (p *SpotifyProvider) Name() string { return "Spotify" } // Playlists returns nil — Spotify is unavailable on Windows. func (p *SpotifyProvider) Playlists() ([]playlist.PlaylistInfo, error) { return nil, nil } // Tracks returns nil — Spotify is unavailable on Windows. func (p *SpotifyProvider) Tracks(_ string) ([]playlist.Track, error) { return nil, nil } // Authenticate is a no-op. func (p *SpotifyProvider) Authenticate() error { return nil } // URISchemes returns the URI prefixes handled by this provider. func (p *SpotifyProvider) URISchemes() []string { return []string{"spotify:"} } // NewStreamer returns an error — Spotify streaming is unavailable on Windows. func (p *SpotifyProvider) NewStreamer(_ string) (beep.StreamSeekCloser, beep.Format, time.Duration, error) { return nil, beep.Format{}, 0, errSpotifyUnavailable } // SearchTracks is a no-op on Windows. func (p *SpotifyProvider) SearchTracks(_ context.Context, _ string, _ int) ([]playlist.Track, error) { return nil, nil } // AddTrackToPlaylist is a no-op on Windows. func (p *SpotifyProvider) AddTrackToPlaylist(_ context.Context, _ string, _ playlist.Track) error { return nil } // CreatePlaylist is a no-op on Windows. func (p *SpotifyProvider) CreatePlaylist(_ context.Context, _ string) (string, error) { return "", nil } // SetAuthURLObserver is a no-op on Windows. func SetAuthURLObserver(_ func(string)) {}