Skip to content

Commit 401cbe3

Browse files
authored
Merge pull request #150 from concourse/issue-149
Remove github enterprise workaround
2 parents 9c32098 + 0116603 commit 401cbe3

3 files changed

Lines changed: 9 additions & 102 deletions

File tree

github.go

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@ type GitHub interface {
3535
}
3636

3737
type GitHubClient struct {
38-
client *github.Client
39-
clientV4 *githubv4.Client
40-
isEnterprise bool
38+
client *github.Client
39+
clientV4 *githubv4.Client
4140

4241
owner string
4342
repository string
@@ -67,7 +66,6 @@ func NewGitHubClient(source Source) (*GitHubClient, error) {
6766
client := github.NewClient(httpClient)
6867

6968
clientV4 := githubv4.NewClient(httpClient)
70-
var isEnterprise bool
7169

7270
if source.GitHubAPIURL != "" {
7371
var err error
@@ -85,18 +83,16 @@ func NewGitHubClient(source Source) (*GitHubClient, error) {
8583
}
8684

8785
var v4URL string
88-
if strings.HasSuffix(source.GitHubAPIURL, "/v3/") {
89-
v4URL = strings.TrimSuffix(source.GitHubAPIURL, "/v3/") + "/graphql"
86+
if s, found := strings.CutSuffix(source.GitHubAPIURL, "/v3/"); found {
87+
v4URL = s + "/graphql"
9088
} else {
9189
v4URL = source.GitHubAPIURL + "graphql"
9290
}
9391
clientV4 = githubv4.NewEnterpriseClient(v4URL, httpClient)
94-
isEnterprise = true
9592
}
9693

9794
if source.GitHubV4APIURL != "" {
9895
clientV4 = githubv4.NewEnterpriseClient(source.GitHubV4APIURL, httpClient)
99-
isEnterprise = true
10096
}
10197

10298
if source.GitHubUploadsURL != "" {
@@ -113,20 +109,16 @@ func NewGitHubClient(source Source) (*GitHubClient, error) {
113109
}
114110

115111
return &GitHubClient{
116-
client: client,
117-
clientV4: clientV4,
118-
isEnterprise: isEnterprise,
119-
owner: owner,
120-
repository: source.Repository,
121-
accessToken: source.AccessToken,
112+
client: client,
113+
clientV4: clientV4,
114+
owner: owner,
115+
repository: source.Repository,
116+
accessToken: source.AccessToken,
122117
}, nil
123118
}
124119

125120
func (g *GitHubClient) ListReleases() ([]*github.RepositoryRelease, error) {
126121
if g.accessToken != "" {
127-
if g.isEnterprise {
128-
return g.listReleasesV4EnterPrice()
129-
}
130122
return g.listReleasesV4()
131123
}
132124
opt := &github.ListOptions{PerPage: 100}

github_graphql.go

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -12,77 +12,6 @@ import (
1212
"github.com/shurcooL/githubv4"
1313
)
1414

15-
func (g *GitHubClient) listReleasesV4EnterPrice() ([]*github.RepositoryRelease, error) {
16-
if g.clientV4 == nil {
17-
return nil, errors.New("github graphql is not been initialised")
18-
}
19-
var listReleasesEnterprise struct {
20-
Repository struct {
21-
Releases struct {
22-
Edges []struct {
23-
Node struct {
24-
ReleaseObjectEnterprise
25-
}
26-
} `graphql:"edges"`
27-
PageInfo struct {
28-
EndCursor githubv4.String
29-
HasNextPage bool
30-
} `graphql:"pageInfo"`
31-
} `graphql:"releases(first:$releasesCount, after: $releaseCursor, orderBy: {field: CREATED_AT, direction: DESC})"`
32-
} `graphql:"repository(owner:$repositoryOwner,name:$repositoryName)"`
33-
}
34-
35-
vars := map[string]any{
36-
"repositoryOwner": githubv4.String(g.owner),
37-
"repositoryName": githubv4.String(g.repository),
38-
"releaseCursor": (*githubv4.String)(nil),
39-
"releasesCount": githubv4.Int(100),
40-
}
41-
42-
var allReleases []*github.RepositoryRelease
43-
for {
44-
if err := g.clientV4.Query(context.TODO(), &listReleasesEnterprise, vars); err != nil {
45-
return nil, err
46-
}
47-
for _, r := range listReleasesEnterprise.Repository.Releases.Edges {
48-
r := r
49-
publishedAt, _ := time.ParseInLocation(time.RFC3339, r.Node.PublishedAt.Time.Format(time.RFC3339), time.UTC)
50-
createdAt, _ := time.ParseInLocation(time.RFC3339, r.Node.CreatedAt.Time.Format(time.RFC3339), time.UTC)
51-
var releaseID int64
52-
decodedID, err := base64.StdEncoding.DecodeString(r.Node.ID)
53-
if err != nil {
54-
return nil, err
55-
}
56-
re := regexp.MustCompile(`.*[^\d]`)
57-
decodedID = re.ReplaceAll(decodedID, []byte(""))
58-
if string(decodedID) == "" {
59-
return nil, errors.New("bad release id from graph ql api")
60-
}
61-
releaseID, err = strconv.ParseInt(string(decodedID), 10, 64)
62-
if err != nil {
63-
return nil, err
64-
}
65-
66-
allReleases = append(allReleases, &github.RepositoryRelease{
67-
ID: &releaseID,
68-
TagName: &r.Node.TagName,
69-
Name: &r.Node.Name,
70-
Prerelease: &r.Node.IsPrerelease,
71-
Draft: &r.Node.IsDraft,
72-
URL: &r.Node.URL,
73-
PublishedAt: &github.Timestamp{Time: publishedAt},
74-
CreatedAt: &github.Timestamp{Time: createdAt},
75-
})
76-
}
77-
if !listReleasesEnterprise.Repository.Releases.PageInfo.HasNextPage {
78-
break
79-
}
80-
vars["releaseCursor"] = listReleasesEnterprise.Repository.Releases.PageInfo.EndCursor
81-
82-
}
83-
return allReleases, nil
84-
}
85-
8615
func (g *GitHubClient) listReleasesV4() ([]*github.RepositoryRelease, error) {
8716
if g.clientV4 == nil {
8817
return nil, errors.New("github graphql is not been initialised")
@@ -117,7 +46,6 @@ func (g *GitHubClient) listReleasesV4() ([]*github.RepositoryRelease, error) {
11746
}
11847

11948
for _, r := range listReleases.Repository.Releases.Edges {
120-
r := r
12149
publishedAt, _ := time.ParseInLocation(time.RFC3339, r.Node.PublishedAt.Time.Format(time.RFC3339), time.UTC)
12250
createdAt, _ := time.ParseInLocation(time.RFC3339, r.Node.CreatedAt.Time.Format(time.RFC3339), time.UTC)
12351
var releaseID int64

model.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,3 @@ type ReleaseObject struct {
1515
TagName string `graphql:"tagName"`
1616
URL string `graphql:"url"`
1717
}
18-
19-
// ReleaseObjectEnterprise Workaround until DatabaseId will appear in enterprise installation
20-
// https://github.com/concourse/github-release-resource/issues/109
21-
type ReleaseObjectEnterprise struct {
22-
CreatedAt githubv4.DateTime `graphql:"createdAt"`
23-
PublishedAt githubv4.DateTime `graphql:"publishedAt"`
24-
ID string `graphql:"id"`
25-
IsDraft bool `graphql:"isDraft"`
26-
IsPrerelease bool `graphql:"isPrerelease"`
27-
Name string `graphql:"name"`
28-
TagName string `graphql:"tagName"`
29-
URL string `graphql:"url"`
30-
}

0 commit comments

Comments
 (0)