diff --git a/internal/server/control/control.go b/internal/server/control/control.go index 668bccf..8110f66 100644 --- a/internal/server/control/control.go +++ b/internal/server/control/control.go @@ -1,35 +1,39 @@ package control import ( + "log" "net/http" "github.com/gorilla/mux" + + "github.com/BBVA/kapow/internal/server/user" ) -type ControlServer struct { - bindAddr string - ctrlMux *mux.Router +func Run(bindAddr string) { + + r := mux.NewRouter() + + r.HandleFunc("/routes/{id}", removeRoute). + Methods("DELETE") + r.HandleFunc("/routes", listRoutes). + Methods("GET") + r.HandleFunc("/routes", addRoute). + Methods("POST") + + log.Fatal(http.ListenAndServe(bindAddr, r)) } -var Server *ControlServer - -func (srv *ControlServer) Run(bindAddr string) { - - Server = &ControlServer{bindAddr, mux.NewRouter()} - - Server.ctrlMux.HandleFunc("/routes/{id}", Server.removeRoute).Methods("DELETE") - Server.ctrlMux.HandleFunc("/routes", Server.listRoutes).Methods("GET") - Server.ctrlMux.HandleFunc("/routes", Server.addRoute).Methods("POST") -} - -func (srv *ControlServer) removeRoute(http.ResponseWriter, *http.Request) { +func removeRoute(http.ResponseWriter, *http.Request) { } -func (srv *ControlServer) listRoutes(http.ResponseWriter, *http.Request) { +func listRoutes(http.ResponseWriter, *http.Request) { + + user.Routes.Snapshot() } -func (srv *ControlServer) addRoute(http.ResponseWriter, *http.Request) { +func addRoute(http.ResponseWriter, *http.Request) { + user.Routes.Append(routeSpec) } diff --git a/internal/server/control/control_test.go b/internal/server/control/control_test.go index adf0cc5..7a89f09 100644 --- a/internal/server/control/control_test.go +++ b/internal/server/control/control_test.go @@ -4,6 +4,6 @@ import ( "testing" ) -func TestNewControlServerFillsTheStructCorrectly(t *testing.T) { +func Test(t *testing.T) { } diff --git a/internal/server/server.go b/internal/server/server.go index 08b7af5..618fb91 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -4,6 +4,8 @@ import ( "fmt" "net/url" "strconv" + + "github.com/BBVA/kapow/internal/server/control" ) // StartServer Starts one instance of each server in a goroutine and remains listening on a channel for trace events generated by them @@ -24,7 +26,7 @@ func StartServer(bindAddr, certfile, keyfile string, interactive bool) error { dataBindAddr := fmt.Sprintf("%s:%d", userBindAddr.Host, userPort+2) fmt.Printf("User server bind address: %s, Control server bind address: %s, Data server bind address: %s", bindAddr, ctrlBindAddr, dataBindAddr) - //go ctrlServer.Start(traceChannel) + go control.Run(ctrlBindAddr) //go dataServer.Start(traceChannel) //go ctrlServer.Start(traceChannel)