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}