summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-05-11 12:59:12 +0300
committerPaul Buetow <paul@buetow.org>2024-05-11 12:59:12 +0300
commit2337c4c11eda933f9c91b46defca63dc5557eb19 (patch)
treed6c607013e4fba6fce8dcbbd4b9e53c9e15341be /cmd
parent653057ac9d2ba6783233bc0f59a6a7ca111ad11c (diff)
move server struct to server.go
Diffstat (limited to 'cmd')
-rw-r--r--cmd/gosd/main.go60
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)
}
}