package api import ( "fmt" "io" "log" "net/http" "os" ) // FetchPlaylist downloads a playlist from url and writes it to destPath. func FetchPlaylist(url, destPath string) error { log.Printf("[playlist] fetching from %s", url) resp, err := http.Get(url) //nolint:gosec if err != nil { return fmt.Errorf("fetch playlist: %w", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return fmt.Errorf("fetch playlist: server returned %s", resp.Status) } if err := os.MkdirAll("/data", 0o755); err != nil { return fmt.Errorf("mkdir /data: %w", err) } f, err := os.Create(destPath) if err != nil { return fmt.Errorf("create playlist file: %w", err) } defer f.Close() if _, err := io.Copy(f, resp.Body); err != nil { return fmt.Errorf("write playlist file: %w", err) } log.Printf("[playlist] saved to %s", destPath) return nil }