From 5156d4a062c9a8980df8d1a90a665f82c3a78461 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Thu, 17 Jul 2025 20:56:43 +0200 Subject: [PATCH] Add handlers for help, version, and device listing endpoints --- server/pkg/handlers.go | 63 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 server/pkg/handlers.go diff --git a/server/pkg/handlers.go b/server/pkg/handlers.go new file mode 100644 index 0000000..c442dda --- /dev/null +++ b/server/pkg/handlers.go @@ -0,0 +1,63 @@ +package llamactl + +import ( + "net/http" + "os/exec" +) + +// HelpHandler godoc +// @Summary Get help for llama server +// @Description Returns the help text for the llama server command +// @Tags server +// #Produces text/plain +// @Success 200 {string} string "Help text" +// @Failure 500 {string} string "Internal Server Error" +// @Router /server/help [get] +func HelpHandler(w http.ResponseWriter, r *http.Request) { + helpCmd := exec.Command("llama-server", "--help") + output, err := helpCmd.CombinedOutput() + if err != nil { + http.Error(w, "Failed to get help: "+err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "text/plain") + w.Write(output) +} + +// VersionHandler godoc +// @Summary Get version of llama server +// @Description Returns the version of the llama server command +// @Tags server +// #Produces text/plain +// @Success 200 {string} string "Version information" +// @Failure 500 {string} string "Internal Server Error" +// @Router /server/version [get] +func VersionHandler(w http.ResponseWriter, r *http.Request) { + versionCmd := exec.Command("llama-server", "--version") + output, err := versionCmd.CombinedOutput() + if err != nil { + http.Error(w, "Failed to get version: "+err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "text/plain") + w.Write(output) +} + +// ListDevicesHandler godoc +// @Summary List available devices for llama server +// @Description Returns a list of available devices for the llama server +// @Tags server +// #Produces text/plain +// @Success 200 {string} string "List of devices" +// @Failure 500 {string} string "Internal Server Error" +// @Router /server/devices [get] +func ListDevicesHandler(w http.ResponseWriter, r *http.Request) { + listCmd := exec.Command("llama-server", "--list-devices") + output, err := listCmd.CombinedOutput() + if err != nil { + http.Error(w, "Failed to list devices: "+err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "text/plain") + w.Write(output) +}