MCPcopy
hub / github.com/pmh1314520/WebRPA / execute

Method execute

backend/app/executors/advanced_share.py:16–75  ·  view source on GitHub ↗
(self, config: dict, context: ExecutionContext)

Source from the content-addressed store, hash-verified

14 return "share_folder"
15
16 async def execute(self, config: dict, context: ExecutionContext) -> ModuleResult:
17 from app.services.file_share import start_file_share, get_local_ip
18
19 folder_path = context.resolve_value(config.get("folderPath", ""))
20 port = to_int(config.get("port", 8080), 8080, context)
21 share_name = context.resolve_value(config.get("shareName", "")) or "共享文件夹"
22 result_variable = config.get("resultVariable", "share_url")
23 allow_write = config.get("allowWrite", True) # 默认允许写操作
24
25 if not folder_path:
26 return ModuleResult(success=False, error="文件夹路径不能为空")
27
28 folder = Path(folder_path)
29 if not folder.exists():
30 return ModuleResult(success=False, error=f"文件夹不存在: {folder_path}")
31
32 if not folder.is_dir():
33 return ModuleResult(success=False, error=f"路径不是文件夹: {folder_path}")
34
35 try:
36 result = start_file_share(
37 path=str(folder.resolve()),
38 port=port,
39 share_type='folder',
40 name=share_name,
41 allow_write=allow_write
42 )
43
44 if not result['success']:
45 return ModuleResult(success=False, error=result.get('error', '启动共享服务失败'))
46
47 share_url = result['url']
48 local_ip = result['ip']
49
50 if result_variable:
51 context.set_variable(result_variable, share_url)
52
53 write_mode = "可上传/删除" if allow_write else "仅下载"
54 message = f"📂 文件夹共享已启动!\n" \
55 f"共享名称: {share_name}\n" \
56 f"共享路径: {folder_path}\n" \
57 f"访问地址: {share_url}\n" \
58 f"权限模式: {write_mode}\n" \
59 f"💡 同局域网的设备可以使用浏览器访问上述地址来浏览和下载文件"
60
61 return ModuleResult(
62 success=True,
63 message=message,
64 data={
65 'url': share_url,
66 'ip': local_ip,
67 'port': port,
68 'path': str(folder.resolve()),
69 'name': share_name,
70 'allowWrite': allow_write
71 }
72 )
73

Callers

nothing calls this directly

Calls 8

start_file_shareFunction · 0.90
to_intFunction · 0.85
ModuleResultClass · 0.85
resolve_valueMethod · 0.80
existsMethod · 0.80
set_variableMethod · 0.80
getMethod · 0.45
resolveMethod · 0.45

Tested by

no test coverage detected