traefik/pkg/server/middleware/plugins.go

39 lines
970 B
Go
Raw Normal View History

2020-04-20 16:36:34 +00:00
package middleware
import (
"errors"
"fmt"
"github.com/traefik/traefik/v2/pkg/config/dynamic"
"github.com/traefik/traefik/v2/pkg/plugins"
2020-04-20 16:36:34 +00:00
)
2020-09-07 11:58:03 +00:00
// PluginsBuilder the plugin's builder interface.
type PluginsBuilder interface {
Build(pName string, config map[string]interface{}, middlewareName string) (plugins.Constructor, error)
}
2020-04-20 16:36:34 +00:00
func findPluginConfig(rawConfig map[string]dynamic.PluginConf) (string, map[string]interface{}, error) {
if len(rawConfig) != 1 {
return "", nil, errors.New("invalid configuration: no configuration or too many plugin definition")
2020-04-20 16:36:34 +00:00
}
var pluginType string
var rawPluginConfig map[string]interface{}
for pType, pConfig := range rawConfig {
pluginType = pType
rawPluginConfig = pConfig
}
if pluginType == "" {
return "", nil, errors.New("missing plugin type")
2020-04-20 16:36:34 +00:00
}
if len(rawPluginConfig) == 0 {
return "", nil, fmt.Errorf("missing plugin configuration: %s", pluginType)
2020-04-20 16:36:34 +00:00
}
return pluginType, rawPluginConfig, nil
}