package handlers import ( "context" "encoding/json" "net/http" "git.warky.dev/wdevs/whatshooked/pkg/config" "git.warky.dev/wdevs/whatshooked/pkg/logging" ) // Accounts returns the list of all configured WhatsApp accounts func (h *Handlers) Accounts(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") writeJSON(w, h.config.WhatsApp) } // AddAccount adds a new WhatsApp account to the system func (h *Handlers) AddAccount(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 := h.whatsappMgr.Connect(context.Background(), account); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // Update config h.config.WhatsApp = append(h.config.WhatsApp, account) if h.configPath != "" { if err := config.Save(h.configPath, h.config); err != nil { logging.Error("Failed to save config", "error", err) } } w.WriteHeader(http.StatusCreated) writeJSON(w, map[string]string{"status": "ok"}) }