in codegen/gateway.go [1022:1083]
func parseMiddlewareConfig(
middlewareConfigDir string,
configDirName string,
) (map[string]*MiddlewareSpec, error) {
specMap := map[string]*MiddlewareSpec{}
if middlewareConfigDir == "" {
return specMap, nil
}
fullMiddlewareDir := filepath.Join(configDirName, middlewareConfigDir)
files, err := ioutil.ReadDir(fullMiddlewareDir)
if err != nil {
return nil, errors.Wrapf(
err,
"Error reading middleware config directory %q",
fullMiddlewareDir,
)
}
for _, file := range files {
if !file.IsDir() {
continue
}
instanceConfig := filepath.Join(
fullMiddlewareDir, file.Name(), "middleware-config.yaml")
if _, err := os.Stat(instanceConfig); os.IsNotExist(err) {
// Cannot find yaml file, use json file instead
instanceConfig = filepath.Join(
fullMiddlewareDir, file.Name(), "middleware-config.json")
}
bytes, err := ioutil.ReadFile(instanceConfig)
if os.IsNotExist(err) {
fmt.Printf("Could not read config file for middleware directory \"%s\" skipping...\n", file.Name())
continue
} else if err != nil {
return nil, errors.Wrapf(
err, "Cannot read middleware config yaml: %s",
instanceConfig,
)
}
var mid MiddlewareConfig
err = yaml.Unmarshal(bytes, &mid)
if err != nil {
return nil, errors.Wrapf(
err, "Cannot parse yaml for middleware config yaml: %s",
instanceConfig,
)
}
err = mid.Validate(configDirName)
if err != nil {
return nil, errors.Wrapf(
err, "Cannot validate middleware: %v",
mid,
)
}
specMap[mid.Name] = newMiddlewareSpec(&mid)
}
return specMap, nil
}