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, } }