stream-server/http/server.go

37 lines
856 B
Go
Raw Normal View History

2023-08-21 12:19:31 +05:00
package http
import (
2023-08-21 12:39:38 +05:00
"net/http"
"strings"
"os"
2023-08-21 12:19:31 +05:00
)
func NewServer(port string) (error) {
2023-08-21 12:39:38 +05:00
server := http.NewServeMux()
server_setup(server)
if err := http.ListenAndServe(":" + port, server); err != nil {
2023-08-21 12:19:31 +05:00
return err
}
return nil
}
2023-08-21 12:39:38 +05:00
func server_setup(server *http.ServeMux) {
server.HandleFunc("/", serve_main_page)
server.HandleFunc("/live/", serve_live_playlist)
2023-08-21 12:19:31 +05:00
}
func serve_live_playlist(w http.ResponseWriter, r *http.Request) {
stream_id := strings.TrimPrefix(r.URL.Path, "/live/")
base_dir, _ := os.UserHomeDir()
stream_playlist_path := base_dir + "/live/" + stream_id + "/stream.m3u8"
if _, err := os.Stat(stream_playlist_path); err != nil {
http.NotFound(w, r)
} else {
http.ServeFile(w, r, stream_playlist_path)
2023-08-21 12:19:31 +05:00
}
}
func serve_main_page(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "static/index.html")
}