Browse Source

check bot status before save task data

master
filesite 8 months ago
parent
commit
00aac960e0
  1. 4
      heroUnion.mjs
  2. 48
      router_api.mjs
  3. 2
      test/heroUnion.test.mjs

4
heroUnion.mjs

@ -543,6 +543,10 @@ class HeroUnion {
return this.heros.slice(start, end); return this.heros.slice(start, end);
} }
getHeroByName(bot_name) {
return this.heros.find((item) => item.name == bot_name);
}
//初始化 //初始化
async init() { async init() {
await this.getConfig(); await this.getConfig();

48
router_api.mjs

@ -243,29 +243,39 @@ router.post('/savetask/', async (req, res) => {
data.message = '任务编号task_id格式错误,请使用接口/api/gettask/返回数据里的任务id属性值'; data.message = '任务编号task_id格式错误,请使用接口/api/gettask/返回数据里的任务id属性值';
} }
//签名检查,如果通过则保存任务数据 //检查爬虫是否存在及其状态
let task = heroUnion.getTaskById(task_id); if (!data.message) {
if (task) { let heroBot = heroUnion.getHeroByName(name);
let paramsCheck = { if (!heroBot || heroBot.status == 'offline') {
name: name, data.message = `爬虫${name}不存在或已下线`;
task_id: task_id, }
task_result: task_result }
};
let mySign = common.sign(paramsCheck, task.token); //签名检查,如果通过则保存任务数据
if (mySign.toLowerCase() != sign.toLowerCase()) { if (!data.message) {
data.message = `签名 ${sign} 不匹配,请确保token正确及签名方法跟文档一致`; let task = heroUnion.getTaskById(task_id);
}else { if (task) {
let saved = heroUnion.saveTaskById(name, task_id, task_result); let paramsCheck = {
if (saved) { name: name,
data.code = 1; task_id: task_id,
data.message = '保存任务数据完成'; task_result: task_result
};
let mySign = common.sign(paramsCheck, task.token);
if (mySign.toLowerCase() != sign.toLowerCase()) {
data.message = `签名 ${sign} 不匹配,请确保token正确及签名方法跟文档一致`;
}else { }else {
data.message = `任务${task_id}已经完成,请勿重复提交数据`; let saved = heroUnion.saveTaskById(name, task_id, task_result);
if (saved) {
data.code = 1;
data.message = '保存任务数据完成';
}else {
data.message = `任务${task_id}已经完成,请勿重复提交数据`;
}
} }
}else {
data.message = `任务${task_id}不存在`;
} }
}else {
data.message = `任务${task_id}不存在`;
} }
return res.status(200).json(data); return res.status(200).json(data);

2
test/heroUnion.test.mjs

@ -199,7 +199,7 @@ test('HeroUnion task data save test', async (t) => {
api = 'http://127.0.0.1:8080/api/savetask/'; api = 'http://127.0.0.1:8080/api/savetask/';
params = { params = {
name: "heroDemo", name: "test_hero",
task_id: task.id, task_id: task.id,
task_result: task_data task_result: task_data
}; };

Loading…
Cancel
Save