Files
slideshowApp/main.go
2026-01-17 22:39:50 +01:00

71 lines
2.1 KiB
Go

package main
import (
"fmt"
"log"
"net/http"
"os"
"slideshowApp/env"
"slideshowApp/handlers"
"slideshowApp/utils"
"time"
"github.com/gorilla/mux"
)
var staticFolder = "./web/static/"
func main() {
env.Load(".env")
r := mux.NewRouter()
uploadFolder := env.PhotoDir.GetValue()
if _, err := os.Stat(uploadFolder); err != nil {
fmt.Println("upload folder for images not found: ", uploadFolder)
fmt.Println("use fallback folder")
uploadFolder = "./images"
env.PhotoDir.SetValue(uploadFolder)
}
fmt.Println("upload folder for images: ", uploadFolder)
r.PathPrefix("/uploads/").Handler(http.StripPrefix("/uploads/", http.FileServer(http.Dir(uploadFolder))))
r.HandleFunc("/api/images", handlers.ListFilesHandler).Methods("GET")
r.HandleFunc("/ws", handlers.Websocket)
r.HandleFunc("/upload", handlers.UploadHandler).Methods("POST")
r.HandleFunc("/settings", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, staticFolder+"settings.html") })
r.HandleFunc("/api/save-schedule", handlers.SaveSchedule).Methods("POST")
r.HandleFunc("/api/get-schedule", handlers.GetSchedule).Methods("GET")
r.HandleFunc("/api/delete", handlers.DeleteHandler).Methods("POST")
r.HandleFunc("/manage", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, staticFolder+"manage.html")
})
r.HandleFunc("/api/info", handlers.InfoHandler).Methods("GET")
r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, staticFolder+"index.html")
})
// We add a route for the slideshow page specifically
r.HandleFunc("/slideshow", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, staticFolder+"frame.html")
})
host := env.Host.GetValue()
port := env.Port.GetValue()
url := fmt.Sprintf("%s:%s", host, port)
go func() {
time.Sleep(3 * time.Second)
if err := utils.OpenBrowser(fmt.Sprintf("%s:%s/slideshow", handlers.GetLocalIP(), port)); err != nil {
fmt.Println(err)
}
}()
fmt.Println("Server running at", url)
log.Fatal(http.ListenAndServe(url, r))
}