Major refactor to library
This commit is contained in:
56
pkg/handlers/handlers.go
Normal file
56
pkg/handlers/handlers.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/config"
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/hooks"
|
||||
"git.warky.dev/wdevs/whatshooked/pkg/whatsapp"
|
||||
)
|
||||
|
||||
// Handlers holds all HTTP handlers with their dependencies
|
||||
type Handlers struct {
|
||||
whatsappMgr *whatsapp.Manager
|
||||
hookMgr *hooks.Manager
|
||||
config *config.Config
|
||||
configPath string
|
||||
|
||||
// Auth configuration
|
||||
authConfig *AuthConfig
|
||||
}
|
||||
|
||||
// AuthConfig configures authentication behavior
|
||||
type AuthConfig struct {
|
||||
// Validator is a custom auth validator function
|
||||
// If nil, uses built-in auth (API key, basic auth)
|
||||
Validator func(r *http.Request) bool
|
||||
|
||||
// Built-in auth settings
|
||||
APIKey string
|
||||
Username string
|
||||
Password string
|
||||
|
||||
// Skip auth entirely (not recommended for production)
|
||||
Disabled bool
|
||||
}
|
||||
|
||||
// New creates a new Handlers instance
|
||||
func New(mgr *whatsapp.Manager, hookMgr *hooks.Manager, cfg *config.Config, configPath string) *Handlers {
|
||||
return &Handlers{
|
||||
whatsappMgr: mgr,
|
||||
hookMgr: hookMgr,
|
||||
config: cfg,
|
||||
configPath: configPath,
|
||||
authConfig: &AuthConfig{
|
||||
APIKey: cfg.Server.AuthKey,
|
||||
Username: cfg.Server.Username,
|
||||
Password: cfg.Server.Password,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// WithAuthConfig sets custom auth configuration
|
||||
func (h *Handlers) WithAuthConfig(cfg *AuthConfig) *Handlers {
|
||||
h.authConfig = cfg
|
||||
return h
|
||||
}
|
||||
Reference in New Issue
Block a user