From a14ffdfc999abd76c2d9937e778c932a457be08f Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 21 Jul 2022 01:49:24 +0200 Subject: start implementing song search --- main.go | 18 ++++++++++++++---- player.go | 8 ++++++++ web/client.html | 17 ++++++++++++++++- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index e90dcaf..9c89693 100644 --- a/main.go +++ b/main.go @@ -30,7 +30,17 @@ func landingPage(w http.ResponseWriter, r *http.Request) { } func searchHandler(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Searching for") + pattern := r.URL.Query().Get("pattern") + + log.Println(fmt.Sprintf("Searching for %s", pattern)) + + results := wrms.Player.Search(pattern) + data, err := json.Marshal(Event{"search", results}) + if err != nil { + log.Fatal(err) + return + } + w.Write(data) } func genericVoteHandler(w http.ResponseWriter, r *http.Request, vote string) { @@ -101,7 +111,7 @@ func wsEndpoint(w http.ResponseWriter, r *http.Request) { if wrms.Playing { data, err := json.Marshal(Event{"play", []Song{*wrms.CurrentSong}}) if err != nil { - log.Println(err) + log.Fatal(err) return } initialCmds = append(initialCmds, data) @@ -109,7 +119,7 @@ func wsEndpoint(w http.ResponseWriter, r *http.Request) { data, err := json.Marshal(Event{"add", wrms.Songs}) if err != nil { - log.Println(err) + log.Fatal(err) return } initialCmds = append(initialCmds, data) @@ -126,7 +136,7 @@ func wsEndpoint(w http.ResponseWriter, r *http.Request) { for ev := range conn.Events { data, err := json.Marshal(ev) if err != nil { - log.Println(err) + log.Fatal(err) return } diff --git a/player.go b/player.go index 73b5441..1f5967d 100644 --- a/player.go +++ b/player.go @@ -33,3 +33,11 @@ func (player *Player) Play(song Song) { func (player *Player) Pause() { } + +func (player *Player) Search(pattern string) []Song { + results := []Song{} + for _, backend := range player.Backends { + results = append(results, backend.Search(pattern)...) + } + return results +} diff --git a/web/client.html b/web/client.html index d7f8db2..8e3faab 100644 --- a/web/client.html +++ b/web/client.html @@ -190,6 +190,13 @@ console.log("Socket Error: ", error); }; + function submitSearch() { + const form = new FormData(document.getElementById("searchForm")); + const pattern = new URLSearchParams(form).toString(); + new HttpClient().get("/search?" + pattern, console.log); + return false; + } + window.onload = function() { document.getElementById("ppbutton").addEventListener("click", function() { new HttpClient().get("/playpause", console.log); @@ -199,10 +206,18 @@ +

Add your song

+
+
+ + +
+
+

Playing

- +

Playlist

-- cgit v1.2.3