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

Method execute

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

Source from the content-addressed store, hash-verified

83 return "share_file"
84
85 async def execute(self, config: dict, context: ExecutionContext) -> ModuleResult:
86 from app.services.file_share import start_file_share, get_local_ip
87
88 file_path = context.resolve_value(config.get("filePath", ""))
89 port = to_int(config.get("port", 8080), 8080, context)
90 result_variable = config.get("resultVariable", "share_url")
91
92 if not file_path:
93 return ModuleResult(success=False, error="文件路径不能为空")
94
95 file = Path(file_path)
96 if not file.exists():
97 return ModuleResult(success=False, error=f"文件不存在: {file_path}")
98
99 if not file.is_file():
100 return ModuleResult(success=False, error=f"路径不是文件: {file_path}")
101
102 try:
103 result = start_file_share(
104 path=str(file.resolve()),
105 port=port,
106 share_type='file',
107 name=file.name
108 )
109
110 if not result['success']:
111 return ModuleResult(success=False, error=result.get('error', '启动共享服务失败'))
112
113 share_url = result['url']
114 local_ip = result['ip']
115 file_size = file.stat().st_size
116
117 # 格式化文件大小
118 size_str = self._format_size(file_size)
119
120 if result_variable:
121 context.set_variable(result_variable, share_url)
122
123 message = f"📄 文件共享已启动!\n" \
124 f"文件名: {file.name}\n" \
125 f"文件大小: {size_str}\n" \
126 f"访问地址: {share_url}\n" \
127 f"💡 同局域网的设备可以使用浏览器访问上述地址来下载此文件"
128
129 return ModuleResult(
130 success=True,
131 message=message,
132 data={
133 'url': share_url,
134 'ip': local_ip,
135 'port': port,
136 'path': str(file.resolve()),
137 'name': file.name,
138 'size': file_size
139 }
140 )
141
142 except Exception as e:

Callers

nothing calls this directly

Calls 9

_format_sizeMethod · 0.95
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