forked from luraproject/lura
/
register.go
44 lines (37 loc) · 885 Bytes
/
register.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// SPDX-License-Identifier: Apache-2.0
package proxy
import (
"github.com/badboyd/lura/register"
)
func NewRegister() *Register {
return &Register{
responseCombiners,
}
}
type Register struct {
*combinerRegister
}
type combinerRegister struct {
data register.Untyped
fallback ResponseCombiner
}
func newCombinerRegister(data map[string]ResponseCombiner, fallback ResponseCombiner) *combinerRegister {
r := register.NewUntyped()
for k, v := range data {
r.Register(k, v)
}
return &combinerRegister{r, fallback}
}
func (r *combinerRegister) GetResponseCombiner(name string) (ResponseCombiner, bool) {
v, ok := r.data.Get(name)
if !ok {
return r.fallback, ok
}
if rc, ok := v.(ResponseCombiner); ok {
return rc, ok
}
return r.fallback, ok
}
func (r *combinerRegister) SetResponseCombiner(name string, rc ResponseCombiner) {
r.data.Register(name, rc)
}