64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
/*
|
|
Copyright IBM Corp All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package library
|
|
|
|
import (
|
|
"github.com/mitchellh/mapstructure"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// Config configures the factory methods
|
|
// and plugins for the registry
|
|
type Config struct {
|
|
AuthFilters []*HandlerConfig `yaml:"authFilters"`
|
|
Decorators []*HandlerConfig `yaml:"decorators"`
|
|
Endorsers PluginMapping `yaml:"endorsers"`
|
|
Validators PluginMapping `yaml:"validators"`
|
|
}
|
|
|
|
// PluginMapping stores a map between chaincode id to plugin config
|
|
type PluginMapping map[string]*HandlerConfig
|
|
|
|
// HandlerConfig defines configuration for a plugin or compiled handler
|
|
type HandlerConfig struct {
|
|
Name string `yaml:"name"`
|
|
Library string `yaml:"library"`
|
|
}
|
|
|
|
func LoadConfig() (Config, error) {
|
|
var authFilters, decorators []*HandlerConfig
|
|
if err := mapstructure.Decode(viper.Get("peer.handlers.authFilters"), &authFilters); err != nil {
|
|
return Config{}, err
|
|
}
|
|
|
|
if err := mapstructure.Decode(viper.Get("peer.handlers.decorators"), &decorators); err != nil {
|
|
return Config{}, err
|
|
}
|
|
|
|
endorsers, validators := make(PluginMapping), make(PluginMapping)
|
|
e := viper.GetStringMap("peer.handlers.endorsers")
|
|
for k := range e {
|
|
name := viper.GetString("peer.handlers.endorsers." + k + ".name")
|
|
library := viper.GetString("peer.handlers.endorsers." + k + ".library")
|
|
endorsers[k] = &HandlerConfig{Name: name, Library: library}
|
|
}
|
|
|
|
v := viper.GetStringMap("peer.handlers.validators")
|
|
for k := range v {
|
|
name := viper.GetString("peer.handlers.validators." + k + ".name")
|
|
library := viper.GetString("peer.handlers.validators." + k + ".library")
|
|
validators[k] = &HandlerConfig{Name: name, Library: library}
|
|
}
|
|
|
|
return Config{
|
|
AuthFilters: authFilters,
|
|
Decorators: decorators,
|
|
Endorsers: endorsers,
|
|
Validators: validators,
|
|
}, nil
|
|
}
|