Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit52d0bf0

Browse files
cleanup search_users response
1 parent8854b2a commit52d0bf0

File tree

2 files changed

+49
-21
lines changed

2 files changed

+49
-21
lines changed

‎pkg/github/search.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,19 @@ func SearchCode(getClient GetClientFn, t translations.TranslationHelperFunc) (to
146146
}
147147
}
148148

149+
typeMinimalUserstruct {
150+
Loginstring`json:"login"`
151+
IDint64`json:"id,omitempty"`
152+
ProfileURLstring`json:"profile_url,omitempty"`
153+
AvatarURLstring`json:"avatar_url,omitempty"`
154+
}
155+
156+
typeMinimalSearchUsersResultstruct {
157+
TotalCountint`json:"total_count"`
158+
IncompleteResultsbool`json:"incomplete_results"`
159+
Items []MinimalUser`json:"items"`
160+
}
161+
149162
// SearchUsers creates a tool to search for GitHub users.
150163
funcSearchUsers(getClientGetClientFn,t translations.TranslationHelperFunc) (tool mcp.Tool,handler server.ToolHandlerFunc) {
151164
returnmcp.NewTool("search_users",
@@ -200,7 +213,7 @@ func SearchUsers(getClient GetClientFn, t translations.TranslationHelperFunc) (t
200213
returnnil,fmt.Errorf("failed to get GitHub client: %w",err)
201214
}
202215

203-
result,resp,err:=client.Search.Users(ctx,query,opts)
216+
result,resp,err:=client.Search.Users(ctx,"type:user "+query,opts)
204217
iferr!=nil {
205218
returnnil,fmt.Errorf("failed to search users: %w",err)
206219
}
@@ -214,11 +227,33 @@ func SearchUsers(getClient GetClientFn, t translations.TranslationHelperFunc) (t
214227
returnmcp.NewToolResultError(fmt.Sprintf("failed to search users: %s",string(body))),nil
215228
}
216229

217-
r,err:=json.Marshal(result)
230+
minimalUsers:=make([]MinimalUser,0,len(result.Users))
231+
for_,user:=rangeresult.Users {
232+
mu:=MinimalUser{
233+
Login:user.GetLogin(),
234+
ID:user.GetID(),
235+
ProfileURL:user.GetHTMLURL(),
236+
AvatarURL:user.GetAvatarURL(),
237+
}
238+
239+
minimalUsers=append(minimalUsers,mu)
240+
}
241+
242+
minimalResp:=MinimalSearchUsersResult{
243+
TotalCount:result.GetTotal(),
244+
IncompleteResults:result.GetIncompleteResults(),
245+
Items:minimalUsers,
246+
}
247+
ifresult.Total!=nil {
248+
minimalResp.TotalCount=*result.Total
249+
}
250+
ifresult.IncompleteResults!=nil {
251+
minimalResp.IncompleteResults=*result.IncompleteResults
252+
}
253+
r,err:=json.Marshal(minimalResp)
218254
iferr!=nil {
219255
returnnil,fmt.Errorf("failed to marshal response: %w",err)
220256
}
221-
222257
returnmcp.NewToolResultText(string(r)),nil
223258
}
224259
}

‎pkg/github/search_test.go

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -335,18 +335,13 @@ func Test_SearchUsers(t *testing.T) {
335335
ID:github.Ptr(int64(1001)),
336336
HTMLURL:github.Ptr("https://github.com/user1"),
337337
AvatarURL:github.Ptr("https://avatars.githubusercontent.com/u/1001"),
338-
Type:github.Ptr("User"),
339-
Followers:github.Ptr(100),
340-
Following:github.Ptr(50),
341338
},
342339
{
343340
Login:github.Ptr("user2"),
344341
ID:github.Ptr(int64(1002)),
345342
HTMLURL:github.Ptr("https://github.com/user2"),
346343
AvatarURL:github.Ptr("https://avatars.githubusercontent.com/u/1002"),
347344
Type:github.Ptr("User"),
348-
Followers:github.Ptr(200),
349-
Following:github.Ptr(75),
350345
},
351346
},
352347
}
@@ -365,7 +360,7 @@ func Test_SearchUsers(t *testing.T) {
365360
mock.WithRequestMatchHandler(
366361
mock.GetSearchUsers,
367362
expectQueryParams(t,map[string]string{
368-
"q":"location:finland language:go",
363+
"q":"type:userlocation:finland language:go",
369364
"sort":"followers",
370365
"order":"desc",
371366
"page":"1",
@@ -391,7 +386,7 @@ func Test_SearchUsers(t *testing.T) {
391386
mock.WithRequestMatchHandler(
392387
mock.GetSearchUsers,
393388
expectQueryParams(t,map[string]string{
394-
"q":"location:finland language:go",
389+
"q":"type:userlocation:finland language:go",
395390
"page":"1",
396391
"per_page":"30",
397392
}).andThen(
@@ -451,19 +446,17 @@ func Test_SearchUsers(t *testing.T) {
451446
textContent:=getTextResult(t,result)
452447

453448
// Unmarshal and verify the result
454-
varreturnedResultgithub.UsersSearchResult
449+
varreturnedResultMinimalSearchUsersResult
455450
err=json.Unmarshal([]byte(textContent.Text),&returnedResult)
456451
require.NoError(t,err)
457-
assert.Equal(t,*tc.expectedResult.Total,*returnedResult.Total)
458-
assert.Equal(t,*tc.expectedResult.IncompleteResults,*returnedResult.IncompleteResults)
459-
assert.Len(t,returnedResult.Users,len(tc.expectedResult.Users))
460-
fori,user:=rangereturnedResult.Users {
461-
assert.Equal(t,*tc.expectedResult.Users[i].Login,*user.Login)
462-
assert.Equal(t,*tc.expectedResult.Users[i].ID,*user.ID)
463-
assert.Equal(t,*tc.expectedResult.Users[i].HTMLURL,*user.HTMLURL)
464-
assert.Equal(t,*tc.expectedResult.Users[i].AvatarURL,*user.AvatarURL)
465-
assert.Equal(t,*tc.expectedResult.Users[i].Type,*user.Type)
466-
assert.Equal(t,*tc.expectedResult.Users[i].Followers,*user.Followers)
452+
assert.Equal(t,*tc.expectedResult.Total,returnedResult.TotalCount)
453+
assert.Equal(t,*tc.expectedResult.IncompleteResults,returnedResult.IncompleteResults)
454+
assert.Len(t,returnedResult.Items,len(tc.expectedResult.Users))
455+
fori,user:=rangereturnedResult.Items {
456+
assert.Equal(t,*tc.expectedResult.Users[i].Login,user.Login)
457+
assert.Equal(t,*tc.expectedResult.Users[i].ID,user.ID)
458+
assert.Equal(t,*tc.expectedResult.Users[i].HTMLURL,user.ProfileURL)
459+
assert.Equal(t,*tc.expectedResult.Users[i].AvatarURL,user.AvatarURL)
467460
}
468461
})
469462
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp