From 020676f11399351f6e84b51f1c303a5069be3704 Mon Sep 17 00:00:00 2001 From: "Alexander \"Arav\" Andreev" Date: Sat, 7 Oct 2023 05:23:45 +0400 Subject: [PATCH] While I want thread safety I also want a not set current song to not appear in a status JSON object. --- internal/http/dj_handlers.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/http/dj_handlers.go b/internal/http/dj_handlers.go index c549944..cfb12fd 100644 --- a/internal/http/dj_handlers.go +++ b/internal/http/dj_handlers.go @@ -92,13 +92,18 @@ func (dj *DJHandlers) Songs(w http.ResponseWriter, r *http.Request) { func (dj *DJHandlers) Status(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") + var curSong *radio.Song = nil + if dj.songList.Current() != nil { + curSong = &radio.Song{} + *curSong = *dj.songList.Current() + } err := json.NewEncoder(w).Encode(&struct { - Current radio.Song `json:"current_song,omitempty"` + Current *radio.Song `json:"current_song,omitempty"` Listeners *radio.ListenerCounter `json:"listeners"` List []radio.Song `json:"last_songs,omitempty"` Mls *radio.MostListenedSong `json:"most_listened_song,omitempty"` }{ - Current: dj.songList.Current(), + Current: curSong, Listeners: dj.listeners, List: dj.songList.List(), Mls: radio.MostListened()})