diff options
Diffstat (limited to 'connector')
-rw-r--r-- | connector/config.go | 11 | ||||
-rw-r--r-- | connector/irc/config.go | 47 | ||||
-rw-r--r-- | connector/mattermost/config.go | 87 | ||||
-rw-r--r-- | connector/xmpp/config.go | 59 |
4 files changed, 109 insertions, 95 deletions
diff --git a/connector/config.go b/connector/config.go index 97e4556..0bf3614 100644 --- a/connector/config.go +++ b/connector/config.go @@ -46,6 +46,11 @@ func (c Configuration) GetBool(k string, deflt ...bool) (bool, error) { // ---- +type Protocol struct { + NewConnector func() Connector + Schema ConfigSchema +} + type ConfigSchema []*ConfigEntry type ConfigEntry struct { @@ -59,8 +64,8 @@ type ConfigEntry struct { IsBoolean bool } -var Protocols = map[string]ConfigSchema{} +var Protocols = map[string]Protocol{} -func Register(name string, schema ConfigSchema) { - Protocols[name] = schema +func Register(name string, protocol Protocol) { + Protocols[name] = protocol } diff --git a/connector/irc/config.go b/connector/irc/config.go index 26d9a63..33469ed 100644 --- a/connector/irc/config.go +++ b/connector/irc/config.go @@ -5,28 +5,31 @@ import ( ) func init() { - Register("irc", ConfigSchema{ - &ConfigEntry{ - Name: "nick", - Description: "Nickname", - Required: true, - }, - &ConfigEntry{ - Name: "server", - Description: "Server", - Required: true, - }, - &ConfigEntry{ - Name: "port", - Description: "Port", - IsNumeric: true, - Default: "6667", - }, - &ConfigEntry{ - Name: "ssl", - Description: "Use SSL", - IsBoolean: true, - Default: "false", + Register("irc", Protocol{ + NewConnector: func() Connector { return &IRC{} }, + Schema: ConfigSchema{ + &ConfigEntry{ + Name: "nick", + Description: "Nickname", + Required: true, + }, + &ConfigEntry{ + Name: "server", + Description: "Server", + Required: true, + }, + &ConfigEntry{ + Name: "port", + Description: "Port", + IsNumeric: true, + Default: "6667", + }, + &ConfigEntry{ + Name: "ssl", + Description: "Use SSL", + IsBoolean: true, + Default: "false", + }, }, }) } diff --git a/connector/mattermost/config.go b/connector/mattermost/config.go index b7c4ba8..dd3bbbb 100644 --- a/connector/mattermost/config.go +++ b/connector/mattermost/config.go @@ -5,48 +5,51 @@ import ( ) func init() { - Register("mattermost", ConfigSchema{ - &ConfigEntry{ - Name: "server", - Description: "Server", - Required: true, - }, - &ConfigEntry{ - Name: "username", - Description: "Username", - Required: true, - }, - &ConfigEntry{ - Name: "password", - Description: "Password", - IsPassword: true, - }, - &ConfigEntry{ - Name: "token", - Description: "Authentification token (replaces password if set)", - }, - &ConfigEntry{ - Name: "teams", - Description: "Comma-separated list of teams to follow", - Required: true, - }, - &ConfigEntry{ - Name: "no_tls", - Description: "Disable SSL/TLS", - IsBoolean: true, - Default: "false", - }, - &ConfigEntry{ - Name: "initial_backlog", - Description: "Maximum number of messages to load when joining a channel", - IsNumeric: true, - Default: "1000", - }, - &ConfigEntry{ - Name: "initial_members", - Description: "Maximum number of members to load when joining a channel", - IsNumeric: true, - Default: "100", + Register("mattermost", Protocol{ + NewConnector: func() Connector { return &Mattermost{} }, + Schema: ConfigSchema{ + &ConfigEntry{ + Name: "server", + Description: "Server", + Required: true, + }, + &ConfigEntry{ + Name: "username", + Description: "Username", + Required: true, + }, + &ConfigEntry{ + Name: "password", + Description: "Password", + IsPassword: true, + }, + &ConfigEntry{ + Name: "token", + Description: "Authentification token (replaces password if set)", + }, + &ConfigEntry{ + Name: "teams", + Description: "Comma-separated list of teams to follow", + Required: true, + }, + &ConfigEntry{ + Name: "no_tls", + Description: "Disable SSL/TLS", + IsBoolean: true, + Default: "false", + }, + &ConfigEntry{ + Name: "initial_backlog", + Description: "Maximum number of messages to load when joining a channel", + IsNumeric: true, + Default: "1000", + }, + &ConfigEntry{ + Name: "initial_members", + Description: "Maximum number of members to load when joining a channel", + IsNumeric: true, + Default: "100", + }, }, }) } diff --git a/connector/xmpp/config.go b/connector/xmpp/config.go index a5306b4..a6abfac 100644 --- a/connector/xmpp/config.go +++ b/connector/xmpp/config.go @@ -5,34 +5,37 @@ import ( ) func init() { - Register("xmpp", ConfigSchema{ - &ConfigEntry{ - Name: "jid", - Description: "JID", - Required: true, - }, - &ConfigEntry{ - Name: "password", - Description: "Password", - Required: true, - IsPassword: true, - }, - &ConfigEntry{ - Name: "nickname", - Description: "Nickname in MUCs", - Required: true, - }, - &ConfigEntry{ - Name: "port", - Description: "Port", - IsNumeric: true, - Default: "5222", - }, - &ConfigEntry{ - Name: "ssl", - Description: "Use SSL", - IsBoolean: true, - Default: "true", + Register("xmpp", Protocol{ + NewConnector: func() Connector { return &XMPP{} }, + Schema: ConfigSchema{ + &ConfigEntry{ + Name: "jid", + Description: "JID", + Required: true, + }, + &ConfigEntry{ + Name: "password", + Description: "Password", + Required: true, + IsPassword: true, + }, + &ConfigEntry{ + Name: "nickname", + Description: "Nickname in MUCs", + Required: true, + }, + &ConfigEntry{ + Name: "port", + Description: "Port", + IsNumeric: true, + Default: "5222", + }, + &ConfigEntry{ + Name: "ssl", + Description: "Use SSL", + IsBoolean: true, + Default: "true", + }, }, }) } |