From 2337c4c11eda933f9c91b46defca63dc5557eb19 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 11 May 2024 12:59:12 +0300 Subject: move server struct to server.go --- cmd/gosd/main.go | 60 ++++++++++++-------------------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-) (limited to 'cmd') diff --git a/cmd/gosd/main.go b/cmd/gosd/main.go index f0ad096..3df825f 100644 --- a/cmd/gosd/main.go +++ b/cmd/gosd/main.go @@ -7,43 +7,10 @@ import ( "net/http" "codeberg.org/snonux/gos/internal/config" + "codeberg.org/snonux/gos/internal/server" "codeberg.org/snonux/gos/internal/server/handle" - "codeberg.org/snonux/gos/internal/server/health" ) -const healthHandlerName = `healthHandler` - -type server struct { - hs health.Status - conf config.Config -} - -type handlerFuncWithError func(http.ResponseWriter, *http.Request) error - -func (s server) httpHandle(name string, handler handlerFuncWithError) { - var ( - handlerPath = fmt.Sprintf("/%s", name) - handlerName = fmt.Sprintf("%sHandler", name) - ) - - http.HandleFunc(handlerPath, func(w http.ResponseWriter, r *http.Request) { - log.Println("Someone requested", handlerName) - - // The health endpoint doesn't require an API key - if handlerName != healthHandlerName && r.Header.Get("X-API-KEY") != s.conf.ApiKey { - http.Error(w, "Invalid API key", http.StatusUnauthorized) - log.Println("Unauthorized access attempt to", handlerName) - return - } - - if err := handler(w, r); err != nil { - s.hs.Set(health.Critical, handlerName, err.Error()) - return - } - s.hs.Clear(handlerName) - }) -} - func main() { configFile := flag.String("cfg", "/etc/gos.json", "The configuration file") @@ -52,30 +19,27 @@ func main() { log.Fatal("error building config:", err) } - serv := server{ - conf: conf, - hs: health.NewStatus(), - } + serv := server.New(conf) - serv.httpHandle("health", func(w http.ResponseWriter, r *http.Request) error { - fmt.Fprint(w, serv.hs.String()) + serv.Handle("health", func(w http.ResponseWriter, r *http.Request) error { + fmt.Fprint(w, serv.Status.String()) return nil }) - serv.httpHandle("submit", func(w http.ResponseWriter, r *http.Request) error { - return handle.Submit(w, r, serv.conf.DataDir) + serv.Handle("submit", func(w http.ResponseWriter, r *http.Request) error { + return handle.Submit(w, r, conf.DataDir) }) - serv.httpHandle("list", func(w http.ResponseWriter, r *http.Request) error { - return handle.List(w, r, serv.conf.DataDir) + serv.Handle("list", func(w http.ResponseWriter, r *http.Request) error { + return handle.List(w, r, conf.DataDir) }) - serv.httpHandle("get", func(w http.ResponseWriter, r *http.Request) error { - return handle.Get(w, r, serv.conf.DataDir) + serv.Handle("get", func(w http.ResponseWriter, r *http.Request) error { + return handle.Get(w, r, conf.DataDir) }) - log.Println("Server is starting on", serv.conf.ListenAddr) - if err := http.ListenAndServe(serv.conf.ListenAddr, nil); err != err { + log.Println("Server is starting on", conf.ListenAddr) + if err := http.ListenAndServe(conf.ListenAddr, nil); err != err { log.Fatal("error starting server:", err) } } -- cgit v1.2.3