2023-08-21 12:19:31 +05:00
|
|
|
package http
|
|
|
|
|
|
|
|
import (
|
2023-08-21 12:39:38 +05:00
|
|
|
"net/http"
|
2023-08-21 13:02:06 +05:00
|
|
|
"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) {
|
2023-08-21 13:02:06 +05:00
|
|
|
server.HandleFunc("/", serve_main_page)
|
|
|
|
server.HandleFunc("/live/", serve_live_playlist)
|
2023-08-21 12:19:31 +05:00
|
|
|
}
|
|
|
|
|
2023-08-21 13:02:06 +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
|
|
|
}
|
|
|
|
}
|
2023-08-21 13:02:06 +05:00
|
|
|
|
|
|
|
func serve_main_page(w http.ResponseWriter, r *http.Request) {
|
|
|
|
http.ServeFile(w, r, "static/index.html")
|
|
|
|
}
|