package main import ( "context" "encoding/json" "net/http" "git.warky.dev/wdevs/whatshooked/internal/config" "git.warky.dev/wdevs/whatshooked/internal/logging" ) // handleAccounts returns the list of all configured WhatsApp accounts func (s *Server) handleAccounts(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(s.config.WhatsApp) } // handleAddAccount adds a new WhatsApp account to the system func (s *Server) handleAddAccount(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var account config.WhatsAppConfig if err := json.NewDecoder(r.Body).Decode(&account); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // Connect to the account if err := s.whatsappMgr.Connect(context.Background(), account); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // Update config s.config.WhatsApp = append(s.config.WhatsApp, account) if err := config.Save(s.configPath, s.config); err != nil { logging.Error("Failed to save config", "error", err) } w.WriteHeader(http.StatusCreated) json.NewEncoder(w).Encode(map[string]string{"status": "ok"}) }