@nger/fk-upload 1.0.88 → 1.0.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/templates/check-upload.d.ts +3 -0
- package/dist/templates/check-upload.js +17 -0
- package/dist/templates/setting.d.ts +4 -2
- package/dist/templates/setting.js +15 -16
- package/dist/templates/tasks/actions.d.ts +4 -0
- package/dist/templates/tasks/actions.js +2 -1
- package/dist/templates/tasks/check-task.d.ts +7 -0
- package/dist/templates/tasks/check-task.js +52 -0
- package/dist/templates/tasks/effect-task.js +2 -1
- package/dist/templates/tasks/providers.js +6 -0
- package/dist/templates/tasks/task.service.d.ts +1 -1
- package/dist/templates/tasks/task.service.js +3 -1
- package/docs.md +2 -0
- package/package.json +1 -1
@@ -11,6 +11,7 @@ const http_1 = require("@nger/http");
|
|
11
11
|
const typeorm_2 = require("typeorm");
|
12
12
|
const fs_extra_1 = require("fs-extra");
|
13
13
|
const task_service_1 = require("./tasks/task.service");
|
14
|
+
const actions_1 = require("./tasks/actions");
|
14
15
|
let CheckUploadController = class CheckUploadController {
|
15
16
|
db;
|
16
17
|
manager;
|
@@ -100,6 +101,16 @@ let CheckUploadController = class CheckUploadController {
|
|
100
101
|
list: list.map(item => item.filename)
|
101
102
|
};
|
102
103
|
}
|
104
|
+
async checkFinish() {
|
105
|
+
const finishs = await this.db.manager.find(fk_download_task_entity_1.FkDownloadTaskEntity, { where: { status: 3 } });
|
106
|
+
await Promise.all(finishs.map(finish => {
|
107
|
+
const item = new rabbitmq_1.TaskEntity();
|
108
|
+
item.topic = actions_1.CHECK_ACTION;
|
109
|
+
item.data = { filename: finish.filename };
|
110
|
+
this.manager.send(item);
|
111
|
+
}));
|
112
|
+
return { list: finishs.map(it => it.filename) };
|
113
|
+
}
|
103
114
|
};
|
104
115
|
tslib_1.__decorate([
|
105
116
|
(0, http_1.Get)('reupload'),
|
@@ -143,6 +154,12 @@ tslib_1.__decorate([
|
|
143
154
|
tslib_1.__metadata("design:paramtypes", []),
|
144
155
|
tslib_1.__metadata("design:returntype", Promise)
|
145
156
|
], CheckUploadController.prototype, "checkWaitUploadTask", null);
|
157
|
+
tslib_1.__decorate([
|
158
|
+
(0, http_1.Get)('checkFinish'),
|
159
|
+
tslib_1.__metadata("design:type", Function),
|
160
|
+
tslib_1.__metadata("design:paramtypes", []),
|
161
|
+
tslib_1.__metadata("design:returntype", Promise)
|
162
|
+
], CheckUploadController.prototype, "checkFinish", null);
|
146
163
|
CheckUploadController = tslib_1.__decorate([
|
147
164
|
(0, core_1.Controller)(`@nger/fk-upload`),
|
148
165
|
tslib_1.__metadata("design:paramtypes", [typeorm_1.Db, rabbitmq_1.TaskManager, core_1.Injector])
|
@@ -3,11 +3,13 @@ import { TaskService } from './tasks/task.service';
|
|
3
3
|
import { Client } from '@nger/redis';
|
4
4
|
import { Context } from 'koa';
|
5
5
|
import { TaskManager } from '@nger/rabbitmq';
|
6
|
+
import { Db } from '@nger/typeorm';
|
6
7
|
export declare class SettingController {
|
7
8
|
private task;
|
8
9
|
private redis;
|
9
10
|
private manager;
|
10
|
-
|
11
|
-
|
11
|
+
private db;
|
12
|
+
constructor(task: TaskService, redis: Client, manager: TaskManager, db: Db);
|
13
|
+
saveSetting(body: any, taskId: number, ctx: Context): Promise<void>;
|
12
14
|
setting(): Promise<JSX.Element>;
|
13
15
|
}
|
@@ -8,36 +8,34 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
8
8
|
const component_1 = require("./component");
|
9
9
|
const task_service_1 = require("./tasks/task.service");
|
10
10
|
const redis_1 = require("@nger/redis");
|
11
|
+
const actions_1 = require("./tasks/actions");
|
11
12
|
const rabbitmq_1 = require("@nger/rabbitmq");
|
13
|
+
const typeorm_1 = require("@nger/typeorm");
|
12
14
|
let SettingController = class SettingController {
|
13
15
|
task;
|
14
16
|
redis;
|
15
17
|
manager;
|
16
|
-
|
18
|
+
db;
|
19
|
+
constructor(task, redis, manager, db) {
|
17
20
|
this.task = task;
|
18
21
|
this.redis = redis;
|
19
22
|
this.manager = manager;
|
23
|
+
this.db = db;
|
20
24
|
}
|
21
|
-
async saveSetting(body, ctx) {
|
22
|
-
const task = await this.task.createScheduleTask(body.name, body.rule);
|
25
|
+
async saveSetting(body, taskId, ctx) {
|
26
|
+
const task = await this.task.createScheduleTask(body.name, body.rule, Number(taskId));
|
23
27
|
await this.manager.send(task);
|
24
28
|
ctx.redirect(`/@nger/fk-upload/setting`);
|
25
29
|
return;
|
26
30
|
}
|
27
31
|
async setting() {
|
28
|
-
const
|
29
|
-
|
30
|
-
|
31
|
-
return reject(err);
|
32
|
-
if (reply)
|
33
|
-
resolve(JSON.parse(reply));
|
34
|
-
resolve({});
|
35
|
-
});
|
36
|
-
});
|
32
|
+
const task = await this.db.manager.findOne(rabbitmq_1.TaskEntity, { where: { topic: actions_1.SCHEDULE_ACTION } });
|
33
|
+
const setting = task ? task.data : {};
|
34
|
+
const url = `/@nger/fk-upload/setting?id=${task.taskId}`;
|
37
35
|
return react_1.default.createElement(component_1.Nav, { active: 4 },
|
38
36
|
react_1.default.createElement("div", { className: "card" },
|
39
37
|
react_1.default.createElement("div", { className: "card-body" },
|
40
|
-
react_1.default.createElement("form", { action:
|
38
|
+
react_1.default.createElement("form", { action: url, method: 'post', encType: 'application/x-www-form-urlencoded' },
|
41
39
|
react_1.default.createElement("div", { className: "form-group" },
|
42
40
|
react_1.default.createElement("label", { htmlFor: "name" }, "\u540D\u79F0"),
|
43
41
|
react_1.default.createElement("input", { type: "text", className: 'form-control', onChange: e => { }, value: setting.name, id: "name", name: "name" })),
|
@@ -52,9 +50,10 @@ let SettingController = class SettingController {
|
|
52
50
|
tslib_1.__decorate([
|
53
51
|
(0, http_1.Post)('setting'),
|
54
52
|
tslib_1.__param(0, (0, http_1.Body)()),
|
55
|
-
tslib_1.__param(1, (0,
|
53
|
+
tslib_1.__param(1, (0, http_1.Query)('id')),
|
54
|
+
tslib_1.__param(2, (0, core_1.Inject)(http_1.CONTEXT)),
|
56
55
|
tslib_1.__metadata("design:type", Function),
|
57
|
-
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
56
|
+
tslib_1.__metadata("design:paramtypes", [Object, Number, Object]),
|
58
57
|
tslib_1.__metadata("design:returntype", Promise)
|
59
58
|
], SettingController.prototype, "saveSetting", null);
|
60
59
|
tslib_1.__decorate([
|
@@ -65,6 +64,6 @@ tslib_1.__decorate([
|
|
65
64
|
], SettingController.prototype, "setting", null);
|
66
65
|
SettingController = tslib_1.__decorate([
|
67
66
|
(0, core_1.Controller)(`@nger/fk-upload`),
|
68
|
-
tslib_1.__metadata("design:paramtypes", [task_service_1.TaskService, redis_1.Client, rabbitmq_1.TaskManager])
|
67
|
+
tslib_1.__metadata("design:paramtypes", [task_service_1.TaskService, redis_1.Client, rabbitmq_1.TaskManager, typeorm_1.Db])
|
69
68
|
], SettingController);
|
70
69
|
exports.SettingController = SettingController;
|
@@ -1,7 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.EFFECT_ACTION = exports.UPLOAD_ACTION = exports.SCHEDULE_ACTION = exports.DOWNLOAD_ACTION = void 0;
|
3
|
+
exports.CHECK_ACTION = exports.EFFECT_ACTION = exports.UPLOAD_ACTION = exports.SCHEDULE_ACTION = exports.DOWNLOAD_ACTION = void 0;
|
4
4
|
exports.DOWNLOAD_ACTION = `@nger/fk-upload/download-task`;
|
5
5
|
exports.SCHEDULE_ACTION = `@nger/fk-upload/schedule-task`;
|
6
6
|
exports.UPLOAD_ACTION = `@nger/fk-upload/upload-task`;
|
7
7
|
exports.EFFECT_ACTION = `@nger/fk-upload/effect-task`;
|
8
|
+
exports.CHECK_ACTION = `@nger/fk-upload/check-task`;
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CheckTask = void 0;
|
4
|
+
const fk_download_task_entity_1 = require("./../../entities/fk-download-task.entity");
|
5
|
+
const typeorm_1 = require("@nger/typeorm");
|
6
|
+
const actions_1 = require("./actions");
|
7
|
+
const rabbitmq_1 = require("@nger/rabbitmq");
|
8
|
+
const core_1 = require("@nger/core");
|
9
|
+
const request_1 = require("request");
|
10
|
+
class CheckTask extends rabbitmq_1.Task {
|
11
|
+
constructor() {
|
12
|
+
super(actions_1.CHECK_ACTION);
|
13
|
+
}
|
14
|
+
async handle(injector, next) {
|
15
|
+
const data = injector.get(rabbitmq_1.DATA);
|
16
|
+
const complete = injector.get(rabbitmq_1.COMPLETE);
|
17
|
+
const db = injector.get(typeorm_1.Db);
|
18
|
+
const task = injector.get(rabbitmq_1.TaskManager);
|
19
|
+
const filename = data.filename;
|
20
|
+
if (filename) {
|
21
|
+
const finishs = await db.manager.findOne(fk_download_task_entity_1.FkDownloadTaskEntity, { where: { filename } });
|
22
|
+
const uploadSize = await this.getSize(finishs.uploadUrl);
|
23
|
+
const downloadSize = await this.getSize(finishs.url);
|
24
|
+
if (uploadSize === downloadSize) {
|
25
|
+
await complete();
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
console.log({ uploadSize, downloadSize });
|
29
|
+
await complete();
|
30
|
+
}
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
await complete();
|
34
|
+
}
|
35
|
+
return next && next();
|
36
|
+
}
|
37
|
+
async getSize(url) {
|
38
|
+
const size = (0, core_1.defer)();
|
39
|
+
const req = (0, request_1.get)(url, {
|
40
|
+
headers: {
|
41
|
+
'Content-Type': 'application/octet-stream'
|
42
|
+
}
|
43
|
+
});
|
44
|
+
req.on('response', async (resp) => {
|
45
|
+
const headers = resp.headers;
|
46
|
+
size.resolve(Number(headers["content-length"]));
|
47
|
+
req.destroy();
|
48
|
+
});
|
49
|
+
return size;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
exports.CheckTask = CheckTask;
|
@@ -14,6 +14,7 @@ class EffectTask extends rabbitmq_1.Task {
|
|
14
14
|
async handle(injector, next) {
|
15
15
|
const task = injector.get(rabbitmq_1.DATA);
|
16
16
|
const complete = injector.get(rabbitmq_1.COMPLETE);
|
17
|
+
console.log(`effect`, task.filename);
|
17
18
|
if (task.uploadUrl.startsWith('https://site')) {
|
18
19
|
await complete();
|
19
20
|
return next && next();
|
@@ -27,7 +28,7 @@ class EffectTask extends rabbitmq_1.Task {
|
|
27
28
|
await (0, fs_extra_1.unlink)(task.path);
|
28
29
|
}
|
29
30
|
catch (e) { }
|
30
|
-
await w7.manager.update(w7_1.W7ChatTopicEntity, task.topicId, {
|
31
|
+
await w7.manager.update(w7_1.W7ChatTopicEntity, task.topicId, { foreverUrl: task.uploadUrl }).then(() => complete()).catch(() => fail());
|
31
32
|
await complete();
|
32
33
|
}
|
33
34
|
else {
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.tasksProviders = void 0;
|
4
|
+
const check_task_1 = require("./check-task");
|
4
5
|
const rabbitmq_1 = require("@nger/rabbitmq");
|
5
6
|
const download_task_1 = require("./download-task");
|
6
7
|
const effect_task_1 = require("./effect-task");
|
@@ -26,5 +27,10 @@ exports.tasksProviders = [
|
|
26
27
|
provide: rabbitmq_1.Task,
|
27
28
|
useFactory: () => new effect_task_1.EffectTask(),
|
28
29
|
multi: true
|
30
|
+
},
|
31
|
+
{
|
32
|
+
provide: rabbitmq_1.Task,
|
33
|
+
useFactory: () => new check_task_1.CheckTask(),
|
34
|
+
multi: true
|
29
35
|
}
|
30
36
|
];
|
@@ -5,7 +5,7 @@ export declare class TaskService {
|
|
5
5
|
private injector;
|
6
6
|
constructor(injector: Injector);
|
7
7
|
createEffectTask(filename: string, uploadUrl: string, topicId: number, path: string): Promise<TaskEntity<any>>;
|
8
|
-
createScheduleTask(name: string, rule: string): Promise<TaskEntity<any>>;
|
8
|
+
createScheduleTask(name: string, rule: string, id?: number): Promise<TaskEntity<any>>;
|
9
9
|
createUploadTask(download: IDownloadTask, total: number, md5: string, injector: Injector): Promise<TaskEntity<IUploadTask>>;
|
10
10
|
createDownLoadTask(url: string, loginId: number, topicId: number): Promise<TaskEntity<IDownloadTask>>;
|
11
11
|
}
|
@@ -29,12 +29,14 @@ let TaskService = class TaskService {
|
|
29
29
|
task.data = effect;
|
30
30
|
return task;
|
31
31
|
}
|
32
|
-
async createScheduleTask(name, rule) {
|
32
|
+
async createScheduleTask(name, rule, id) {
|
33
33
|
const schedule = {
|
34
34
|
name,
|
35
35
|
rule
|
36
36
|
};
|
37
37
|
const task = new rabbitmq_1.TaskEntity();
|
38
|
+
if (id)
|
39
|
+
task.taskId = id;
|
38
40
|
task.topic = actions_1.SCHEDULE_ACTION;
|
39
41
|
task.data = schedule;
|
40
42
|
return task;
|
package/docs.md
CHANGED