@@ -25,54 +25,57 @@ import (
25
25
type (
26
26
github struct {
27
27
providerType ProviderType
28
- apiURL string
28
+ apiURL * url. URL
29
29
}
30
30
)
31
31
32
32
const (
33
- GITHUB_CLOUD_DOMAIN = "github.com"
34
- GITHUB_CLOUD_URL = "https://api.github.com"
35
- GITHUB_REST_ENDPOINT = "/api/v3"
36
- GITHUB_CLOUD ProviderType = "github"
37
- GITHUB_ENT ProviderType = "github-enterprise"
33
+ GITHUB_CLOUD_DOMAIN = "github.com"
34
+ GITHUB_CLOUD_BASE_URL = "https://github.com/"
35
+ GITHUB_CLOUD_API_URL = "https://api.github.com"
36
+ GITHUB_REST_ENDPOINT = "/api/v3"
37
+ GITHUB ProviderType = "github"
38
+ GITHUB_ENT ProviderType = "github-enterpeise" // for backward compatability
38
39
)
39
40
40
41
var requiredScopes = map [TokenType ][]string {
41
42
RuntimeToken : {"repo" , "admin:repo_hook" },
42
43
PersonalToken : {"repo" },
43
44
}
44
45
45
- func NewGithubCloudProvider (_ string ) (Provider , error ) {
46
- return & github {
47
- providerType : GITHUB_CLOUD ,
48
- apiURL : GITHUB_CLOUD_URL ,
49
- }, nil
50
- }
46
+ func NewGithubProvider (baseURL string ) (Provider , error ) {
47
+ if baseURL == GITHUB_CLOUD_BASE_URL {
48
+ baseURL = GITHUB_CLOUD_API_URL
49
+ }
51
50
52
- func NewGithubEnterpriseProvider (cloneURL string ) (Provider , error ) {
53
- u , err := url .Parse (cloneURL )
51
+ u , err := url .Parse (baseURL )
54
52
if err != nil {
55
53
return nil , err
56
54
}
57
55
58
- u .Path = ""
56
+ if baseURL != GITHUB_CLOUD_API_URL {
57
+ u .Path = GITHUB_REST_ENDPOINT
58
+ }
59
+
59
60
return & github {
60
- providerType : GITHUB_ENT ,
61
- apiURL : u . String () ,
61
+ providerType : GITHUB ,
62
+ apiURL : u ,
62
63
}, nil
63
64
}
64
65
65
66
func (g * github ) Type () ProviderType {
66
67
return g .providerType
67
68
}
68
69
69
- func (g * github ) ApiUrl () string {
70
- return g .apiURL
70
+ func (g * github ) BaseURL () string {
71
+ urlClone := * g .apiURL
72
+ urlClone .Path = ""
73
+ urlClone .RawQuery = ""
74
+ return urlClone .String ()
71
75
}
72
76
73
77
func (g * github ) VerifyToken (ctx context.Context , tokenType TokenType , token string ) error {
74
- fullURL := g .apiURL + GITHUB_REST_ENDPOINT
75
- req , err := http .NewRequestWithContext (ctx , "HEAD" , fullURL , nil )
78
+ req , err := http .NewRequestWithContext (ctx , "HEAD" , g .apiURL .String (), nil )
76
79
if err != nil {
77
80
return err
78
81
}
0 commit comments