-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
67 lines (54 loc) · 1.42 KB
/
main.go
File metadata and controls
67 lines (54 loc) · 1.42 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"context"
"fmt"
"net/http"
)
type registerer string
var ClientRegisterer = registerer(Namespace)
var HandlerRegisterer = registerer(Namespace)
var logger Logger = nil
var cacheHandler *CacheHandler
func (registerer) RegisterLogger(v interface{}) {
l, ok := v.(Logger)
if !ok {
return
}
logger = l
logger.Debug(fmt.Sprintf("[PLUGIN: %s] Logger loaded", Namespace))
}
func (r registerer) RegisterClients(f func(
name string,
handler func(context.Context, map[string]interface{}) (http.Handler, error),
)) {
f(Namespace, r.registerClients)
}
func (r registerer) RegisterHandlers(f func(
name string,
handler func(context.Context, map[string]interface{}, http.Handler) (http.Handler, error),
)) {
f(Namespace, r.registerHandlers)
}
func (r registerer) registerClients(_ context.Context, extra map[string]interface{}) (http.Handler, error) {
config, err := NewClientConfig(extra)
if err != nil {
return nil, err
}
if cacheHandler == nil {
cacheHandler = NewCacheHandler(http.DefaultClient, logger)
}
return cacheHandler.Handle(config), nil
}
func (r registerer) registerHandlers(_ context.Context, extra map[string]interface{}, h http.Handler) (http.Handler, error) {
config, err := NewSrvConfig(extra)
if err != nil {
return h, err
}
for name, cacheCnf := range config.Conns {
if err = RegisterCache(name, &cacheCnf); err != nil {
return h, err
}
}
return h, nil
}
func main() {}