From 2f17f3705357074040bfe8659b3ac2ad5d0432bd Mon Sep 17 00:00:00 2001 From: hiifong Date: Thu, 27 Mar 2025 07:18:51 +0000 Subject: [PATCH] fix bug (#7) Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/7 --- operation/pull/pull.go | 25 +++++++++++++++++++------ operation/repo/file.go | 8 +++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/operation/pull/pull.go b/operation/pull/pull.go index 6ebef3a..07bc9b3 100644 --- a/operation/pull/pull.go +++ b/operation/pull/pull.go @@ -33,9 +33,11 @@ var ( mcp.WithDescription("List repository pull requests"), mcp.WithString("owner", mcp.Required(), mcp.Description("repository owner")), mcp.WithString("repo", mcp.Required(), mcp.Description("repository name")), - mcp.WithString("state", mcp.Description("state")), - mcp.WithString("sort", mcp.Description("sort")), + mcp.WithString("state", mcp.Description("state"), mcp.Enum("open", "closed", "all"), mcp.DefaultString("all")), + mcp.WithString("sort", mcp.Description("sort"), mcp.Enum("oldest", "recentupdate", "leastupdate", "mostcomment", "leastcomment", "priority"), mcp.DefaultString("recentupdate")), mcp.WithNumber("milestone", mcp.Description("milestone")), + mcp.WithNumber("page", mcp.Description("page number"), mcp.DefaultNumber(1)), + mcp.WithNumber("pageSize", mcp.Description("page size"), mcp.DefaultNumber(100)), ) CreatePullRequestTool = mcp.NewTool( @@ -89,18 +91,29 @@ func ListRepoPullRequestsFn(ctx context.Context, req mcp.CallToolRequest) (*mcp. return to.ErrorResult(fmt.Errorf("repo is required")) } state, _ := req.Params.Arguments["state"].(string) - sort, _ := req.Params.Arguments["sort"].(string) + sort, ok := req.Params.Arguments["sort"].(string) + if !ok { + sort = "recentupdate" + } milestone, _ := req.Params.Arguments["milestone"].(float64) + page, ok := req.Params.Arguments["page"].(float64) + if !ok { + page = 1 + } + pageSize, ok := req.Params.Arguments["pageSize"].(float64) + if !ok { + pageSize = 100 + } opt := gitea_sdk.ListPullRequestsOptions{ State: gitea_sdk.StateType(state), Sort: sort, Milestone: int64(milestone), ListOptions: gitea_sdk.ListOptions{ - Page: 1, - PageSize: 1000, + Page: int(page), + PageSize: int(pageSize), }, } - pullRequests, _, err := gitea.Client().ListRepoPullRequests("", "", opt) + pullRequests, _, err := gitea.Client().ListRepoPullRequests(owner, repo, opt) if err != nil { return to.ErrorResult(fmt.Errorf("list %v/%v/pull_requests err: %v", owner, repo, err)) } diff --git a/operation/repo/file.go b/operation/repo/file.go index 38316a1..a429ac8 100644 --- a/operation/repo/file.go +++ b/operation/repo/file.go @@ -2,6 +2,7 @@ package repo import ( "context" + "encoding/base64" "fmt" "gitea.com/gitea/gitea-mcp/pkg/gitea" @@ -105,7 +106,7 @@ func CreateFileFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolRe message, _ := req.Params.Arguments["message"].(string) branchName, _ := req.Params.Arguments["branch_name"].(string) opt := gitea_sdk.CreateFileOptions{ - Content: content, + Content: base64.StdEncoding.EncodeToString([]byte(content)), FileOptions: gitea_sdk.FileOptions{ Message: message, BranchName: branchName, @@ -172,11 +173,16 @@ func DeleteFileFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolRe } message, _ := req.Params.Arguments["message"].(string) branchName, _ := req.Params.Arguments["branch_name"].(string) + sha, ok := req.Params.Arguments["sha"].(string) + if !ok { + return to.ErrorResult(fmt.Errorf("sha is required")) + } opt := gitea_sdk.DeleteFileOptions{ FileOptions: gitea_sdk.FileOptions{ Message: message, BranchName: branchName, }, + SHA: sha, } _, err := gitea.Client().DeleteFile(owner, repo, filePath, opt) if err != nil {