diff --git a/internal/http/dj_handlers.go b/internal/http/dj_handlers.go index c515135..2e62437 100644 --- a/internal/http/dj_handlers.go +++ b/internal/http/dj_handlers.go @@ -10,16 +10,14 @@ import ( "time" ) -var songList radio.SongList - type DJHandlers struct { listeners *radio.ListenerCounter playlist *radio.Playlist + songList *radio.SongList } -func NewDJHandlers(l *radio.ListenerCounter, p *radio.Playlist, slLen int) *DJHandlers { - songList = *radio.NewSongList(slLen) - return &DJHandlers{listeners: l, playlist: p} +func NewDJHandlers(l *radio.ListenerCounter, p *radio.Playlist, sl *radio.SongList, slLen int) *DJHandlers { + return &DJHandlers{listeners: l, playlist: p, songList: sl} } func (dj *DJHandlers) ListenersGet(w http.ResponseWriter, _ *http.Request) { @@ -30,8 +28,8 @@ func (dj *DJHandlers) ListenersGet(w http.ResponseWriter, _ *http.Request) { func (dj *DJHandlers) ListenersInc(w http.ResponseWriter, _ *http.Request) { l := dj.listeners.Inc() go func() { - if l > songList.Current().MaxListeners { - songList.Current().MaxListeners = l + if l > dj.songList.Current().MaxListeners { + dj.songList.Current().MaxListeners = l } }() w.WriteHeader(http.StatusCreated) @@ -71,7 +69,7 @@ func (dj *DJHandlers) PlaylistNext(w http.ResponseWriter, _ *http.Request) { MaxListeners: dj.listeners.Current(), StartAt: time.Now()} // radio.CheckAndUpdateMostListenedSong(song, currentSong) - songList.Add(song) + dj.songList.Add(song) }() } fmt.Fprint(w, nxt) @@ -79,7 +77,7 @@ func (dj *DJHandlers) PlaylistNext(w http.ResponseWriter, _ *http.Request) { func (dj *DJHandlers) Song(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") - err := json.NewEncoder(w).Encode(songList.Current()) + err := json.NewEncoder(w).Encode(dj.songList.Current()) if err != nil { log.Println("DJHandlers.Song:", err) http.Error(w, "cannot obtain current song", http.StatusInternalServerError) @@ -88,7 +86,7 @@ func (dj *DJHandlers) Song(w http.ResponseWriter, r *http.Request) { func (dj *DJHandlers) Songs(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") - err := json.NewEncoder(w).Encode(songList.List()) + err := json.NewEncoder(w).Encode(dj.songList.List()) if err != nil { log.Println("DJHandlers.Songs:", err) http.Error(w, "cannot obtain list of last songs", http.StatusInternalServerError) @@ -103,9 +101,9 @@ func (dj *DJHandlers) Status(w http.ResponseWriter, r *http.Request) { List []radio.Song `json:"last_songs,omitempty"` Mls *radio.MostListenedSong `json:"most_listened_song,omitempty"` }{ - Current: songList.Current(), + Current: dj.songList.Current(), Listeners: dj.listeners, - List: songList.List(), + List: dj.songList.List(), Mls: radio.MostListened()}) if err != nil { log.Println("DJHandlers.Status:", err)