@nger/fk-upload 1.0.32 → 1.0.35

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.
Files changed (45) hide show
  1. package/dist/entities/fk-download-task.entity.js +9 -3
  2. package/dist/fk-upload.module.js +8 -4
  3. package/dist/main.js +2 -1
  4. package/dist/mq-runner.js +5 -7
  5. package/dist/templates/add-task.d.ts +4 -2
  6. package/dist/templates/add-task.js +8 -4
  7. package/dist/templates/create-download-task.d.ts +0 -0
  8. package/dist/templates/create-download-task.js +1 -0
  9. package/dist/templates/player.d.ts +3 -0
  10. package/dist/templates/player.js +34 -0
  11. package/dist/templates/receive-shedule-task.d.ts +14 -0
  12. package/dist/templates/receive-shedule-task.js +64 -0
  13. package/dist/templates/setting.d.ts +5 -3
  14. package/dist/templates/setting.js +10 -11
  15. package/dist/templates/task-manage.d.ts +2 -5
  16. package/dist/templates/task-manage.js +10 -23
  17. package/dist/templates/task-types.d.ts +34 -0
  18. package/dist/templates/task-types.js +2 -0
  19. package/dist/templates/task.service.d.ts +0 -68
  20. package/dist/templates/task.service.js +406 -482
  21. package/dist/templates/tasks/actions.d.ts +38 -0
  22. package/dist/templates/tasks/actions.js +7 -0
  23. package/dist/templates/tasks/create-download-task.d.ts +12 -0
  24. package/dist/templates/tasks/create-download-task.js +65 -0
  25. package/dist/templates/tasks/download-task.d.ts +10 -0
  26. package/dist/templates/tasks/download-task.js +98 -0
  27. package/dist/templates/tasks/effect-task.d.ts +6 -0
  28. package/dist/templates/tasks/effect-task.js +30 -0
  29. package/dist/templates/tasks/fk.service.d.ts +26 -0
  30. package/dist/templates/tasks/fk.service.js +228 -0
  31. package/dist/templates/tasks/index.d.ts +0 -0
  32. package/dist/templates/tasks/index.js +1 -0
  33. package/dist/templates/tasks/providers.d.ts +2 -0
  34. package/dist/templates/tasks/providers.js +25 -0
  35. package/dist/templates/tasks/receive-shedule-task.d.ts +16 -0
  36. package/dist/templates/tasks/receive-shedule-task.js +66 -0
  37. package/dist/templates/tasks/schedule-task.d.ts +9 -0
  38. package/dist/templates/tasks/schedule-task.js +63 -0
  39. package/dist/templates/tasks/task.service.d.ts +10 -0
  40. package/dist/templates/tasks/task.service.js +77 -0
  41. package/dist/templates/tasks/upload-task.d.ts +6 -0
  42. package/dist/templates/tasks/upload-task.js +32 -0
  43. package/dist/templates/upload.service.d.ts +0 -12
  44. package/dist/templates/upload.service.js +0 -49
  45. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScheduleTask = void 0;
4
+ const rabbitmq_1 = require("@nger/rabbitmq");
5
+ const actions_1 = require("./actions");
6
+ const schedule_1 = require("@nger/schedule");
7
+ const typeorm_1 = require("@nger/typeorm");
8
+ const entities_1 = require("../../entities");
9
+ const w7_1 = require("@nger/w7");
10
+ const typeorm_2 = require("typeorm");
11
+ const task_service_1 = require("./task.service");
12
+ /**
13
+ * finish
14
+ */
15
+ class ScheduleTask extends rabbitmq_1.Task {
16
+ constructor() {
17
+ super(actions_1.SCHEDULE_ACTION);
18
+ }
19
+ async handle(injector, next) {
20
+ const task = injector.get(rabbitmq_1.DATA);
21
+ const schedule = injector.get(schedule_1.ScheduleService);
22
+ const db = injector.get(typeorm_1.Db);
23
+ const w7 = injector.get(w7_1.W7DataSource);
24
+ const manager = injector.get(rabbitmq_1.TaskManager);
25
+ const taskService = injector.get(task_service_1.TaskService);
26
+ const run = async () => {
27
+ const accounts = await db.manager.find(entities_1.FkLoginEntity, {});
28
+ const w7Usernames = accounts.map(account => account.w7Username);
29
+ const users = await w7.manager.find(w7_1.W7UsersEntity, { where: { username: (0, typeorm_2.In)(w7Usernames) } });
30
+ const uids = users.map(user => user.uid);
31
+ const uniAccounts = await w7.manager.find(w7_1.W7UniAccountEntity, { where: { createUid: (0, typeorm_2.In)(uids) } });
32
+ const uniacids = uniAccounts.map(a => a.uniacid);
33
+ const tasks = await db.manager.find(entities_1.FkDownloadTaskEntity, { select: ['topicId'] });
34
+ const ids = tasks.map(task => task.topicId);
35
+ const topics = await w7.manager.find(w7_1.W7ChatTopicEntity, { where: { uniacid: (0, typeorm_2.In)(uniacids), id: (0, typeorm_2.Not)((0, typeorm_2.In)(ids)) } });
36
+ topics.map(async (topic) => {
37
+ if (topic.thirdUrl) {
38
+ const uniacid = topic.uniacid;
39
+ const account = uniAccounts.find(a => a.uniacid === uniacid);
40
+ const user = users.find(u => u.uid === account.createUid);
41
+ const login = accounts.find(a => a.w7Username === user.username);
42
+ const task = await taskService.createDownLoadTask(topic.thirdUrl, login.fkLoginId, topic.id);
43
+ const download = task.data;
44
+ const fkdownloadTask = new entities_1.FkDownloadTaskEntity();
45
+ fkdownloadTask.filename = download.filename;
46
+ fkdownloadTask.loginId = download.loginId;
47
+ fkdownloadTask.path = download.path;
48
+ fkdownloadTask.url = download.url;
49
+ fkdownloadTask.topicId = download.topicId;
50
+ await db.manager.save(entities_1.FkDownloadTaskEntity, fkdownloadTask);
51
+ await manager.send(task);
52
+ }
53
+ });
54
+ };
55
+ await run();
56
+ schedule.scheduleJob(task.name, task.rule, async (time) => {
57
+ await run();
58
+ });
59
+ if (next)
60
+ await next();
61
+ }
62
+ }
63
+ exports.ScheduleTask = ScheduleTask;
@@ -0,0 +1,10 @@
1
+ import { Injector } from "@nger/core";
2
+ import { IDownloadTask } from "./actions";
3
+ import { TaskEntity } from "@nger/rabbitmq";
4
+ export declare class TaskService {
5
+ private injector;
6
+ constructor(injector: Injector);
7
+ createEffectTask(filename: string, uploadUrl: string, topicId: number): Promise<TaskEntity<any>>;
8
+ createScheduleTask(name: string, rule: string): Promise<TaskEntity<any>>;
9
+ createDownLoadTask(url: string, loginId: number, topicId: number): Promise<TaskEntity<IDownloadTask>>;
10
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TaskService = void 0;
16
+ const cids_1 = __importDefault(require("cids"));
17
+ const fs_extra_1 = require("fs-extra");
18
+ const multihashing_async_1 = __importDefault(require("multihashing-async"));
19
+ const core_1 = require("@nger/core");
20
+ const path_1 = require("path");
21
+ const actions_1 = require("./actions");
22
+ const rabbitmq_1 = require("@nger/rabbitmq");
23
+ let TaskService = class TaskService {
24
+ injector;
25
+ constructor(injector) {
26
+ this.injector = injector;
27
+ }
28
+ async createEffectTask(filename, uploadUrl, topicId) {
29
+ const effect = {
30
+ filename,
31
+ uploadUrl,
32
+ topicId
33
+ };
34
+ const task = new rabbitmq_1.TaskEntity();
35
+ task.topic = actions_1.EFFECT_ACTION;
36
+ task.data = effect;
37
+ return task;
38
+ }
39
+ async createScheduleTask(name, rule) {
40
+ const schedule = {
41
+ name,
42
+ rule
43
+ };
44
+ const task = new rabbitmq_1.TaskEntity();
45
+ task.topic = actions_1.SCHEDULE_ACTION;
46
+ task.data = schedule;
47
+ return task;
48
+ }
49
+ async createDownLoadTask(url, loginId, topicId) {
50
+ const hash = await (0, multihashing_async_1.default)(Buffer.from(url), 'sha1', 16);
51
+ const cid = new cids_1.default(1, 'raw', hash, 'base64');
52
+ let filename = encodeURIComponent(cid.toString('base64'));
53
+ const _url = new URL(url);
54
+ const filePath = _url.pathname;
55
+ let ext = (0, path_1.extname)(filePath);
56
+ filename += ext === '.' ? '.mp4' : ext;
57
+ const root = this.injector.get(core_1.APP_ROOT);
58
+ (0, fs_extra_1.ensureDirSync)((0, path_1.join)(root, 'attachments/fk-upload'));
59
+ const path = (0, path_1.join)(root, 'attachments/fk-upload', filename);
60
+ const download = {
61
+ filename: filename,
62
+ path: path,
63
+ url,
64
+ topicId,
65
+ loginId
66
+ };
67
+ const task = new rabbitmq_1.TaskEntity();
68
+ task.topic = actions_1.DOWNLOAD_ACTION;
69
+ task.data = download;
70
+ return task;
71
+ }
72
+ };
73
+ TaskService = __decorate([
74
+ (0, core_1.Injectable)(),
75
+ __metadata("design:paramtypes", [core_1.Injector])
76
+ ], TaskService);
77
+ exports.TaskService = TaskService;
@@ -0,0 +1,6 @@
1
+ import { Task } from "@nger/rabbitmq";
2
+ import { Injector, Next } from "@nger/core";
3
+ export declare class UploadTask extends Task {
4
+ constructor();
5
+ handle(injector: Injector, next?: Next): Promise<void>;
6
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UploadTask = void 0;
4
+ const rabbitmq_1 = require("@nger/rabbitmq");
5
+ const actions_1 = require("./actions");
6
+ const fk_service_1 = require("./fk.service");
7
+ const task_service_1 = require("./task.service");
8
+ const typeorm_1 = require("@nger/typeorm");
9
+ const entities_1 = require("../../entities");
10
+ class UploadTask extends rabbitmq_1.Task {
11
+ constructor() {
12
+ super(actions_1.UPLOAD_ACTION);
13
+ }
14
+ async handle(injector, next) {
15
+ const task = injector.get(rabbitmq_1.DATA);
16
+ const complete = injector.get(rabbitmq_1.COMPLETE);
17
+ const fail = injector.get(rabbitmq_1.FAIL);
18
+ const fk = injector.get(fk_service_1.FkService);
19
+ const taskService = injector.get(task_service_1.TaskService);
20
+ const manager = injector.get(rabbitmq_1.TaskManager);
21
+ const db = injector.get(typeorm_1.Db);
22
+ await fk.startUploadFile(task).then(async (res) => {
23
+ // create effect task
24
+ await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { status: 2, uploadUrl: task.uploadUrl, uploadSize: task.total, uploadStatus: 1 });
25
+ const effectTask = await taskService.createEffectTask(task.filename, task.uploadUrl, task.topicId);
26
+ return manager.send(effectTask).then(() => complete()).catch(() => fail());
27
+ }).catch(() => fail());
28
+ if (next)
29
+ await next();
30
+ }
31
+ }
32
+ exports.UploadTask = UploadTask;
@@ -1,12 +0,0 @@
1
- import { Db } from '@nger/typeorm';
2
- import { Injector } from '@nger/core';
3
- import { WsService } from '@nger/ws';
4
- import { TaskService } from './task.service';
5
- export declare class UploadService {
6
- private db;
7
- private injector;
8
- get ws(): WsService;
9
- get task(): TaskService;
10
- constructor(db: Db, injector: Injector);
11
- continueTask(filename: string): Promise<void>;
12
- }
@@ -1,50 +1 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UploadService = void 0;
13
- const entities_1 = require("../entities");
14
- const typeorm_1 = require("@nger/typeorm");
15
- const core_1 = require("@nger/core");
16
- const ws_1 = require("@nger/ws");
17
- const task_service_1 = require("./task.service");
18
- let UploadService = class UploadService {
19
- db;
20
- injector;
21
- get ws() {
22
- return this.injector.get(ws_1.WsService);
23
- }
24
- get task() {
25
- return this.injector.get(task_service_1.TaskService);
26
- }
27
- constructor(db, injector) {
28
- this.db = db;
29
- this.injector = injector;
30
- }
31
- async continueTask(filename) {
32
- const task = await this.db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename } });
33
- if (task) {
34
- if (task.status === 0) {
35
- return this.task.createDownLoadTask(task.url, task.loginId, 0);
36
- }
37
- else if (task.status === 1) {
38
- return this.task.startUploadTask(task.filename);
39
- }
40
- else {
41
- console.log(task);
42
- }
43
- }
44
- }
45
- };
46
- UploadService = __decorate([
47
- (0, core_1.Injectable)(),
48
- __metadata("design:paramtypes", [typeorm_1.Db, core_1.Injector])
49
- ], UploadService);
50
- exports.UploadService = UploadService;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nger/fk-upload",
3
- "version": "1.0.32",
3
+ "version": "1.0.35",
4
4
  "description": "",
5
5
  "main": "dist/core.js",
6
6
  "types": "dist/core.d.ts",