diff options
author | Michael Muré <batolettre@gmail.com> | 2018-09-24 17:21:24 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-09-24 17:21:24 +0200 |
commit | c86e7231b223d532e26ab5449715c65b6b4e3fde (patch) | |
tree | 8d863617aad2dce304b266cd1e493d7ba5c4690f | |
parent | 2282cbb595ff5cc603d11645ddc833d70de9ad9d (diff) | |
download | git-bug-c86e7231b223d532e26ab5449715c65b6b4e3fde.tar.gz |
bridge: validate config before use
-rw-r--r-- | bridge/core/bridge.go | 5 | ||||
-rw-r--r-- | bridge/core/interfaces.go | 3 | ||||
-rw-r--r-- | bridge/github/config.go | 16 |
3 files changed, 24 insertions, 0 deletions
diff --git a/bridge/core/bridge.go b/bridge/core/bridge.go index d9d688ba..dd1f1337 100644 --- a/bridge/core/bridge.go +++ b/bridge/core/bridge.go @@ -200,6 +200,11 @@ func (b Bridge) loadConfig() (Configuration, error) { result[key] = value } + err = b.impl.ValidateConfig(result) + if err != nil { + return nil, errors.Wrap(err, "invalid configuration") + } + return result, nil } diff --git a/bridge/core/interfaces.go b/bridge/core/interfaces.go index 5ead3c8f..79b75606 100644 --- a/bridge/core/interfaces.go +++ b/bridge/core/interfaces.go @@ -15,6 +15,9 @@ type BridgeImpl interface { // for future use Configure(repo repository.RepoCommon) (Configuration, error) + // ValidateConfig check the configuration for error + ValidateConfig(conf Configuration) error + // Importer return an Importer implementation if the import is supported Importer() Importer diff --git a/bridge/github/config.go b/bridge/github/config.go index b8531dfe..79025cfb 100644 --- a/bridge/github/config.go +++ b/bridge/github/config.go @@ -93,6 +93,22 @@ func (*Github) Configure(repo repository.RepoCommon) (core.Configuration, error) return nil, nil } +func (*Github) ValidateConfig(conf core.Configuration) error { + if _, ok := conf[keyToken]; !ok { + return fmt.Errorf("missing %s key", keyToken) + } + + if _, ok := conf[keyUser]; !ok { + return fmt.Errorf("missing %s key", keyUser) + } + + if _, ok := conf[keyProject]; !ok { + return fmt.Errorf("missing %s key", keyProject) + } + + return nil +} + func requestToken(note, username, password string) (*http.Response, error) { return requestTokenWith2FA(note, username, password, "") } |