aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go18
-rw-r--r--player.go8
-rw-r--r--web/client.html17
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 @@
</head>
<body>
+ <h2>Add your song</h2>
+ <div id="add">
+ <form id="searchForm" onsubmit="return submitSearch()">
+ <input id="searchInput" name="pattern" type="text" value="Title/Artist/Album/...">
+ <button id="searchButton">Search</button>
+ </form>
+ </div>
+
<h2>Playing</h2>
<p id='playing'></p>
<div id='controls'>
- <button id="ppbutton" form='ppform'>Play</button>
+ <button id="ppbutton">Play</button>
</div>
<h2>Playlist</h2>