package captcha import ( "github.com/rs/zerolog/log" "github.com/spf13/viper" ) type TemplateData struct { ApiKey string `json:"api_key"` } func GetTemplateData() TemplateData { return TemplateData{ ApiKey: viper.GetString("captcha.api_key"), } } type CaptchaAdapter interface { Validate(token, ip string) bool } var adapters = map[string]CaptchaAdapter{ "turnstile": &TurnstileAdapter{}, } func Validate(token, ip string) bool { provider := viper.GetString("captcha.provider") if adapter, ok := adapters[provider]; ok { return adapter.Validate(token, ip) } log.Error().Msg("Unable to handle captcha validate request due to unsupported provider.") return false }