nurse/cmd/server.go
Peter Kurfer 9791e9f282
All checks were successful
Renovate / renovate (push) Successful in 40s
Go build / build (push) Successful in 8m44s
feat: refactor to server and exec-check subcommands
- allow to interactively execute checks instead of server mode
- use urfave/cli for subcommands
2023-12-04 11:22:49 +01:00

40 lines
734 B
Go

package cmd
import (
"errors"
"log/slog"
"net/http"
"time"
"code.icb4dc0.de/prskr/nurse/api"
"github.com/urfave/cli/v2"
)
type server struct {
*app
}
func (a *server) RunServer(ctx *cli.Context) error {
logger := slog.Default()
mux, err := api.PrepareMux(a.nurseInstance, a.registry, a.lookup)
if err != nil {
logger.Error("Failed to prepare server mux", slog.String("err", err.Error()))
}
srv := http.Server{
Addr: ":8080",
Handler: mux,
ReadHeaderTimeout: 100 * time.Millisecond,
}
if err := srv.ListenAndServe(); err != nil {
if errors.Is(err, http.ErrServerClosed) {
return nil
}
logger.Error("Failed to serve HTTP", slog.String("err", err.Error()))
}
return nil
}