package webhooks // Provider defines the type of webhook type Provider int // webhooks available providers const ( GitHub Provider = iota ) // Webhook interface defines a webhook to recieve events type Webhook interface { Provider() Provider } // Config interface defines the config to setup a webhook instance type Config interface { UnderlyingProvider() Provider } // New creates and returns a WebHook instance denoted by the Provider type // func New(config Config) Webhook { // switch config.UnderlyingProvider() { // case GitHub: // c := config.(*GitHubConfig) // return &GitHubWebhook{ // provider: c.Provider, // } // default: // panic("Invalid config type") // } // }