diff options
author | Alexander Scharinger <rng.dynamics@gmail.com> | 2021-04-08 22:48:31 +0200 |
---|---|---|
committer | Alexander Scharinger <rng.dynamics@gmail.com> | 2021-04-08 22:48:31 +0200 |
commit | 3d14e2e67c4985c429471ea6643f013ade2c2692 (patch) | |
tree | db4938de27b1240220630d6723e321a060866542 /bridge | |
parent | b2e98ef07f3083db303099fbcedbd98a33ad1164 (diff) | |
download | git-bug-3d14e2e67c4985c429471ea6643f013ade2c2692.tar.gz |
Bridges: move credential loading and client creation
Gitlab and Jira bridge: move credential loading and client creation from
`Init` to `ImportAll` in order to harmonize the behaviour of the
different bridges.
Diffstat (limited to 'bridge')
-rw-r--r-- | bridge/gitlab/import.go | 25 | ||||
-rw-r--r-- | bridge/jira/import.go | 52 |
2 files changed, 38 insertions, 39 deletions
diff --git a/bridge/gitlab/import.go b/bridge/gitlab/import.go index cf4f0039..93c6a1a9 100644 --- a/bridge/gitlab/import.go +++ b/bridge/gitlab/import.go @@ -33,32 +33,29 @@ type gitlabImporter struct { func (gi *gitlabImporter) Init(_ context.Context, repo *cache.RepoCache, conf core.Configuration) error { gi.conf = conf + return nil +} +// ImportAll iterate over all the configured repository issues (notes) and ensure the creation +// of the missing issues / comments / label events / title changes ... +func (gi *gitlabImporter) ImportAll(ctx context.Context, repo *cache.RepoCache, since time.Time) (<-chan core.ImportResult, error) { creds, err := auth.List(repo, auth.WithTarget(target), auth.WithKind(auth.KindToken), - auth.WithMeta(auth.MetaKeyBaseURL, conf[confKeyGitlabBaseUrl]), - auth.WithMeta(auth.MetaKeyLogin, conf[confKeyDefaultLogin]), + auth.WithMeta(auth.MetaKeyBaseURL, gi.conf[confKeyGitlabBaseUrl]), + auth.WithMeta(auth.MetaKeyLogin, gi.conf[confKeyDefaultLogin]), ) if err != nil { - return err + return nil, err } - if len(creds) == 0 { - return ErrMissingIdentityToken + return nil, ErrMissingIdentityToken } - - gi.client, err = buildClient(conf[confKeyGitlabBaseUrl], creds[0].(*auth.Token)) + gi.client, err = buildClient(gi.conf[confKeyGitlabBaseUrl], creds[0].(*auth.Token)) if err != nil { - return err + return nil, err } - return nil -} - -// ImportAll iterate over all the configured repository issues (notes) and ensure the creation -// of the missing issues / comments / label events / title changes ... -func (gi *gitlabImporter) ImportAll(ctx context.Context, repo *cache.RepoCache, since time.Time) (<-chan core.ImportResult, error) { gi.iterator = iterator.NewIterator(ctx, gi.client, 10, gi.conf[confKeyProjectID], since) out := make(chan core.ImportResult) gi.out = out diff --git a/bridge/jira/import.go b/bridge/jira/import.go index b66b0fa3..54c4ca35 100644 --- a/bridge/jira/import.go +++ b/bridge/jira/import.go @@ -34,6 +34,12 @@ type jiraImporter struct { // Init . func (ji *jiraImporter) Init(ctx context.Context, repo *cache.RepoCache, conf core.Configuration) error { ji.conf = conf + return nil +} + +// ImportAll iterate over all the configured repository issues and ensure the +// creation of the missing issues / timeline items / edits / label events ... +func (ji *jiraImporter) ImportAll(ctx context.Context, repo *cache.RepoCache, since time.Time) (<-chan core.ImportResult, error) { var cred auth.Credential @@ -41,44 +47,40 @@ func (ji *jiraImporter) Init(ctx context.Context, repo *cache.RepoCache, conf co creds, err := auth.List(repo, auth.WithTarget(target), auth.WithKind(auth.KindLoginPassword), - auth.WithMeta(auth.MetaKeyBaseURL, conf[confKeyBaseUrl]), - auth.WithMeta(auth.MetaKeyLogin, conf[confKeyDefaultLogin]), - ) - if err != nil { - return err - } - if len(creds) > 0 { - cred = creds[0] - goto end - } - - creds, err = auth.List(repo, - auth.WithTarget(target), - auth.WithKind(auth.KindLogin), - auth.WithMeta(auth.MetaKeyBaseURL, conf[confKeyBaseUrl]), - auth.WithMeta(auth.MetaKeyLogin, conf[confKeyDefaultLogin]), + auth.WithMeta(auth.MetaKeyBaseURL, ji.conf[confKeyBaseUrl]), + auth.WithMeta(auth.MetaKeyLogin, ji.conf[confKeyDefaultLogin]), ) if err != nil { - return err + return nil, err } if len(creds) > 0 { cred = creds[0] + } else { + creds, err = auth.List(repo, + auth.WithTarget(target), + auth.WithKind(auth.KindLogin), + auth.WithMeta(auth.MetaKeyBaseURL, ji.conf[confKeyBaseUrl]), + auth.WithMeta(auth.MetaKeyLogin, ji.conf[confKeyDefaultLogin]), + ) + if err != nil { + return nil, err + } + if len(creds) > 0 { + cred = creds[0] + } } -end: if cred == nil { - return fmt.Errorf("no credential for this bridge") + return nil, fmt.Errorf("no credential for this bridge") } // TODO(josh)[da52062]: Validate token and if it is expired then prompt for // credentials and generate a new one - ji.client, err = buildClient(ctx, conf[confKeyBaseUrl], conf[confKeyCredentialType], cred) - return err -} + ji.client, err = buildClient(ctx, ji.conf[confKeyBaseUrl], ji.conf[confKeyCredentialType], cred) + if err != nil { + return nil, err + } -// ImportAll iterate over all the configured repository issues and ensure the -// creation of the missing issues / timeline items / edits / label events ... -func (ji *jiraImporter) ImportAll(ctx context.Context, repo *cache.RepoCache, since time.Time) (<-chan core.ImportResult, error) { sinceStr := since.Format("2006-01-02 15:04") project := ji.conf[confKeyProject] |