X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=vscpweb.go;h=4188e771bc9a65acb2dc806d7c270e11bf7a78a4;hb=HEAD;hp=5a3f2dde5eafdc944169542d5406bee8e490c6f0;hpb=6076121bafede5edfcba19f46d004e009a1f8794;p=VSCPweb%2F.git diff --git a/vscpweb.go b/vscpweb.go index 5a3f2dd..4188e77 100644 --- a/vscpweb.go +++ b/vscpweb.go @@ -4,9 +4,12 @@ package main import ( + "flag" "fmt" "html/template" + "math/rand" "net/http" + "strconv" hh "healthHandlers" //mh "managementHandlers" @@ -28,11 +31,17 @@ func main() { s.Router.Handle("/static/*", http.StripPrefix("/static/", fs)) //staring up the server: - http.ListenAndServe(":8001", s.Router) + port := flag.Int("port", 8001, "Port in which the server will be started") + flag.Parse() + s.port = strconv.Itoa(*port) + s.port = ":" + s.port + + s.startUp() } type server struct { Router *chi.Mux + port string //suggestion to add config settings or DB in here } @@ -42,6 +51,12 @@ func CreateNewServer() *server { return s } +//startUp is the function for the server to start listening +func (s *server) startUp() { + //TODO(josuer08) add other things needed at startup + http.ListenAndServe(s.port,s.Router) +} + func (s *server) MountHandlers() { //Creation of the router: @@ -61,7 +76,7 @@ func (s *server) MountHandlers() { //example: //example of a get function and its handler s.Router.Get("/example/{first}/{second:[0-9]+}", ExampleHandler) - s.Router.Get("/", indexHandler) + //s.Router.Get("/", indexHandler) //Creating subrouters: //healthRouter check on the health of nodes or main server @@ -88,10 +103,10 @@ func (s *server) MountHandlers() { /////////////////////////////////////////////////////////////////////////////// //generic ryu version at first... - //s.Router.Get("/", ) - //s.Router.Get("/access", ) - //s.Router.Get("/stats", ) - //s.Router.Get("/topology", ) + s.Router.Get("/", indexHandler) + s.Router.Get("/access", accessHandler) + s.Router.Get("/stats", statsHandler) + s.Router.Get("/topology", topologyHandler) //s.Router.Get("/mpstat", )//DEPRECATED see: /masterHealth //s.Router.Get("/ifstat", )//DEPRECATED see: /masterHealth //s.Router.Get("/showtemp", )//DEPRECATED see: /masterHealth @@ -134,8 +149,11 @@ func (s *server) MountHandlers() { // GenericHandler404 is the universal 404 response of this front end func GenericHandler404(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(404) - w.Write([]byte("route does not exist")) + messages := []string{"route does not exist", "page not found", "resource not found"} + randomIndex := rand.Intn(len(messages)) + w.Write([]byte(messages[randomIndex])) } // GenericHandler405 is the universal 405 response of this front end @@ -150,10 +168,32 @@ func ExampleHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "First: %v\nSecond: %v", var1, var2) } +/////////THIS BLOCK LOOKS LIKE IT IS NOT DRY BUT IT IS BECAUSE IT WILL LATER +//DIFFER WIDELY FROM ONE FUNCTION TO THE NEXT +//////////////////////////////////////////////////////////////////////////////// func indexHandler(w http.ResponseWriter, r *http.Request) { + passarg := "some passing argument done" + viewsHandlerHelper(w, r, "templates/views/index.html", passarg) +} +func accessHandler(w http.ResponseWriter, r *http.Request) { + passarg := "some passing argument done" + viewsHandlerHelper(w, r, "templates/views/handler.html", passarg) +} +func statsHandler(w http.ResponseWriter, r *http.Request) { + passarg := "some passing argument done" + viewsHandlerHelper(w, r, "templates/views/stats.html", passarg) +} +func topologyHandler(w http.ResponseWriter, r *http.Request) { + passarg := "some passing argument done" + viewsHandlerHelper(w, r, "templates/views/topology.html", passarg) +} +//////////////////////////////////////////////////////////////////////////////// + +func viewsHandlerHelper(w http.ResponseWriter, r *http.Request, file string, argument any) { w.WriteHeader(http.StatusOK) - passarg := "some passing argument" - indexTemplate := template.Must(template.ParseFiles("templates/views/index.html")) - indexTemplate.Execute(w, passarg) + + indexTemplate := template.Must(template.ParseFiles(file)) + //check for go partial templates so you can extract blocks you want to use + indexTemplate.Execute(w, argument) }