Content-Length: 1035014 | pFad | http://github.com/github/github-mcp-server/commit/98fd144d86cf1fe60a333899b5bd10f6df221ba5

22 unified params for rest andn graphql and rennamed to be uniform for g… · github/github-mcp-server@98fd144 · GitHub
Skip to content

Commit 98fd144

Browse files
committed
unified params for rest andn graphql and rennamed to be uniform for golang
1 parent b454926 commit 98fd144

File tree

10 files changed

+63
-86
lines changed

10 files changed

+63
-86
lines changed

pkg/github/actions.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ func ListWorkflows(getClient GetClientFn, t translations.TranslationHelperFunc)
6262

6363
// Set up list options
6464
opts := &github.ListOptions{
65-
PerPage: pagination.perPage,
66-
Page: pagination.page,
65+
PerPage: pagination.PerPage,
66+
Page: pagination.Page,
6767
}
6868

6969
workflows, resp, err := client.Actions.ListWorkflows(ctx, owner, repo, opts)
@@ -200,8 +200,8 @@ func ListWorkflowRuns(getClient GetClientFn, t translations.TranslationHelperFun
200200
Event: event,
201201
Status: status,
202202
ListOptions: github.ListOptions{
203-
PerPage: pagination.perPage,
204-
Page: pagination.page,
203+
PerPage: pagination.PerPage,
204+
Page: pagination.Page,
205205
},
206206
}
207207

@@ -503,8 +503,8 @@ func ListWorkflowJobs(getClient GetClientFn, t translations.TranslationHelperFun
503503
opts := &github.ListWorkflowJobsOptions{
504504
Filter: filter,
505505
ListOptions: github.ListOptions{
506-
PerPage: pagination.perPage,
507-
Page: pagination.page,
506+
PerPage: pagination.PerPage,
507+
Page: pagination.Page,
508508
},
509509
}
510510

@@ -1025,8 +1025,8 @@ func ListWorkflowRunArtifacts(getClient GetClientFn, t translations.TranslationH
10251025

10261026
// Set up list options
10271027
opts := &github.ListOptions{
1028-
PerPage: pagination.perPage,
1029-
Page: pagination.page,
1028+
PerPage: pagination.PerPage,
1029+
Page: pagination.Page,
10301030
}
10311031

10321032
artifacts, resp, err := client.Actions.ListWorkflowRunArtifacts(ctx, owner, repo, runID, opts)

pkg/github/discussions.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
5151
}
5252

5353
// Get pagination parameters and convert to GraphQL format
54-
unifiedPagination, err := OptionalUnifiedPaginationParams(request)
54+
pagination, err := OptionalPaginationParams(request)
5555
if err != nil {
5656
return nil, err
5757
}
58-
pagination, err := unifiedPagination.ToGraphQLParams()
58+
paginationParams, err := pagination.ToGraphQLParams()
5959
if err != nil {
6060
return nil, err
6161
}
@@ -100,7 +100,7 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
100100
"owner": githubv4.String(owner),
101101
"repo": githubv4.String(repo),
102102
"categoryId": *categoryID,
103-
"first": githubv4.Int(*pagination.First),
103+
"first": githubv4.Int(*paginationParams.First),
104104
}
105105
if err := client.Query(ctx, &query, vars); err != nil {
106106
return mcp.NewToolResultError(err.Error()), nil
@@ -148,7 +148,7 @@ func ListDiscussions(getGQLClient GetGQLClientFn, t translations.TranslationHelp
148148
vars := map[string]interface{}{
149149
"owner": githubv4.String(owner),
150150
"repo": githubv4.String(repo),
151-
"first": githubv4.Int(*pagination.First),
151+
"first": githubv4.Int(*paginationParams.First),
152152
}
153153
if err := client.Query(ctx, &query, vars); err != nil {
154154
return mcp.NewToolResultError(err.Error()), nil
@@ -276,8 +276,8 @@ func GetDiscussionComments(getGQLClient GetGQLClientFn, t translations.Translati
276276
return mcp.NewToolResultError(err.Error()), nil
277277
}
278278

279-
// Get unified pagination parameters and convert to GraphQL format
280-
unifiedPagination, err := OptionalUnifiedPaginationParams(request)
279+
// Get pagination parameters and convert to GraphQL format
280+
pagination, err := OptionalPaginationParams(request)
281281
if err != nil {
282282
return nil, err
283283
}
@@ -287,7 +287,7 @@ func GetDiscussionComments(getGQLClient GetGQLClientFn, t translations.Translati
287287
_, perPageProvided := request.GetArguments()["perPage"]
288288
paginationExplicit := pageProvided || perPageProvided
289289

290-
paginationParams, err := unifiedPagination.ToGraphQLParams()
290+
paginationParams, err := pagination.ToGraphQLParams()
291291
if err != nil {
292292
return nil, err
293293
}
@@ -369,8 +369,8 @@ func ListDiscussionCategories(getGQLClient GetGQLClientFn, t translations.Transl
369369
return mcp.NewToolResultError(err.Error()), nil
370370
}
371371

372-
// Get unified pagination parameters and convert to GraphQL format
373-
unifiedPagination, err := OptionalUnifiedPaginationParams(request)
372+
// Get pagination parameters and convert to GraphQL format
373+
pagination, err := OptionalPaginationParams(request)
374374
if err != nil {
375375
return nil, err
376376
}
@@ -380,15 +380,15 @@ func ListDiscussionCategories(getGQLClient GetGQLClientFn, t translations.Transl
380380
_, perPageProvided := request.GetArguments()["perPage"]
381381
paginationExplicit := pageProvided || perPageProvided
382382

383-
pagination, err := unifiedPagination.ToGraphQLParams()
383+
paginationParams, err := pagination.ToGraphQLParams()
384384
if err != nil {
385385
return nil, err
386386
}
387387

388388
// Use default of 100 if pagination was not explicitly provided
389389
if !paginationExplicit {
390390
defaultFirst := int32(100)
391-
pagination.First = &defaultFirst
391+
paginationParams.First = &defaultFirst
392392
}
393393

394394
client, err := getGQLClient(ctx)
@@ -413,7 +413,7 @@ func ListDiscussionCategories(getGQLClient GetGQLClientFn, t translations.Transl
413413
vars := map[string]interface{}{
414414
"owner": githubv4.String(params.Owner),
415415
"repo": githubv4.String(params.Repo),
416-
"first": githubv4.Int(*pagination.First),
416+
"first": githubv4.Int(*paginationParams.First),
417417
}
418418
if err := client.Query(ctx, &q, vars); err != nil {
419419
return mcp.NewToolResultError(err.Error()), nil

pkg/github/issues.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,8 +630,8 @@ func GetIssueComments(getClient GetClientFn, t translations.TranslationHelperFun
630630

631631
opts := &github.IssueListCommentsOptions{
632632
ListOptions: github.ListOptions{
633-
Page: pagination.page,
634-
PerPage: pagination.perPage,
633+
Page: pagination.Page,
634+
PerPage: pagination.PerPage,
635635
},
636636
}
637637

pkg/github/notifications.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ func ListNotifications(getClient GetClientFn, t translations.TranslationHelperFu
8888
All: filter == FilterIncludeRead,
8989
Participating: filter == FilterOnlyParticipating,
9090
ListOptions: github.ListOptions{
91-
Page: paginationParams.page,
92-
PerPage: paginationParams.perPage,
91+
Page: paginationParams.Page,
92+
PerPage: paginationParams.PerPage,
9393
},
9494
}
9595

pkg/github/pullrequests.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,8 @@ func ListPullRequests(getClient GetClientFn, t translations.TranslationHelperFun
403403
Sort: sort,
404404
Direction: direction,
405405
ListOptions: github.ListOptions{
406-
PerPage: pagination.perPage,
407-
Page: pagination.page,
406+
PerPage: pagination.PerPage,
407+
Page: pagination.Page,
408408
},
409409
}
410410

@@ -622,8 +622,8 @@ func GetPullRequestFiles(getClient GetClientFn, t translations.TranslationHelper
622622
return nil, fmt.Errorf("failed to get GitHub client: %w", err)
623623
}
624624
opts := &github.ListOptions{
625-
PerPage: pagination.perPage,
626-
Page: pagination.page,
625+
PerPage: pagination.PerPage,
626+
Page: pagination.Page,
627627
}
628628
files, resp, err := client.PullRequests.ListFiles(ctx, owner, repo, pullNumber, opts)
629629
if err != nil {

pkg/github/repositories.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func GetCommit(getClient GetClientFn, t translations.TranslationHelperFunc) (too
5858
}
5959

6060
opts := &github.ListOptions{
61-
Page: pagination.page,
62-
PerPage: pagination.perPage,
61+
Page: pagination.Page,
62+
PerPage: pagination.PerPage,
6363
}
6464

6565
client, err := getClient(ctx)
@@ -139,15 +139,15 @@ func ListCommits(getClient GetClientFn, t translations.TranslationHelperFunc) (t
139139
return mcp.NewToolResultError(err.Error()), nil
140140
}
141141
// Set default perPage to 30 if not provided
142-
perPage := pagination.perPage
142+
perPage := pagination.PerPage
143143
if perPage == 0 {
144144
perPage = 30
145145
}
146146
opts := &github.CommitsListOptions{
147147
SHA: sha,
148148
Author: author,
149149
ListOptions: github.ListOptions{
150-
Page: pagination.page,
150+
Page: pagination.Page,
151151
PerPage: perPage,
152152
},
153153
}
@@ -217,8 +217,8 @@ func ListBranches(getClient GetClientFn, t translations.TranslationHelperFunc) (
217217

218218
opts := &github.BranchListOptions{
219219
ListOptions: github.ListOptions{
220-
Page: pagination.page,
221-
PerPage: pagination.perPage,
220+
Page: pagination.Page,
221+
PerPage: pagination.PerPage,
222222
},
223223
}
224224

@@ -1170,8 +1170,8 @@ func ListTags(getClient GetClientFn, t translations.TranslationHelperFunc) (tool
11701170
}
11711171

11721172
opts := &github.ListOptions{
1173-
Page: pagination.page,
1174-
PerPage: pagination.perPage,
1173+
Page: pagination.Page,
1174+
PerPage: pagination.PerPage,
11751175
}
11761176

11771177
client, err := getClient(ctx)

pkg/github/search.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ func SearchRepositories(getClient GetClientFn, t translations.TranslationHelperF
3939

4040
opts := &github.SearchOptions{
4141
ListOptions: github.ListOptions{
42-
Page: pagination.page,
43-
PerPage: pagination.perPage,
42+
Page: pagination.Page,
43+
PerPage: pagination.PerPage,
4444
},
4545
}
4646

@@ -118,8 +118,8 @@ func SearchCode(getClient GetClientFn, t translations.TranslationHelperFunc) (to
118118
Sort: sort,
119119
Order: order,
120120
ListOptions: github.ListOptions{
121-
PerPage: pagination.perPage,
122-
Page: pagination.page,
121+
PerPage: pagination.PerPage,
122+
Page: pagination.Page,
123123
},
124124
}
125125

@@ -193,8 +193,8 @@ func userOrOrgHandler(accountType string, getClient GetClientFn) server.ToolHand
193193
Sort: sort,
194194
Order: order,
195195
ListOptions: github.ListOptions{
196-
PerPage: pagination.perPage,
197-
Page: pagination.page,
196+
PerPage: pagination.PerPage,
197+
Page: pagination.Page,
198198
},
199199
}
200200

pkg/github/search_utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ func searchHandler(
5656
Sort: sort,
5757
Order: order,
5858
ListOptions: github.ListOptions{
59-
Page: pagination.page,
60-
PerPage: pagination.perPage,
59+
Page: pagination.Page,
60+
PerPage: pagination.PerPage,
6161
},
6262
}
6363

pkg/github/server.go

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ func WithUnifiedPagination() mcp.ToolOption {
209209
}
210210

211211
type PaginationParams struct {
212-
page int
213-
perPage int
212+
Page int
213+
PerPage int
214214
}
215215

216216
// OptionalPaginationParams returns the "page" and "perPage" parameters from the request,
@@ -228,53 +228,30 @@ func OptionalPaginationParams(r mcp.CallToolRequest) (PaginationParams, error) {
228228
return PaginationParams{}, err
229229
}
230230
return PaginationParams{
231-
page: page,
232-
perPage: perPage,
231+
Page: page,
232+
PerPage: perPage,
233233
}, nil
234234
}
235235

236236
type GraphQLPaginationParams struct {
237237
First *int32
238238
}
239239

240-
// UnifiedPaginationParams contains REST API pagination parameters that can be converted to GraphQL internally
241-
type UnifiedPaginationParams struct {
242-
Page int
243-
PerPage int
244-
}
245-
246240
// ToGraphQLParams converts REST API pagination parameters to GraphQL-specific parameters.
247241
// This converts page/perPage to first parameter for GraphQL queries.
248-
func (u UnifiedPaginationParams) ToGraphQLParams() (GraphQLPaginationParams, error) {
249-
if u.PerPage > 100 {
250-
return GraphQLPaginationParams{}, fmt.Errorf("perPage value %d exceeds maximum of 100", u.PerPage)
242+
func (p PaginationParams) ToGraphQLParams() (GraphQLPaginationParams, error) {
243+
if p.PerPage > 100 {
244+
return GraphQLPaginationParams{}, fmt.Errorf("perPage value %d exceeds maximum of 100", p.PerPage)
245+
}
246+
if p.PerPage < 0 {
247+
return GraphQLPaginationParams{}, fmt.Errorf("perPage value %d cannot be negative", p.PerPage)
251248
}
252-
first := int32(u.PerPage)
249+
first := int32(p.PerPage)
253250
return GraphQLPaginationParams{
254251
First: &first,
255252
}, nil
256253
}
257254

258-
// OptionalUnifiedPaginationParams returns pagination parameters from the request.
259-
// It accepts REST API (page/perPage) parameters only.
260-
func OptionalUnifiedPaginationParams(r mcp.CallToolRequest) (UnifiedPaginationParams, error) {
261-
// Get REST API pagination parameters with defaults
262-
page, err := OptionalIntParamWithDefault(r, "page", 1)
263-
if err != nil {
264-
return UnifiedPaginationParams{}, err
265-
}
266-
267-
perPage, err := OptionalIntParamWithDefault(r, "perPage", 30)
268-
if err != nil {
269-
return UnifiedPaginationParams{}, err
270-
}
271-
272-
return UnifiedPaginationParams{
273-
Page: page,
274-
PerPage: perPage,
275-
}, nil
276-
}
277-
278255
func MarshalledTextResult(v any) *mcp.CallToolResult {
279256
data, err := json.Marshal(v)
280257
if err != nil {

pkg/github/server_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,8 @@ func TestOptionalPaginationParams(t *testing.T) {
489489
name: "no pagination parameters, default values",
490490
params: map[string]any{},
491491
expected: PaginationParams{
492-
page: 1,
493-
perPage: 30,
492+
Page: 1,
493+
PerPage: 30,
494494
},
495495
expectError: false,
496496
},
@@ -500,8 +500,8 @@ func TestOptionalPaginationParams(t *testing.T) {
500500
"page": float64(2),
501501
},
502502
expected: PaginationParams{
503-
page: 2,
504-
perPage: 30,
503+
Page: 2,
504+
PerPage: 30,
505505
},
506506
expectError: false,
507507
},
@@ -511,8 +511,8 @@ func TestOptionalPaginationParams(t *testing.T) {
511511
"perPage": float64(50),
512512
},
513513
expected: PaginationParams{
514-
page: 1,
515-
perPage: 50,
514+
Page: 1,
515+
PerPage: 50,
516516
},
517517
expectError: false,
518518
},
@@ -523,8 +523,8 @@ func TestOptionalPaginationParams(t *testing.T) {
523523
"perPage": float64(50),
524524
},
525525
expected: PaginationParams{
526-
page: 2,
527-
perPage: 50,
526+
Page: 2,
527+
PerPage: 50,
528528
},
529529
expectError: false,
530530
},

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/github/github-mcp-server/commit/98fd144d86cf1fe60a333899b5bd10f6df221ba5

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy