in lib/backend/manager.go [52:88]
func NewManager(configs []Config, auth AuthConfig) (*Manager, error) {
var backends []*backend
for _, config := range configs {
config = config.applyDefaults()
var c Client
if len(config.Backend) != 1 {
return nil, fmt.Errorf("no backend or more than one backend configured")
}
var name string
var backendConfig interface{}
for name, backendConfig = range config.Backend { // Pull the only key/value out of map
}
factory, err := getFactory(name)
if err != nil {
return nil, fmt.Errorf("get backend client factory: %s", err)
}
c, err = factory.Create(backendConfig, auth[name])
if err != nil {
return nil, fmt.Errorf("create backend client: %s", err)
}
if config.Bandwidth.Enable {
l, err := bandwidth.NewLimiter(config.Bandwidth)
if err != nil {
return nil, fmt.Errorf("bandwidth: %s", err)
}
c = throttle(c, l)
}
b, err := newBackend(config.Namespace, c)
if err != nil {
return nil, fmt.Errorf("new backend for namespace %s: %s", config.Namespace, err)
}
backends = append(backends, b)
}
return &Manager{backends}, nil
}