api/internal/config/handler_config.go
Peter Kurfer a720b0ee41
Initial working version
* supports HTTP
* support TLS interception e.g. for HTTPS
* support CA generation via cli
* first draft of plugin API
* support commands from plugins
* includes Dockerfile
* includes basic configuration
2020-04-01 04:08:21 +02:00

49 lines
1 KiB
Go

package config
import "github.com/spf13/viper"
const (
pluginConfigKey = "handler"
listenAddressConfigKey = "listenaddress"
portConfigKey = "port"
)
type handlerConfig struct {
pluginName string
port uint16
listenAddress string
options *viper.Viper
}
func (h handlerConfig) HandlerName() string {
return h.pluginName
}
func (h handlerConfig) ListenAddress() string {
return h.listenAddress
}
func (h handlerConfig) Port() uint16 {
return h.port
}
func (h handlerConfig) Options() *viper.Viper {
return h.options
}
type HandlerConfig interface {
HandlerName() string
ListenAddress() string
Port() uint16
Options() *viper.Viper
}
func CreateHandlerConfig(configMap interface{}, subConfig *viper.Viper) HandlerConfig {
underlyingMap := configMap.(map[string]interface{})
return &handlerConfig{
pluginName: underlyingMap[pluginConfigKey].(string),
listenAddress: underlyingMap[listenAddressConfigKey].(string),
port: uint16(underlyingMap[portConfigKey].(int)),
options: subConfig,
}
}