(server *MCPServer)
| 38 | type MCPBatchUploadExchangeTokenInput struct{} |
| 39 | |
| 40 | func registerMCPBatchUploadTools(server *MCPServer) { |
| 41 | AddTypedMCPTool(server, &mcp.Tool{Name: "batch_upload.init", Description: "初始化批量上传批次"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPBatchUploadInitInput) (*mcp.CallToolResult, any, error) { |
| 42 | userID, eid, _, err := CurrentMCPAuthInfo(ctx) |
| 43 | if err != nil { |
| 44 | return nil, nil, err |
| 45 | } |
| 46 | svc := mcpservice.NewBatchUploadService() |
| 47 | req := &core.BatchInitRequest{ |
| 48 | LibraryID: in.LibraryID.Int64(), |
| 49 | BasePath: in.BasePath, |
| 50 | TotalFiles: in.TotalFiles, |
| 51 | TotalSize: in.TotalSize, |
| 52 | FileStructure: convertMCPBatchFileStructure(in.FileStructure), |
| 53 | } |
| 54 | resp, err := svc.InitBatch(ctx, eid, userID, req) |
| 55 | if err != nil { |
| 56 | return nil, nil, err |
| 57 | } |
| 58 | return &mcp.CallToolResult{}, encodeMCPToolOutput(resp), nil |
| 59 | }) |
| 60 | |
| 61 | AddTypedMCPTool(server, &mcp.Tool{Name: "batch_upload.exchange_token", Description: "为批量上传任务换发短期 API Token"}, func(ctx context.Context, _ *mcp.CallToolRequest, _ MCPBatchUploadExchangeTokenInput) (*mcp.CallToolResult, any, error) { |
| 62 | userID, eid, _, err := CurrentMCPAuthInfo(ctx) |
| 63 | if err != nil { |
| 64 | return nil, nil, err |
| 65 | } |
| 66 | apiKeyID, err := CurrentMCPAPIKeyID(ctx) |
| 67 | if err != nil { |
| 68 | return nil, nil, err |
| 69 | } |
| 70 | svc := mcpservice.NewUploadTokenService() |
| 71 | resp, err := svc.IssueBatchUploadToken(ctx, userID, eid, apiKeyID) |
| 72 | if err != nil { |
| 73 | return nil, nil, err |
| 74 | } |
| 75 | return &mcp.CallToolResult{}, encodeMCPToolOutput(map[string]any{ |
| 76 | "token_type": resp.TokenType, |
| 77 | "scope": resp.Scope, |
| 78 | "token": resp.Token, |
| 79 | "expires_at": resp.ExpiresAt, |
| 80 | }), nil |
| 81 | }) |
| 82 | |
| 83 | AddTypedMCPTool(server, &mcp.Tool{Name: "batch_upload.progress", Description: "查看批量上传进度"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPBatchUploadProgressInput) (*mcp.CallToolResult, any, error) { |
| 84 | _, _, _, err := CurrentMCPAuthInfo(ctx) |
| 85 | if err != nil { |
| 86 | return nil, nil, err |
| 87 | } |
| 88 | svc := mcpservice.NewBatchUploadService() |
| 89 | resp, err := svc.GetProgress(ctx, in.BatchID, in.Detail, in.FileUploadID, in.Since) |
| 90 | if err != nil { |
| 91 | return nil, nil, err |
| 92 | } |
| 93 | return &mcp.CallToolResult{}, encodeMCPToolOutput(resp), nil |
| 94 | }) |
| 95 | |
| 96 | AddTypedMCPTool(server, &mcp.Tool{Name: "batch_upload.cancel", Description: "取消批量上传批次"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPBatchUploadCancelInput) (*mcp.CallToolResult, any, error) { |
| 97 | _, _, _, err := CurrentMCPAuthInfo(ctx) |
no test coverage detected