This commit is contained in:
ston1th 2023-03-21 01:00:13 +01:00
commit 05a68df896
15 changed files with 158 additions and 135 deletions

View file

@ -34,21 +34,30 @@ type notFoundHandler struct {
}
func (nf *notFoundHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
types.NewContext(w, r, nf.s.Data, nf.s.log).Err(types.ErrInvalidAPIRoute)
types.NewContext(w, r, nil, nf.s.log).Err(types.ErrInvalidAPIRoute)
}
// NewHTTPServer returns a new HTTPServer
func NewServer(log logr.Logger, listen, socket string) (*Server, error) {
func NewServer(log logr.Logger, listen, socket string, db *db.DB) (*Server, error) {
m := mux.NewRouter()
s := &Server{
mux: mux.NewRouter(),
log: log,
Data: &types.ContextData{Approver: types.NewApprover()},
mux: m,
log: log,
Data: &types.ContextData{
Approver: types.NewApprover(),
DB: db,
},
srv: &http.Server{
Handler: m,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
},
}
l, err := net.Listen("tcp", listen)
list, err := net.Listen("tcp", listen)
if err != nil {
return nil, err
}
s.listen = l
s.listen = list
sock, err := unixListener(socket)
if err != nil {
@ -56,29 +65,11 @@ func NewServer(log logr.Logger, listen, socket string) (*Server, error) {
}
s.socket = sock
s.mux.NotFoundHandler = &notFoundHandler{s}
m.NotFoundHandler = &notFoundHandler{s}
for _, v := range serverv1.Routes {
s.mux.HandleFunc(v.Path, s.contextWrapper(v.Handler)).Methods(v.Methods...)
m.HandleFunc(v.Path, s.contextWrapper(v.Handler)).Methods(v.Methods...)
}
return s, nil
}
func unixListener(socket string) (sock net.Listener, err error) {
sock, err = net.Listen("unix", socket)
if err != nil {
return
}
err = os.Chmod(socket, 0660)
return
}
func (s *Server) Start(db *db.DB) {
s.srv = &http.Server{
Handler: s.mux,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
}
s.Data.DB = db
go func() {
err := s.srv.Serve(s.listen)
if err != nil && err != http.ErrServerClosed {
@ -91,6 +82,15 @@ func (s *Server) Start(db *db.DB) {
s.log.Error(err, "")
}
}()
return s, nil
}
func unixListener(socket string) (sock net.Listener, err error) {
sock, err = net.Listen("unix", socket)
if err != nil {
return
}
err = os.Chmod(socket, 0660)
return
}