diff options
| author | Paul Buetow <paul@buetow.org> | 2024-05-11 12:59:12 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-05-11 12:59:12 +0300 |
| commit | 2337c4c11eda933f9c91b46defca63dc5557eb19 (patch) | |
| tree | d6c607013e4fba6fce8dcbbd4b9e53c9e15341be /cmd | |
| parent | 653057ac9d2ba6783233bc0f59a6a7ca111ad11c (diff) | |
move server struct to server.go
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/gosd/main.go | 60 |
1 files changed, 12 insertions, 48 deletions
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) } } |
