package handlers import ( "backend/models" "backend/repositories" "encoding/json" "log" "net/http" "github.com/gin-gonic/gin" "github.com/gorilla/mux" ) type NodeHandler struct { Repo *repositories.NodeRepository } var registeredNodes = make(map[string]models.NodeInfo) func (h *NodeHandler) HandleRegisterNode(c *gin.Context) { var node models.NodeInfo if err := c.ShouldBindJSON(&node); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } nodeID, err := h.Repo.RegisterNode(node) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"id": nodeID}) } func (h *NodeHandler) HandleRetrieveNodeList(c *gin.Context) { log.Println("All nodes retrieved request") registeredNodes, err := h.Repo.RetriveNodeList() if err != nil { log.Printf("Request error on retrieving all nodes: %v", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Impossible de récupérer la liste des nœuds"}) return } log.Printf("nb nodes: %v", len(registeredNodes)) c.JSON(http.StatusOK, registeredNodes) } func HandleRetrieveNode(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { http.Error(w, "GET requested", http.StatusMethodNotAllowed) return } w.Header().Set("Content-Type", "application/json") params := mux.Vars(r) nodeID := params["id"] node, found := registeredNodes[nodeID] if found { json.NewEncoder(w).Encode(node) } else { w.WriteHeader(http.StatusNotFound) errorResponse := map[string]string{"error": "Node non trouvé", "id": nodeID} json.NewEncoder(w).Encode(errorResponse) } } func UpdateNodes() { }