package oauth import "fmt" type Manager struct { provider map[string]Provider } func NewManager() *Manager { return &Manager{ provider: map[string]Provider{}, } } func (m *Manager) Register(p Provider) { m.provider[p.Name()] = p } func (m *Manager) Get(name string) (Provider, error) { p, ok := m.provider[name] if !ok { return nil, fmt.Errorf("oauth provider not found: %s", name) } return p, nil }