1
0

A unified ServeAsset() func was introduced. AssetsGetFile() now will panic if a file doesn't exists, because it must not be the case.

This commit is contained in:
Alexander Andreev 2024-04-20 18:54:05 +04:00
parent 5575408560
commit 0244f6afd5
Signed by: Arav
GPG Key ID: 25969B23DCB5CA34
4 changed files with 24 additions and 23 deletions

View File

@ -57,12 +57,12 @@ func main() {
r.Handler(http.MethodGet, "/", hand.Index) r.Handler(http.MethodGet, "/", hand.Index)
r.Handler(http.MethodGet, "/playlist", hand.Playlist) r.Handler(http.MethodGet, "/playlist", ihttp.ServeAsset("playlist.m3u", "", "radio.arav.su.m3u"))
r.Handler(http.MethodGet, "/filelist", hand.Filelist) r.Handler(http.MethodGet, "/filelist", hand.Filelist)
r.Handler(http.MethodGet, "/robots.txt", ihttp.RobotsTxt) r.Handler(http.MethodGet, "/robots.txt", ihttp.ServeAsset("robots.txt", "text/plain", ""))
r.Handler(http.MethodGet, "/sitemap.xml", ihttp.SitemapXML) r.Handler(http.MethodGet, "/sitemap.xml", ihttp.ServeAsset("sitemap.xml", "application/xml", ""))
r.Handler(http.MethodGet, "/favicon.svg", ihttp.Favicon) r.Handler(http.MethodGet, "/favicon.svg", ihttp.ServeAsset("favicon.svg", "image/svg", ""))
r.ServeStatic("/assets/*filepath", web.Assets()) r.ServeStatic("/assets/*filepath", web.Assets())

View File

@ -27,29 +27,22 @@ func (h *Handlers) Index(w http.ResponseWriter, r *http.Request) {
web.Index(utils.MainSite(r.Host), h.songList, h.listeners, h.mostLSong.Get(), r, w) web.Index(utils.MainSite(r.Host), h.songList, h.listeners, h.mostLSong.Get(), r, w)
} }
func (h *Handlers) Playlist(w http.ResponseWriter, _ *http.Request) {
w.Header().Add("Content-Disposition", "attachment; filename=\"radio.arav.su.m3u\"")
fc, _ := web.AssetsGetFile("playlist.m3u")
w.Write(fc)
}
func (h *Handlers) Filelist(w http.ResponseWriter, _ *http.Request) { func (h *Handlers) Filelist(w http.ResponseWriter, _ *http.Request) {
w.Header().Add("Content-Type", "text/html") w.Header().Add("Content-Type", "text/html")
data, _ := os.ReadFile(h.filelistPath) data, _ := os.ReadFile(h.filelistPath)
w.Write(data) w.Write(data)
} }
func RobotsTxt(w http.ResponseWriter, _ *http.Request) { func ServeAsset(path, mime, attachement string) func(http.ResponseWriter, *http.Request) {
w.Header().Add("Content-Disposition", "attachment; filename=\"robots.txt\"") return func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("User-agent: *\nDisallow: /assets/\nDisallow: /live/")) if mime != "" {
w.Header().Add("Content-Type", mime)
} }
func Favicon(w http.ResponseWriter, r *http.Request) { if attachement != "" {
data, _ := web.AssetsGetFile("img/favicon.svg") w.Header().Add("Content-Disposition", "attachment; filename=\""+path+"\"")
w.Write(data)
} }
func SitemapXML(w http.ResponseWriter, r *http.Request) { w.Write(web.AssetsGetFile(path))
data, _ := web.AssetsGetFile("sitemap.xml") }
w.Write(data)
} }

3
web/assets/robots.txt Normal file
View File

@ -0,0 +1,3 @@
User-agent: *
Disallow: /assets/
Disallow: /live/

View File

@ -17,6 +17,11 @@ func Assets() http.FileSystem {
return http.FS(f) return http.FS(f)
} }
func AssetsGetFile(path string) ([]byte, error) { func AssetsGetFile(path string) []byte {
return assetsDir.ReadFile("assets/" + path) data, err := assetsDir.ReadFile("assets/" + path)
if err != nil {
panic(err)
}
return data
} }