Files
ddc/internal/server/settings_handlers.go
T

40 lines
1.1 KiB
Go

package server
import (
"log/slog"
"net/http"
"ddc/internal/preferences"
)
type settingsResponse struct {
Settings preferences.Preferences `json:"settings"`
DownloadDir string `json:"downloadDir"`
LibraryRoots []string `json:"libraryRoots"`
}
func (server *Server) handleGetSettings(writer http.ResponseWriter, _ *http.Request) {
writeJSON(writer, http.StatusOK, server.settingsSnapshot())
}
func (server *Server) handleUpdateSettings(writer http.ResponseWriter, request *http.Request) {
var body preferences.Preferences
if !decodeBody(writer, request, &body) {
return
}
if err := server.manager.UpdatePreferences(body); err != nil {
writeFailure(writer, request, err)
return
}
slog.Info("settings updated", "request_id", requestIDFrom(request))
writeJSON(writer, http.StatusOK, server.settingsSnapshot())
}
func (server *Server) settingsSnapshot() settingsResponse {
return settingsResponse{
Settings: server.manager.Preferences(),
DownloadDir: server.settings.DownloadDir,
LibraryRoots: server.settings.LibraryRoots,
}
}