1package gitlab
2
3import (
4 "net/http"
5 "time"
6
7 "github.com/xanzy/go-gitlab"
8
9 "github.com/MichaelMure/git-bug/bridge/core"
10 "github.com/MichaelMure/git-bug/bridge/core/auth"
11)
12
13const (
14 target = "gitlab"
15
16 metaKeyGitlabId = "gitlab-id"
17 metaKeyGitlabUrl = "gitlab-url"
18 metaKeyGitlabLogin = "gitlab-login"
19 metaKeyGitlabProject = "gitlab-project-id"
20 metaKeyGitlabBaseUrl = "gitlab-base-url"
21
22 confKeyProjectID = "project-id"
23 confKeyGitlabBaseUrl = "base-url"
24 confKeyDefaultLogin = "default-login"
25
26 defaultBaseURL = "https://gitlab.com/"
27 defaultTimeout = 60 * time.Second
28)
29
30var _ core.BridgeImpl = &Gitlab{}
31
32type Gitlab struct{}
33
34func (Gitlab) Target() string {
35 return target
36}
37
38func (g *Gitlab) LoginMetaKey() string {
39 return metaKeyGitlabLogin
40}
41
42func (Gitlab) NewImporter() core.Importer {
43 return &gitlabImporter{}
44}
45
46func (Gitlab) NewExporter() core.Exporter {
47 return &gitlabExporter{}
48}
49
50func buildClient(baseURL string, token *auth.Token) (*gitlab.Client, error) {
51 httpClient := &http.Client{
52 Timeout: defaultTimeout,
53 }
54
55 gitlabClient := gitlab.NewClient(httpClient, token.Value)
56 err := gitlabClient.SetBaseURL(baseURL)
57 if err != nil {
58 return nil, err
59 }
60
61 return gitlabClient, nil
62}