diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-01-02 22:04:48 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-01-02 22:04:48 -0800 |
commit | 320d1b016747ba4501da9417d9ce5f99368a5768 (patch) | |
tree | 1054d96afde6022951b76cc4a09b78e1e3f05058 /oauth2/manager.go | |
parent | c39f2e1a8d2de6d412bcc673d29eb0f7a2d1f5f7 (diff) |
Refactor packages to have more idiomatic code base
Diffstat (limited to 'oauth2/manager.go')
-rw-r--r-- | oauth2/manager.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/oauth2/manager.go b/oauth2/manager.go new file mode 100644 index 0000000..08360a9 --- /dev/null +++ b/oauth2/manager.go @@ -0,0 +1,33 @@ +// Copyright 2017 Frédéric Guillot. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +package oauth2 + +import "errors" + +// Manager handles OAuth2 providers. +type Manager struct { + providers map[string]Provider +} + +// Provider returns the given provider. +func (m *Manager) Provider(name string) (Provider, error) { + if provider, found := m.providers[name]; found { + return provider, nil + } + + return nil, errors.New("oauth2 provider not found") +} + +// AddProvider add a new OAuth2 provider. +func (m *Manager) AddProvider(name string, provider Provider) { + m.providers[name] = provider +} + +// NewManager returns a new Manager. +func NewManager(clientID, clientSecret, redirectURL string) *Manager { + m := &Manager{providers: make(map[string]Provider)} + m.AddProvider("google", newGoogleProvider(clientID, clientSecret, redirectURL)) + return m +} |