mirror of
https://github.com/status-im/status-go.git
synced 2025-01-09 14:16:21 +00:00
926f6a3c72
This reverts commit d0ca4447c6c5642830354740d045f453eb3e77e8.
31 lines
642 B
Go
31 lines
642 B
Go
package interceptor
|
|
|
|
// Registry is a collector for interceptors.
|
|
type Registry struct {
|
|
factories []Factory
|
|
}
|
|
|
|
// Add adds a new Interceptor to the registry.
|
|
func (r *Registry) Add(f Factory) {
|
|
r.factories = append(r.factories, f)
|
|
}
|
|
|
|
// Build constructs a single Interceptor from a InterceptorRegistry
|
|
func (r *Registry) Build(id string) (Interceptor, error) {
|
|
if len(r.factories) == 0 {
|
|
return &NoOp{}, nil
|
|
}
|
|
|
|
interceptors := []Interceptor{}
|
|
for _, f := range r.factories {
|
|
i, err := f.NewInterceptor(id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
interceptors = append(interceptors, i)
|
|
}
|
|
|
|
return NewChain(interceptors), nil
|
|
}
|