1// Package github contains the Github bridge implementation
2package github
3
4import (
5 "context"
6 "time"
7
8 "github.com/shurcooL/githubv4"
9 "golang.org/x/oauth2"
10
11 "github.com/MichaelMure/git-bug/bridge/core"
12 "github.com/MichaelMure/git-bug/bridge/core/auth"
13)
14
15const (
16 target = "github"
17
18 metaKeyGithubId = "github-id"
19 metaKeyGithubUrl = "github-url"
20 metaKeyGithubLogin = "github-login"
21
22 confKeyOwner = "owner"
23 confKeyProject = "project"
24
25 githubV3Url = "https://api.github.com"
26 defaultTimeout = 60 * time.Second
27)
28
29var _ core.BridgeImpl = &Github{}
30
31type Github struct{}
32
33func (Github) Target() string {
34 return target
35}
36
37func (g *Github) LoginMetaKey() string {
38 return metaKeyGithubLogin
39}
40
41func (Github) NewImporter() core.Importer {
42 return &githubImporter{}
43}
44
45func (Github) NewExporter() core.Exporter {
46 return &githubExporter{}
47}
48
49func buildClient(token *auth.Token) *githubv4.Client {
50 src := oauth2.StaticTokenSource(
51 &oauth2.Token{AccessToken: token.Value},
52 )
53 httpClient := oauth2.NewClient(context.TODO(), src)
54
55 return githubv4.NewClient(httpClient)
56}