feat(whatsapp): 🎉 Add extended sending and template management
* Implemented new endpoints for sending various message types: - Audio - Sticker - Location - Contacts - Interactive messages - Template messages - Flow messages - Reactions - Marking messages as read * Added template management endpoints: - List templates - Upload templates - Delete templates * Introduced flow management endpoints: - List flows - Create flows - Get flow details - Upload flow assets - Publish flows - Delete flows * Added phone number management endpoints: - List phone numbers - Request verification code - Verify code * Enhanced media management with delete media endpoint. * Updated dependencies.
This commit is contained in:
@@ -2,12 +2,14 @@ package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/config"
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/hooks"
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/logging"
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/whatsapp"
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/whatsapp/businessapi"
|
||||
)
|
||||
|
||||
// Handlers holds all HTTP handlers with their dependencies
|
||||
@@ -57,6 +59,23 @@ func (h *Handlers) WithAuthConfig(cfg *AuthConfig) *Handlers {
|
||||
return h
|
||||
}
|
||||
|
||||
// getBusinessAPIClient looks up an account and asserts it is a Business API client.
|
||||
// Returns a typed *businessapi.Client or an error with an appropriate message.
|
||||
func (h *Handlers) getBusinessAPIClient(accountID string) (*businessapi.Client, error) {
|
||||
if accountID == "" {
|
||||
return nil, fmt.Errorf("account_id is required")
|
||||
}
|
||||
client, exists := h.whatsappMgr.GetClient(accountID)
|
||||
if !exists {
|
||||
return nil, fmt.Errorf("account %s not found", accountID)
|
||||
}
|
||||
baClient, ok := client.(*businessapi.Client)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("account %s is not a Business API account (type: %s)", accountID, client.GetType())
|
||||
}
|
||||
return baClient, nil
|
||||
}
|
||||
|
||||
// writeJSON is a helper that writes JSON response and logs errors
|
||||
func writeJSON(w http.ResponseWriter, v interface{}) {
|
||||
if err := json.NewEncoder(w).Encode(v); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user