change schedule to settings with new default interval

This commit is contained in:
Adrian Zürcher
2026-01-21 09:03:53 +01:00
parent 66c6d9a3fb
commit d1f1ad563b
6 changed files with 191 additions and 86 deletions

View File

@@ -47,7 +47,7 @@ func InfoHandler(w http.ResponseWriter, r *http.Request) {
data := map[string]string{
"ip": GetLocalIP(),
"port": port,
"speed": speed,
"speed": GetInterval(),
}
json.NewEncoder(w).Encode(data)
}

View File

@@ -1,42 +0,0 @@
package handlers
import (
"encoding/json"
"net/http"
"os"
"slideshowApp/utils"
)
var scheduleFile = "./data/schedule.json"
type Schedule map[string]any
func SaveSchedule(w http.ResponseWriter, r *http.Request) {
var s Schedule
if err := json.NewDecoder(r.Body).Decode(&s); err != nil {
utils.SendJSONError(w, "Invalid input", http.StatusBadRequest)
return
}
data, err := json.MarshalIndent(s, "", " ")
if err != nil {
utils.SendJSONError(w, "Encoding failed", http.StatusInternalServerError)
return
}
err = os.WriteFile(scheduleFile, data, 0644)
if err != nil {
utils.SendJSONError(w, "write file failed", http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}
func GetSchedule(w http.ResponseWriter, r *http.Request) {
data, err := os.ReadFile(scheduleFile)
if err != nil {
json.NewEncoder(w).Encode(Schedule{})
return
}
w.Write(data)
}

81
handlers/settings.go Normal file
View File

@@ -0,0 +1,81 @@
package handlers
import (
"encoding/json"
"fmt"
"net/http"
"os"
"path/filepath"
"runtime"
"slideshowApp/env"
"slideshowApp/utils"
)
var settingsFile = "settings.json"
type Settings map[string]any
func SaveSettings(w http.ResponseWriter, r *http.Request) {
var s Settings
if err := json.NewDecoder(r.Body).Decode(&s); err != nil {
fmt.Println(12, err)
utils.SendJSONError(w, "Invalid input", http.StatusBadRequest)
return
}
data, err := json.MarshalIndent(s, "", " ")
if err != nil {
fmt.Println(13, err)
utils.SendJSONError(w, "Encoding failed", http.StatusInternalServerError)
return
}
err = os.WriteFile(getFilePath(), data, 0644)
if err != nil {
fmt.Println(14, err)
utils.SendJSONError(w, "write file failed", http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}
func GetSettings(w http.ResponseWriter, r *http.Request) {
data, err := os.ReadFile(getFilePath())
if err != nil {
json.NewEncoder(w).Encode(Settings{"default_interval": GetInterval()})
return
}
w.Write(data)
}
func GetInterval() string {
data, err := os.ReadFile(getFilePath())
if err != nil {
interval := env.IntervalDefault.GetValue()
if interval == "" {
interval = "10"
}
return interval
}
var settings Settings
err = json.Unmarshal(data, &settings)
if err != nil {
return "10"
}
if interval, ok := settings["default_interval"]; ok {
return interval.(string)
}
return "10"
}
func getFilePath() string {
switch runtime.GOOS {
case "linux":
return filepath.Join(".", "data", settingsFile)
default:
return settingsFile
}
}