package providers import ( "fmt" "github.com/spf13/viper" ) type SMSProvider interface { Send(phoneNumber string, message string, sender string) error } func NewSMSProvider(cfg *viper.Viper) (SMSProvider, error) { provider := cfg.GetString("provider") if provider == "smsfactor" { return NewSMSFactorProvider(cfg.GetString("smsfactor.token")), nil } return nil, fmt.Errorf("provider %s not supported", provider) }