owncast/static/static.go

48 lines
1.1 KiB
Go
Vendored

package static
import (
"embed"
"html/template"
"os"
"path/filepath"
)
//go:embed admin/*
//go:embed admin/_next/static
//go:embed admin/_next/static/chunks/pages/*.js
//go:embed admin/_next/static/*/*.js
var adminFiles embed.FS
// GetAdmin will return an embedded filesystem reference to the admin web app.
func GetAdmin() embed.FS {
return adminFiles
}
//go:embed metadata.html.tmpl
var botMetadataTemplate embed.FS
// GetBotMetadataTemplate will return the bot/scraper metadata template.
func GetBotMetadataTemplate() (*template.Template, error) {
name := "metadata.html.tmpl"
t, err := template.ParseFS(botMetadataTemplate, name)
tmpl := template.Must(t, err)
return tmpl, err
}
//go:embed offline.ts
var offlineVideoSegment []byte
// GetOfflineSegment will return the offline video segment data.
func GetOfflineSegment() []byte {
return getFileSystemStaticFileOrDefault("offline.ts", offlineVideoSegment)
}
func getFileSystemStaticFileOrDefault(path string, defaultData []byte) []byte {
fullPath := filepath.Join("static", path)
data, err := os.ReadFile(fullPath) //nolint: gosec
if err != nil {
return defaultData
}
return data
}