@@ -67,31 +67,33 @@ func ListProjects(getClient GetClientFn, t translations.TranslationHelperFunc) (
6767 return mcp .NewToolResultError (err .Error ()), nil
6868 }
6969
70- var url string
71- if ownerType == "org" {
72- url = fmt .Sprintf ("orgs/%s/projectsV2" , owner )
73- } else {
74- url = fmt .Sprintf ("users/%s/projectsV2" , owner )
75- }
7670 projects := []github.ProjectV2 {}
7771 minimalProjects := []MinimalProject {}
7872
79- opts := listProjectsOptions {
80- paginationOptions : paginationOptions {PerPage : perPage },
81- filterQueryOptions : filterQueryOptions { Query : queryStr } ,
73+ opts := github. ListProjectsOptions {
74+ ListProjectsPaginationOptions : github. ListProjectsPaginationOptions {PerPage : perPage },
75+ Query : queryStr ,
8276 }
8377
84- url , err = addOptions ( url , opts )
85- if err != nil {
86- return nil , fmt . Errorf ( "failed to add options to request: %w" , err )
87- }
78+ resp , err := func () ( * github. Response , error ) {
79+ var projectsData [] * github. ProjectV2
80+ var response * github. Response
81+ var err error
8882
89- httpRequest , err := client .NewRequest ("GET" , url , nil )
90- if err != nil {
91- return nil , fmt .Errorf ("failed to create request: %w" , err )
92- }
83+ if ownerType == "org" {
84+ projectsData , response , err = client .Projects .ListProjectsForOrg (ctx , owner , & opts )
85+ } else {
86+ projectsData , response , err = client .Projects .ListProjectsForUser (ctx , owner , & opts )
87+ }
88+
89+ if err == nil && projectsData != nil {
90+ for _ , p := range projectsData {
91+ projects = append (projects , * p )
92+ }
93+ }
94+ return response , err
95+ }()
9396
94- resp , err := client .Do (ctx , httpRequest , & projects )
9597 if err != nil {
9698 return ghErrors .NewGitHubAPIErrorResponse (ctx ,
9799 "failed to list projects" ,
0 commit comments