Skip to content

Commit 6e1b5e6

Browse files
committed
more
1 parent 7a01321 commit 6e1b5e6

File tree

5 files changed

+32
-5
lines changed

5 files changed

+32
-5
lines changed

pkg/connector/invitation.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"github.com/conductorone/baton-sdk/pkg/pagination"
1212
"github.com/conductorone/baton-sdk/pkg/types/resource"
1313
"github.com/google/go-github/v69/github"
14+
"google.golang.org/grpc/codes"
15+
"google.golang.org/grpc/status"
1416
)
1517

1618
func invitationToUserResource(invitation *github.Invitation) (*v2.Resource, error) {
@@ -69,10 +71,14 @@ func (i *invitationResourceType) List(ctx context.Context, parentID *v2.Resource
6971
PerPage: pt.Size,
7072
})
7173
if err != nil {
74+
errMsg := "github-connector: ListPendingOrgInvitatioins failed"
7275
if isNotFoundError(resp) {
7376
return nil, "", nil, nil
7477
}
75-
return nil, "", nil, fmt.Errorf("github-connector: ListPendingOrgInvitatioins failed: %w", err)
78+
if isRatelimited(resp) {
79+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, status.Error(codes.Unavailable, "too many requests"))
80+
}
81+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, err)
7682
}
7783

7884
restApiRateLimit, err := extractRateLimitData(resp)

pkg/connector/org.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ func (o *orgResourceType) List(
102102

103103
orgs, resp, err := o.client.Organizations.List(ctx, "", opts)
104104
if err != nil {
105-
return nil, "", nil, fmt.Errorf("github-connector: failed to fetch org: %w", err)
105+
errMsg := "github-connector: failed to fetch org"
106+
if isRatelimited(resp) {
107+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, status.Error(codes.Unavailable, "too many requests"))
108+
}
109+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, err)
106110
}
107111

108112
nextPage, reqAnnos, err := parseResp(resp)

pkg/connector/repository.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import (
1616
"github.com/google/go-github/v69/github"
1717
"github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap"
1818
"go.uber.org/zap"
19+
"google.golang.org/grpc/codes"
20+
"google.golang.org/grpc/status"
1921
)
2022

2123
// outside collaborators are given one of these roles too.
@@ -88,7 +90,11 @@ func (o *repositoryResourceType) List(ctx context.Context, parentID *v2.Resource
8890

8991
repos, resp, err := o.client.Repositories.ListByOrg(ctx, orgName, opts)
9092
if err != nil {
91-
return nil, "", nil, fmt.Errorf("github-connector: failed to list repositories: %w", err)
93+
errMsg := "github-connector: failed to list repositories"
94+
if isRatelimited(resp) {
95+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, status.Error(codes.Unavailable, "too many requests"))
96+
}
97+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, err)
9298
}
9399

94100
nextPage, reqAnnos, err := parseResp(resp)

pkg/connector/team.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap"
1818
"go.uber.org/zap"
1919
"google.golang.org/grpc/codes"
20+
"google.golang.org/grpc/status"
2021
)
2122

2223
const (
@@ -95,7 +96,11 @@ func (o *teamResourceType) List(ctx context.Context, parentID *v2.ResourceId, pt
9596

9697
teams, resp, err := o.client.Teams.ListTeams(ctx, orgName, opts)
9798
if err != nil {
98-
return nil, "", nil, fmt.Errorf("github-connector: failed to list teams: %w", err)
99+
errMsg := "github-connector: failed to list teams"
100+
if isRatelimited(resp) {
101+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, status.Error(codes.Unavailable, "too many requests"))
102+
}
103+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, err)
99104
}
100105

101106
nextPage, reqAnnos, err := parseResp(resp)

pkg/connector/user.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import (
1616
"github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap"
1717
"github.com/shurcooL/githubv4"
1818
"go.uber.org/zap"
19+
"google.golang.org/grpc/codes"
20+
"google.golang.org/grpc/status"
1921
"google.golang.org/protobuf/types/known/timestamppb"
2022
)
2123

@@ -131,7 +133,11 @@ func (o *userResourceType) List(ctx context.Context, parentID *v2.ResourceId, pt
131133

132134
users, resp, err := o.client.Organizations.ListMembers(ctx, orgName, &opts)
133135
if err != nil {
134-
return nil, "", nil, fmt.Errorf("github-connector: ListMembers failed: %w", err)
136+
errMsg := "github-connector: ListMembers failed"
137+
if isRatelimited(resp) {
138+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, status.Error(codes.Unavailable, "too many requests"))
139+
}
140+
return nil, "", nil, fmt.Errorf("%s: %w", errMsg, err)
135141
}
136142

137143
restApiRateLimit, err = extractRateLimitData(resp)

0 commit comments

Comments
 (0)