@@ -25,54 +25,57 @@ import (
2525type (
2626 github struct {
2727 providerType ProviderType
28- apiURL string
28+ apiURL * url. URL
2929 }
3030)
3131
3232const (
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
3839)
3940
4041var requiredScopes = map [TokenType ][]string {
4142 RuntimeToken : {"repo" , "admin:repo_hook" },
4243 PersonalToken : {"repo" },
4344}
4445
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+ }
5150
52- func NewGithubEnterpriseProvider (cloneURL string ) (Provider , error ) {
53- u , err := url .Parse (cloneURL )
51+ u , err := url .Parse (baseURL )
5452 if err != nil {
5553 return nil , err
5654 }
5755
58- u .Path = ""
56+ if baseURL != GITHUB_CLOUD_API_URL {
57+ u .Path = GITHUB_REST_ENDPOINT
58+ }
59+
5960 return & github {
60- providerType : GITHUB_ENT ,
61- apiURL : u . String () ,
61+ providerType : GITHUB ,
62+ apiURL : u ,
6263 }, nil
6364}
6465
6566func (g * github ) Type () ProviderType {
6667 return g .providerType
6768}
6869
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 ()
7175}
7276
7377func (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 )
7679 if err != nil {
7780 return err
7881 }
0 commit comments