1
0
dwelling-radio/internal/http/handlers.go

56 lines
1.5 KiB
Go
Raw Normal View History

package http
2022-03-08 01:17:24 +04:00
import (
"dwelling-radio/internal/radio"
"dwelling-radio/pkg/utils"
"dwelling-radio/web"
2022-03-08 01:17:24 +04:00
"net/http"
"os"
2022-03-08 01:17:24 +04:00
)
type Handlers struct {
songList *radio.SongList
listeners *radio.ListenerCounter
2023-10-08 00:52:40 +04:00
mostLSong *radio.MostListenedSong
filelistPath string
2022-03-08 01:17:24 +04:00
}
2023-10-08 00:52:40 +04:00
func NewHandlers(filelistPath string, songList *radio.SongList, listeners *radio.ListenerCounter, mls *radio.MostListenedSong) *Handlers {
return &Handlers{
songList: songList,
filelistPath: filelistPath,
2023-10-08 00:52:40 +04:00
listeners: listeners,
mostLSong: mls}
2022-03-08 01:17:24 +04:00
}
func (h *Handlers) Index(w http.ResponseWriter, r *http.Request) {
2023-10-08 00:52:40 +04:00
web.Index(utils.MainSite(r.Host), h.songList, h.listeners, h.mostLSong.Get(), r, w)
2022-03-08 01:17:24 +04:00
}
func (h *Handlers) Playlist(w http.ResponseWriter, _ *http.Request) {
2023-02-23 17:49:01 +04:00
w.Header().Add("Content-Disposition", "attachment; filename=\"radio.arav.su.m3u\"")
2023-07-22 22:58:42 +04:00
fc, _ := web.AssetsGetFile("playlist.m3u")
w.Write(fc)
2022-03-08 01:17:24 +04:00
}
func (h *Handlers) Filelist(w http.ResponseWriter, _ *http.Request) {
2023-02-19 22:26:25 +04:00
w.Header().Add("Content-Type", "text/html")
data, _ := os.ReadFile(h.filelistPath)
w.Write(data)
}
2023-02-19 21:22:56 +04:00
func RobotsTxt(w http.ResponseWriter, _ *http.Request) {
2023-02-19 21:22:56 +04:00
w.Header().Add("Content-Disposition", "attachment; filename=\"robots.txt\"")
w.Write([]byte("User-agent: *\nDisallow: /assets/\nDisallow: /live/"))
}
2023-05-21 22:35:37 +04:00
func Favicon(w http.ResponseWriter, r *http.Request) {
data, _ := web.AssetsGetFile("img/favicon.svg")
w.Write(data)
}
2023-05-21 22:44:09 +04:00
func SitemapXML(w http.ResponseWriter, r *http.Request) {
data, _ := web.AssetsGetFile("sitemap.xml")
w.Write(data)
}