networks.go 942 B

12345678910111213141516171819202122232425262728293031
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/gorilla/mux"
  5. "github.com/gravitl/netmaker/logger"
  6. "github.com/gravitl/netmaker/logic"
  7. "net/http"
  8. )
  9. func NetworkHandlers(r *mux.Router) {
  10. r.HandleFunc("/api/v1/networks/{network}/graph", logic.SecurityCheck(true, http.HandlerFunc(getNetworkGraph))).Methods(http.MethodGet)
  11. }
  12. func getNetworkGraph(w http.ResponseWriter, r *http.Request) {
  13. w.Header().Set("Content-Type", "application/json")
  14. var params = mux.Vars(r)
  15. network := params["network"]
  16. networkNodes, err := logic.GetNetworkNodes(network)
  17. if err != nil {
  18. logger.Log(1, r.Header.Get("user"), "failed to get network nodes", err.Error())
  19. return
  20. }
  21. networkNodes = logic.AddStaticNodestoList(networkNodes)
  22. // return all the nodes in JSON/API format
  23. apiNodes := logic.GetAllNodesAPIWithLocation(networkNodes[:])
  24. logic.SortApiNodes(apiNodes[:])
  25. w.WriteHeader(http.StatusOK)
  26. json.NewEncoder(w).Encode(apiNodes)
  27. }