Rewrote LastSong handler using caching IcecastLastSong function. And IcecastLastPlayedSongs is using cache as well. Now it takes between 300 nanoseconds to 2 microseconds to get a list of last songs.
This commit is contained in:
parent
3b51fffa60
commit
70580298d2
@ -113,22 +113,22 @@ func (h *RadioHandlers) Stats(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func (h *RadioHandlers) LastSong(w http.ResponseWriter, r *http.Request) {
|
||||
songs, err := radio.IcecastLastPlayedSongs(1, h.conf.Icecast.Playlist)
|
||||
song, err := radio.IcecastLastSong(h.conf.Icecast.Playlist)
|
||||
if err != nil {
|
||||
h.logErr.Println("cannot retrieve last songs:", err)
|
||||
}
|
||||
|
||||
if len(songs) == 0 {
|
||||
if song.Artist == "" {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
if tim, err := time.Parse("15:04-0700", songs[0].Time); err == nil {
|
||||
songs[0].Time = utils.ToClientTimezone(tim, r).Format("15:04")
|
||||
if tim, err := time.Parse("15:04-0700", song.Time); err == nil {
|
||||
song.Time = utils.ToClientTimezone(tim, r).Format("15:04")
|
||||
}
|
||||
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(songs[0])
|
||||
json.NewEncoder(w).Encode(song)
|
||||
}
|
||||
|
||||
func (h *RadioHandlers) Playlist(w http.ResponseWriter, _ *http.Request) {
|
||||
|
Loading…
Reference in New Issue
Block a user