๐Ÿ“ฆ GareArc / git-lfs-proxy

๐Ÿ“„ manager.go ยท 47 lines
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
47package lfsproxy

import (
	"context"

	"github.com/GareArc/git-lfs-proxy/config"
	"github.com/gorilla/mux"
	"github.com/rs/zerolog/log"
)

type ProxyManager struct {
	proxyHandlers map[string]ProxyHandler
	ctx           context.Context
}

func NewProxyManager(ctx context.Context) *ProxyManager {
	ret := &ProxyManager{
		proxyHandlers: make(map[string]ProxyHandler),
		ctx:           ctx,
	}

	return ret
}

func (pm *ProxyManager) RegisterProxyHandler(name string, handler ProxyHandler) {
	pm.proxyHandlers[name] = handler
}

func (pm *ProxyManager) InitAllProxies(r *mux.Router) {

	if config.Global.GoogleDriveProxyConfig.Enabled {
		pm.RegisterProxyHandler("google", GetProxyHandler("google"))
		pm.proxyHandlers["google"].Init(pm.ctx, r)
	}

	// notify all proxies started
	for _, handler := range pm.proxyHandlers {
		handler.NotifyInitialized()
	}

	// handle when no proxy is enabled
	if len(pm.proxyHandlers) == 0 {
		log.Warn().Msg("No proxy is enabled")
	}

}