11use crate :: access_control:: AccessControl ;
2+ use crate :: error:: { Error as McpError , Result } ;
23use crate :: file:: request:: { DownloadSharedFileRequest , GetSharedFilesListRequest } ;
34use backlog_api_client:: { DownloadedFile , client:: BacklogApiClient } ;
45use backlog_core:: { ProjectIdOrKey , identifier:: SharedFileId } ;
56use backlog_file:: { GetFileParams , GetSharedFilesListParams , SharedFile } ;
6- use rmcp:: Error as McpError ;
77use std:: str:: FromStr ;
88use std:: sync:: Arc ;
99use tokio:: sync:: Mutex ;
@@ -12,17 +12,15 @@ pub(crate) async fn get_shared_files_list_tool(
1212 client : Arc < Mutex < BacklogApiClient > > ,
1313 request : GetSharedFilesListRequest ,
1414 access_control : & AccessControl ,
15- ) -> Result < Vec < SharedFile > , McpError > {
15+ ) -> Result < Vec < SharedFile > > {
1616 let client_guard = client. lock ( ) . await ;
1717
18- let project_id_or_key = ProjectIdOrKey :: from_str ( & request. project_id_or_key )
19- . map_err ( |e| McpError :: invalid_request ( format ! ( "Invalid project ID or key: {e}" ) , None ) ) ?;
18+ let project_id_or_key = ProjectIdOrKey :: from_str ( & request. project_id_or_key ) ?;
2019
2120 // Check project access with parsed type
2221 access_control
2322 . check_project_access_id_or_key_async ( & project_id_or_key, & client_guard)
24- . await
25- . map_err ( |e| McpError :: invalid_request ( format ! ( "Access denied: {e}" ) , None ) ) ?;
23+ . await ?;
2624
2725 let params = GetSharedFilesListParams {
2826 project_id_or_key,
@@ -32,37 +30,25 @@ pub(crate) async fn get_shared_files_list_tool(
3230 count : request. count ,
3331 } ;
3432
35- client_guard
36- . file ( )
37- . get_shared_files_list ( params)
38- . await
39- . map_err ( |e| {
40- McpError :: internal_error ( format ! ( "Failed to get shared files list: {e}" ) , None )
41- } )
33+ Ok ( client_guard. file ( ) . get_shared_files_list ( params) . await ?)
4234}
4335
4436pub ( crate ) async fn download_shared_file_bridge (
4537 client : Arc < Mutex < BacklogApiClient > > ,
4638 request : DownloadSharedFileRequest ,
4739 access_control : & AccessControl ,
48- ) -> Result < DownloadedFile , McpError > {
40+ ) -> Result < DownloadedFile > {
4941 let client_guard = client. lock ( ) . await ;
5042
51- let project_id_or_key = ProjectIdOrKey :: from_str ( & request. project_id_or_key )
52- . map_err ( |e| McpError :: invalid_request ( format ! ( "Invalid project ID or key: {e}" ) , None ) ) ?;
43+ let project_id_or_key = ProjectIdOrKey :: from_str ( & request. project_id_or_key ) ?;
5344
5445 // Check project access with parsed type
5546 access_control
5647 . check_project_access_id_or_key_async ( & project_id_or_key, & client_guard)
57- . await
58- . map_err ( |e| McpError :: invalid_request ( format ! ( "Access denied: {e}" ) , None ) ) ?;
48+ . await ?;
5949
6050 let shared_file_id = SharedFileId :: new ( request. shared_file_id ) ;
6151 let params = GetFileParams :: new ( project_id_or_key, shared_file_id) ;
6252
63- client_guard
64- . file ( )
65- . get_file ( params)
66- . await
67- . map_err ( |e| McpError :: internal_error ( format ! ( "Failed to download shared file: {e}" ) , None ) )
53+ Ok ( client_guard. file ( ) . get_file ( params) . await ?)
6854}
0 commit comments