// Package webdebug provides a http server for local debugging. // The server is explicitly for localhost only as it offers // a lot more control and access than the public one. // Additionally, there is no guarantee for functional authentication // and authorisation of requests. // Using it can be considered a security risk. // // There is no guarantee for API stability. It might change drastically // across versions or even commits and doesn't need announcements package webdebug import ( "context" "net/http" webutils "git.mstar.dev/mstar/goutils/http" ) type Server struct { server *http.Server } func New(addr string) *Server { handler := http.NewServeMux() handler.HandleFunc("GET /non-deleted", getNonDeletedUsers) handler.HandleFunc("POST /local-user", createLocalUser) handler.HandleFunc("GET /delete", deleteUser) handler.HandleFunc("POST /post-as", postAs) handler.HandleFunc("GET /notes-for", notesFrom) web := http.Server{ Addr: addr, Handler: webutils.ChainMiddlewares( handler, webutils.BuildLoggingMiddleware(map[string]string{"server": "debug"}), ), } return &Server{&web} } func (s *Server) Start() error { if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { return err } return nil } func (s *Server) Stop() error { return s.server.Shutdown(context.Background()) }