34 lines
649 B
Go
34 lines
649 B
Go
|
package main
|
||
|
|
||
|
import "github.com/spf13/viper"
|
||
|
|
||
|
const (
|
||
|
rulesConfigKey = "rules"
|
||
|
patternConfigKey = "pattern"
|
||
|
targetConfigKey = "target"
|
||
|
)
|
||
|
|
||
|
type targetRule struct {
|
||
|
pattern string
|
||
|
target string
|
||
|
}
|
||
|
|
||
|
type httpOptions struct {
|
||
|
Rules []targetRule
|
||
|
}
|
||
|
|
||
|
func loadFromConfig(config *viper.Viper) httpOptions {
|
||
|
options := httpOptions{}
|
||
|
anonRules := config.Get(rulesConfigKey).([]interface{})
|
||
|
|
||
|
for _, i := range anonRules {
|
||
|
innerData := i.(map[interface{}]interface{})
|
||
|
options.Rules = append(options.Rules, targetRule{
|
||
|
pattern: innerData[patternConfigKey].(string),
|
||
|
target: innerData[targetConfigKey].(string),
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return options
|
||
|
}
|