@nger/fk-upload 1.0.5 → 1.0.6

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 (56) hide show
  1. package/dist/core.d.ts +1 -0
  2. package/dist/entities/fk-download-task.entity.d.ts +12 -0
  3. package/dist/entities/fk-download-task.entity.js +80 -0
  4. package/dist/entities/fk-login-account.entity.d.ts +5 -0
  5. package/dist/entities/fk-login-account.entity.js +38 -0
  6. package/dist/entities/fk-login-cookie.entity.d.ts +7 -0
  7. package/dist/entities/fk-login-cookie.entity.js +54 -0
  8. package/dist/entities/fk-login.entity.d.ts +12 -0
  9. package/dist/entities/fk-login.entity.js +88 -0
  10. package/dist/entities/index.d.ts +3 -0
  11. package/dist/entities/index.js +19 -0
  12. package/dist/fk-upload.controller.d.ts +28 -0
  13. package/dist/fk-upload.controller.js +271 -0
  14. package/dist/fk-upload.module.d.ts +2 -0
  15. package/dist/fk-upload.module.js +58 -0
  16. package/dist/fk-v2.service.d.ts +29 -0
  17. package/dist/fk-v2.service.js +153 -0
  18. package/dist/fk.service.d.ts +18 -0
  19. package/dist/fk.service.js +89 -0
  20. package/dist/login.controller.d.ts +14 -0
  21. package/dist/login.controller.js +211 -0
  22. package/dist/main.d.ts +3 -0
  23. package/dist/main.js +34 -0
  24. package/dist/templates/account-manage.d.ts +3 -0
  25. package/dist/templates/account-manage.js +27 -0
  26. package/dist/templates/add-account.d.ts +0 -0
  27. package/dist/templates/add-account.js +1 -0
  28. package/dist/templates/add-fk-login.d.ts +6 -0
  29. package/dist/templates/add-fk-login.js +68 -0
  30. package/dist/templates/code.d.ts +3 -0
  31. package/dist/templates/code.js +51 -0
  32. package/dist/templates/component.d.ts +9 -0
  33. package/dist/templates/component.js +34 -0
  34. package/dist/templates/download-task.d.ts +10 -0
  35. package/dist/templates/download-task.js +183 -0
  36. package/dist/templates/help.d.ts +7 -0
  37. package/dist/templates/help.js +88 -0
  38. package/dist/templates/login.service.d.ts +2 -0
  39. package/dist/templates/login.service.js +16 -0
  40. package/dist/templates/relogin.d.ts +5 -0
  41. package/dist/templates/relogin.js +25 -0
  42. package/dist/templates/task-manage.d.ts +6 -0
  43. package/dist/templates/task-manage.js +78 -0
  44. package/dist/templates/upload-task.d.ts +10 -0
  45. package/dist/templates/upload-task.js +157 -0
  46. package/dist/templates/upload.d.ts +15 -0
  47. package/dist/templates/upload.js +245 -0
  48. package/dist/templates/verify.d.ts +15 -0
  49. package/dist/templates/verify.js +75 -0
  50. package/dist/tests/test.d.ts +3 -0
  51. package/dist/tests/test.js +101 -0
  52. package/dist/urlSafeBase64Decode.d.ts +3 -0
  53. package/dist/urlSafeBase64Decode.js +37 -0
  54. package/package.json +1 -5
  55. package/pnpm-lock.yaml +1053 -0
  56. package/tsconfig.json +12 -0
@@ -0,0 +1,157 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.UploadTaskController = void 0;
19
+ const core_1 = require("@nger/core");
20
+ const http_1 = require("@nger/http");
21
+ const typeorm_1 = require("@nger/typeorm");
22
+ const entities_1 = require("../entities");
23
+ const form_data_1 = __importDefault(require("form-data"));
24
+ const axios_1 = __importDefault(require("axios"));
25
+ const fs_1 = require("fs");
26
+ const path_1 = require("path");
27
+ let UploadTaskController = class UploadTaskController {
28
+ db;
29
+ getUploadUrl(token, forceDirect = true) {
30
+ if (forceDirect) {
31
+ return `https://${token.url}/${token.visitType}/${token.app}/upload?cmd=${token.cmd}&token=${token.token}`;
32
+ }
33
+ else {
34
+ return `https://${token.url}/${token.visitType}/${token.app}/advance?cmd=${token.cmd}&token=${token.token}`;
35
+ }
36
+ }
37
+ constructor(db) {
38
+ this.db = db;
39
+ }
40
+ async uploadTask(filename) {
41
+ const task = await this.db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename } });
42
+ if (task) {
43
+ if (task.status === 0) {
44
+ return {
45
+ msg: 'downloading'
46
+ };
47
+ }
48
+ if (task.status === 2) {
49
+ return {
50
+ msg: 'uploaded'
51
+ };
52
+ }
53
+ const loginEntity = await this.db.manager.findOne(entities_1.FkLoginEntity, { where: { fkLoginId: task.loginId } });
54
+ const cookies = await this.db.manager.find(entities_1.FkLoginCookieEntity, { where: { fkLoginId: task.loginId } });
55
+ const cookie = cookies.map(cookie => `${cookie.key}=${cookie.value}`).join(';');
56
+ // 00 take token
57
+ const url = `https://i.vip.webportal.top/`;
58
+ const iVipWebPortal = await axios_1.default.get(url, {
59
+ headers: {
60
+ Cookie: cookie
61
+ }
62
+ }).then(res => res.data);
63
+ const items = iVipWebPortal.match(/<meta id='_TOKEN' value='(.*?)'\/>/);
64
+ let token = ``;
65
+ if (items && items.length === 2) {
66
+ token = items[1];
67
+ }
68
+ if (token.length > 0) {
69
+ // 01
70
+ const url = `https://smr00.vip.webportal.top/cn/api/manage/advanceUpload/genAccessKey?_v=1651232099799&_TOKEN=${token}`;
71
+ const accessKey = await axios_1.default.get(url).then(res => res.data);
72
+ if (accessKey.success) {
73
+ const accessTokenString = decode(accessKey.accessKey);
74
+ if (accessTokenString) {
75
+ const accessToken = JSON.parse(accessTokenString);
76
+ const ext = (0, path_1.extname)(filename);
77
+ const uploadUrl = this.getUploadUrl(accessToken, ['jpeg', 'jpg', 'png', 'svg'].includes(ext));
78
+ const fileStream = (0, fs_1.createReadStream)(task.path, {});
79
+ let length = 0;
80
+ let size = 0;
81
+ let index = 0;
82
+ fileStream.on('data', (chunk) => {
83
+ const totalChunks = (task.totalSize - length) / size;
84
+ length += chunk.length;
85
+ size = chunk.length;
86
+ index += 1;
87
+ const complete = length >= task.totalSize;
88
+ const data = new form_data_1.default();
89
+ data.append('ctrl', fileStream);
90
+ data.append('isFreeVer', 'false');
91
+ data.append('aid', loginEntity.aid);
92
+ data.append('folderId', loginEntity.uploadGroupId);
93
+ data.append('fileName', task.filename);
94
+ // chunk
95
+ data.append(`totalSize`, task.totalSize);
96
+ data.append(`fileMd5`, task.fileMd5);
97
+ data.append('index', index);
98
+ data.append('chunkSize', chunk.length);
99
+ data.append('totalChunks', totalChunks);
100
+ data.append(`complete`, complete);
101
+ const bssInfo = {
102
+ fromSite: true, siteId: 0, groupId: 0, fileSizeLimit: 1024
103
+ };
104
+ data.append('bssInfo', JSON.stringify(bssInfo));
105
+ const headers = data.getHeaders();
106
+ axios_1.default.post(uploadUrl, data, {
107
+ headers: {
108
+ ...headers,
109
+ Cookie: cookie
110
+ },
111
+ onUploadProgress: (upload) => {
112
+ debugger;
113
+ }
114
+ }).then(res => res.data);
115
+ });
116
+ }
117
+ }
118
+ }
119
+ return { msg: `error` };
120
+ }
121
+ }
122
+ upload() {
123
+ }
124
+ };
125
+ __decorate([
126
+ (0, http_1.Get)('upload-task'),
127
+ __param(0, (0, http_1.Query)('filename')),
128
+ __metadata("design:type", Function),
129
+ __metadata("design:paramtypes", [String]),
130
+ __metadata("design:returntype", Promise)
131
+ ], UploadTaskController.prototype, "uploadTask", null);
132
+ UploadTaskController = __decorate([
133
+ (0, core_1.Controller)(`@nger/fk-upload`),
134
+ __metadata("design:paramtypes", [typeorm_1.Db])
135
+ ], UploadTaskController);
136
+ exports.UploadTaskController = UploadTaskController;
137
+ function decode(base64Str) {
138
+ if (!base64Str)
139
+ return;
140
+ const t = base64Str.replace(/_/g, "/").replace(/-/g, "+");
141
+ const f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
142
+ let l = 0;
143
+ let p = 0;
144
+ let h = [];
145
+ do {
146
+ const o = f.indexOf(t.charAt(l++));
147
+ const u = f.indexOf(t.charAt(l++));
148
+ const a = f.indexOf(t.charAt(l++));
149
+ const c = f.indexOf(t.charAt(l++));
150
+ const s = o << 18 | u << 12 | a << 6 | c;
151
+ const e = s >> 16 & 255;
152
+ const r = s >> 8 & 255;
153
+ const n = 255 & s;
154
+ h[p++] = 64 === a ? String.fromCharCode(e) : 64 === c ? String.fromCharCode(e, r) : String.fromCharCode(e, r, n);
155
+ } while (l < t.length);
156
+ return h.join('');
157
+ }
@@ -0,0 +1,15 @@
1
+ import { Db } from '@nger/typeorm';
2
+ import { Context } from 'koa';
3
+ export declare class UploadController {
4
+ private db;
5
+ constructor(db: Db);
6
+ upload(): JSX.Element;
7
+ postUpload(file: any, loginId: string, ctx: Context): Promise<any>;
8
+ preview(src: string): JSX.Element;
9
+ downloadFile(cloudUrl: string): Promise<{
10
+ path: string;
11
+ filename: string;
12
+ }>;
13
+ uploadCloud(loginId: string, cloudUrl: string, ctx: Context): Promise<any>;
14
+ getUploadUrl(token: any): string;
15
+ }
@@ -0,0 +1,245 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.UploadController = void 0;
19
+ const core_1 = require("@nger/core");
20
+ const http_1 = require("@nger/http");
21
+ const react_1 = __importDefault(require("react"));
22
+ const form_data_1 = __importDefault(require("form-data"));
23
+ const axios_1 = __importDefault(require("axios"));
24
+ const typeorm_1 = require("@nger/typeorm");
25
+ const entities_1 = require("../entities");
26
+ const fs_1 = require("fs");
27
+ const path_1 = require("path");
28
+ const url_1 = require("url");
29
+ const fs_extra_1 = require("fs-extra");
30
+ const request_1 = __importDefault(require("request"));
31
+ const component_1 = require("./component");
32
+ let UploadController = class UploadController {
33
+ db;
34
+ constructor(db) {
35
+ this.db = db;
36
+ }
37
+ upload() {
38
+ return react_1.default.createElement(component_1.Nav, { active: -1 },
39
+ react_1.default.createElement("div", { className: "card" },
40
+ react_1.default.createElement("div", { className: "card-body" },
41
+ react_1.default.createElement("form", { action: "", method: "post", encType: 'multipart/form-data' },
42
+ react_1.default.createElement("div", null,
43
+ react_1.default.createElement("input", { className: 'form-control', type: "file", name: "file" })),
44
+ react_1.default.createElement("div", { style: { marginTop: "20px" } },
45
+ react_1.default.createElement("button", { className: "btn btn-primary", type: "submit" }, "submit"))))));
46
+ }
47
+ async postUpload(file, loginId, ctx) {
48
+ const loginEntity = await this.db.manager.findOne(entities_1.FkLoginEntity, { where: { fkLoginId: Number(loginId) } });
49
+ const cookies = await this.db.manager.find(entities_1.FkLoginCookieEntity, { where: { fkLoginId: Number(loginId) } });
50
+ const cookie = cookies.map(cookie => `${cookie.key}=${cookie.value}`).join(';');
51
+ // 00 take token
52
+ const url = `https://i.vip.webportal.top/`;
53
+ const iVipWebPortal = await axios_1.default.get(url, {
54
+ headers: {
55
+ Cookie: cookie
56
+ }
57
+ }).then(res => res.data);
58
+ const items = iVipWebPortal.match(/<meta id='_TOKEN' value='(.*?)'\/>/);
59
+ let token = ``;
60
+ if (items && items.length === 2) {
61
+ token = items[1];
62
+ }
63
+ if (token.length > 0) {
64
+ // 01
65
+ const url = `https://smr00.vip.webportal.top/cn/api/manage/advanceUpload/genAccessKey?_v=1651232099799&_TOKEN=${token}`;
66
+ const accessKey = await axios_1.default.get(url).then(res => res.data);
67
+ if (accessKey.success) {
68
+ const accessTokenString = decode(accessKey.accessKey);
69
+ if (accessTokenString) {
70
+ const accessToken = JSON.parse(accessTokenString);
71
+ const uploadUrl = this.getUploadUrl(accessToken);
72
+ const data = new form_data_1.default();
73
+ const fileStream = (0, fs_1.createReadStream)(file.path);
74
+ data.append('ctrl', fileStream);
75
+ data.append('isFreeVer', 'false');
76
+ data.append('aid', loginEntity.aid);
77
+ data.append('folderId', loginEntity.uploadGroupId);
78
+ data.append('fileName', file.name);
79
+ const bssInfo = {
80
+ fromSite: true, siteId: 0, groupId: 0, fileSizeLimit: 1024
81
+ };
82
+ data.append('bssInfo', JSON.stringify(bssInfo));
83
+ const headers = data.getHeaders();
84
+ const res = await axios_1.default.post(uploadUrl, data, {
85
+ headers: {
86
+ ...headers,
87
+ Cookie: cookie
88
+ }
89
+ }).then(res => res.data);
90
+ if (res.data) {
91
+ const data = res.data;
92
+ const src = data.downUrl;
93
+ ctx.redirect('/@nger/fk-upload/preview?src=https://' + src);
94
+ return;
95
+ }
96
+ if (res.msg) {
97
+ return res.msg;
98
+ }
99
+ }
100
+ }
101
+ }
102
+ return `error`;
103
+ }
104
+ preview(src) {
105
+ return react_1.default.createElement("div", null,
106
+ react_1.default.createElement("p", null, src),
107
+ react_1.default.createElement("img", { src: src }));
108
+ }
109
+ downloadFile(cloudUrl) {
110
+ return new Promise((resolve, reject) => {
111
+ const url = new url_1.URL(cloudUrl);
112
+ const list = url.pathname.split('/');
113
+ const filename = list.pop();
114
+ const req = request_1.default.get(cloudUrl);
115
+ (0, fs_extra_1.ensureDirSync)((0, path_1.join)(__dirname, 'dist'));
116
+ const file = (0, path_1.join)(__dirname, 'dist', filename);
117
+ const writeStream = (0, fs_1.createWriteStream)(file);
118
+ req.pipe(writeStream);
119
+ req.on('end', () => {
120
+ resolve({
121
+ path: file,
122
+ filename
123
+ });
124
+ });
125
+ });
126
+ }
127
+ async uploadCloud(loginId, cloudUrl, ctx) {
128
+ const loginEntity = await this.db.manager.findOne(entities_1.FkLoginEntity, { where: { fkLoginId: Number(loginId) } });
129
+ const cookies = await this.db.manager.find(entities_1.FkLoginCookieEntity, { where: { fkLoginId: Number(loginId) } });
130
+ const cookie = cookies.map(cookie => `${cookie.key}=${cookie.value}`).join(';');
131
+ // 00 take token
132
+ const url = `https://i.vip.webportal.top/`;
133
+ const iVipWebPortal = await axios_1.default.get(url, {
134
+ headers: {
135
+ Cookie: cookie
136
+ }
137
+ }).then(res => res.data);
138
+ const items = iVipWebPortal.match(/<meta id='_TOKEN' value='(.*?)'\/>/);
139
+ let token = ``;
140
+ if (items && items.length === 2) {
141
+ token = items[1];
142
+ }
143
+ if (token.length > 0) {
144
+ // 01
145
+ const url = `https://smr00.vip.webportal.top/cn/api/manage/advanceUpload/genAccessKey?_v=1651232099799&_TOKEN=${token}`;
146
+ const accessKey = await axios_1.default.get(url).then(res => res.data);
147
+ if (accessKey.success) {
148
+ const accessTokenString = decode(accessKey.accessKey);
149
+ if (accessTokenString) {
150
+ const accessToken = JSON.parse(accessTokenString);
151
+ const uploadUrl = this.getUploadUrl(accessToken);
152
+ const data = new form_data_1.default();
153
+ const file = await this.downloadFile(cloudUrl);
154
+ const fileStream = (0, fs_1.createReadStream)(file.path);
155
+ data.append('ctrl', fileStream);
156
+ data.append('isFreeVer', 'false');
157
+ data.append('aid', loginEntity.aid);
158
+ data.append('folderId', loginEntity.uploadGroupId);
159
+ data.append('fileName', file.filename);
160
+ const bssInfo = {
161
+ fromSite: true, siteId: 0, groupId: 0, fileSizeLimit: 1024
162
+ };
163
+ data.append('bssInfo', JSON.stringify(bssInfo));
164
+ const headers = data.getHeaders();
165
+ const res = await axios_1.default.post(uploadUrl, data, {
166
+ headers: {
167
+ ...headers,
168
+ Cookie: cookie
169
+ }
170
+ }).then(res => res.data);
171
+ if (res.data) {
172
+ const data = res.data;
173
+ const src = data.downUrl;
174
+ ctx.redirect('/@nger/fk-upload/preview?src=https://' + src);
175
+ return;
176
+ }
177
+ if (res.msg) {
178
+ return res.msg;
179
+ }
180
+ }
181
+ }
182
+ }
183
+ return `error`;
184
+ }
185
+ getUploadUrl(token) {
186
+ return `https://${token.url}/${token.visitType}/${token.app}/upload?cmd=${token.cmd}&token=${token.token}`;
187
+ }
188
+ };
189
+ __decorate([
190
+ (0, http_1.Get)('upload'),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", []),
193
+ __metadata("design:returntype", void 0)
194
+ ], UploadController.prototype, "upload", null);
195
+ __decorate([
196
+ (0, http_1.Post)('upload'),
197
+ __param(0, (0, http_1.File)('file')),
198
+ __param(1, (0, http_1.Query)('loginId')),
199
+ __param(2, (0, core_1.Inject)(http_1.CONTEXT)),
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", [Object, String, Object]),
202
+ __metadata("design:returntype", Promise)
203
+ ], UploadController.prototype, "postUpload", null);
204
+ __decorate([
205
+ (0, http_1.Get)('preview'),
206
+ __param(0, (0, http_1.Query)(`src`)),
207
+ __metadata("design:type", Function),
208
+ __metadata("design:paramtypes", [String]),
209
+ __metadata("design:returntype", void 0)
210
+ ], UploadController.prototype, "preview", null);
211
+ __decorate([
212
+ (0, http_1.Get)('upload_cloud'),
213
+ __param(0, (0, http_1.Query)('loginId')),
214
+ __param(1, (0, http_1.Query)('cloudUrl')),
215
+ __param(2, (0, core_1.Inject)(http_1.CONTEXT)),
216
+ __metadata("design:type", Function),
217
+ __metadata("design:paramtypes", [String, String, Object]),
218
+ __metadata("design:returntype", Promise)
219
+ ], UploadController.prototype, "uploadCloud", null);
220
+ UploadController = __decorate([
221
+ (0, core_1.Controller)('@nger/fk-upload'),
222
+ __metadata("design:paramtypes", [typeorm_1.Db])
223
+ ], UploadController);
224
+ exports.UploadController = UploadController;
225
+ function decode(base64Str) {
226
+ if (!base64Str)
227
+ return;
228
+ const t = base64Str.replace(/_/g, "/").replace(/-/g, "+");
229
+ const f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
230
+ let l = 0;
231
+ let p = 0;
232
+ let h = [];
233
+ do {
234
+ const o = f.indexOf(t.charAt(l++));
235
+ const u = f.indexOf(t.charAt(l++));
236
+ const a = f.indexOf(t.charAt(l++));
237
+ const c = f.indexOf(t.charAt(l++));
238
+ const s = o << 18 | u << 12 | a << 6 | c;
239
+ const e = s >> 16 & 255;
240
+ const r = s >> 8 & 255;
241
+ const n = 255 & s;
242
+ h[p++] = 64 === a ? String.fromCharCode(e) : 64 === c ? String.fromCharCode(e, r) : String.fromCharCode(e, r, n);
243
+ } while (l < t.length);
244
+ return h.join('');
245
+ }
@@ -0,0 +1,15 @@
1
+ export declare class VerifyController {
2
+ monitor(monitorId: string): Promise<any>;
3
+ get(body: VerifyBody): Promise<any>;
4
+ validate(body: ValidateBody): Promise<any>;
5
+ }
6
+ export interface VerifyBody {
7
+ appKey: number;
8
+ bss: number;
9
+ bssKey: string;
10
+ version: string;
11
+ }
12
+ export interface ValidateBody extends VerifyBody {
13
+ et: number;
14
+ vi: string;
15
+ }
@@ -0,0 +1,75 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.VerifyController = void 0;
19
+ const axios_1 = __importDefault(require("axios"));
20
+ const core_1 = require("@nger/core");
21
+ const http_1 = require("@nger/http");
22
+ let VerifyController = class VerifyController {
23
+ monitor(monitorId) {
24
+ return axios_1.default.get(`https://cv.webportal.top/verify/monitor?monitorId=${monitorId}`, {
25
+ headers: {
26
+ [`Content-Type`]: `text/plain`
27
+ }
28
+ }).then(res => {
29
+ return res.data;
30
+ });
31
+ }
32
+ get(body) {
33
+ return axios_1.default.post(`https://cv.webportal.top/verify/get`, body, {
34
+ headers: {
35
+ [`Content-Type`]: `text/plain`
36
+ }
37
+ }).then(res => {
38
+ return res.data;
39
+ });
40
+ }
41
+ validate(body) {
42
+ return axios_1.default.post(`https://cv.webportal.top/verify/validate`, body, {
43
+ headers: {
44
+ [`Content-Type`]: `text/plain`
45
+ }
46
+ }).then(res => {
47
+ return res.data;
48
+ });
49
+ }
50
+ };
51
+ __decorate([
52
+ (0, http_1.Get)('monitor'),
53
+ __param(0, (0, http_1.Query)('monitorId')),
54
+ __metadata("design:type", Function),
55
+ __metadata("design:paramtypes", [String]),
56
+ __metadata("design:returntype", void 0)
57
+ ], VerifyController.prototype, "monitor", null);
58
+ __decorate([
59
+ (0, http_1.Post)('get'),
60
+ __param(0, (0, http_1.Body)()),
61
+ __metadata("design:type", Function),
62
+ __metadata("design:paramtypes", [Object]),
63
+ __metadata("design:returntype", void 0)
64
+ ], VerifyController.prototype, "get", null);
65
+ __decorate([
66
+ (0, http_1.Post)('validate'),
67
+ __param(0, (0, http_1.Body)()),
68
+ __metadata("design:type", Function),
69
+ __metadata("design:paramtypes", [Object]),
70
+ __metadata("design:returntype", void 0)
71
+ ], VerifyController.prototype, "validate", null);
72
+ VerifyController = __decorate([
73
+ (0, core_1.Controller)(`verify`)
74
+ ], VerifyController);
75
+ exports.VerifyController = VerifyController;
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ export declare class AppModule {
3
+ }
@@ -0,0 +1,101 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AppModule = void 0;
13
+ require("reflect-metadata");
14
+ require('dotenv').config();
15
+ const core_1 = require("@nger/core");
16
+ const core_2 = require("@nger/core");
17
+ const fk_upload_module_1 = require("../fk-upload.module");
18
+ const typeorm_1 = require("@nger/typeorm");
19
+ const fk_service_1 = require("../fk.service");
20
+ const fk_v2_service_1 = require("../fk-v2.service");
21
+ const fs_1 = require("fs");
22
+ const path_1 = require("path");
23
+ let AppModule = class AppModule {
24
+ };
25
+ AppModule = __decorate([
26
+ (0, core_2.Module)({
27
+ providers: [{
28
+ provide: core_1.APP_ROOT,
29
+ useValue: process.cwd()
30
+ }],
31
+ imports: [
32
+ fk_upload_module_1.FkUploadModule,
33
+ typeorm_1.TypeormModule.forEnv()
34
+ ],
35
+ controllers: []
36
+ })
37
+ ], AppModule);
38
+ exports.AppModule = AppModule;
39
+ const axios_1 = __importDefault(require("axios"));
40
+ const form_data_1 = __importDefault(require("form-data"));
41
+ (0, core_1.platformCore)().bootstrap(AppModule).then(async (res) => {
42
+ const db = res.get(typeorm_1.Db);
43
+ const fk = res.get(fk_service_1.FkService);
44
+ const smr00 = await fk.getFkLogin(`smr00`);
45
+ if (smr00) {
46
+ const fkv2 = new fk_v2_service_1.FkV2Service(smr00, db, res);
47
+ await fkv2.init();
48
+ const token = await fkv2.genAccessKey();
49
+ const watermark = await fkv2.getWatermark();
50
+ const file = (0, fs_1.createReadStream)((0, path_1.join)(__dirname, './2.jpeg'));
51
+ if (token) {
52
+ const uploadUrl = fkv2.getUploadUrl(token);
53
+ const formdata = new form_data_1.default();
54
+ formdata.append('ctrl', file);
55
+ formdata.append('fileName', `2.jpeg`);
56
+ formdata.append('isFreeVer', `false`);
57
+ formdata.append('aid', fkv2.aid || 0);
58
+ formdata.append('folderId', fkv2.siteId || 0);
59
+ const bssInfo = {
60
+ // 是否上传到资源库
61
+ fromSite: true,
62
+ // 站点
63
+ siteId: fkv2.aid || 0,
64
+ // 文件夹
65
+ groupId: fkv2.siteId || 0,
66
+ // 文件大小限制
67
+ fileSizeLimit: fkv2.fileSizeLimit * 1024 * 1024
68
+ // waterMark
69
+ };
70
+ formdata.append('bssInfo', JSON.stringify(bssInfo));
71
+ const headers = formdata.getHeaders();
72
+ const res = await axios_1.default.put(uploadUrl, formdata, {
73
+ headers: {
74
+ ...headers,
75
+ 'Cookie': await fkv2.getCookies()
76
+ }
77
+ });
78
+ debugger;
79
+ // const req = Request.post(uploadUrl, {
80
+ // body: formdata,
81
+ // headers: {
82
+ // ...headers,
83
+ // 'Cookie': await fkv2.getCookies()
84
+ // }
85
+ // });
86
+ // req.on('data', (chunk) => {
87
+ // const str = chunk.toString('utf-8')
88
+ // debugger;
89
+ // })
90
+ // // const url = new URL(uploadUrl)
91
+ // formdata.submit(uploadUrl, (err, res) => {
92
+ // res.on('data', (buf: Buffer) => {
93
+ // const d = buf.toString('utf8');
94
+ // debugger;
95
+ // });
96
+ // });
97
+ // let token: any = JSON.parse(res)
98
+ // console.log({ data: res.data, watermark })
99
+ }
100
+ }
101
+ });
@@ -0,0 +1,3 @@
1
+ export declare class UrlSafeBase64 {
2
+ decode(base64Str: string): string | void;
3
+ }
@@ -0,0 +1,37 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.UrlSafeBase64 = void 0;
10
+ const core_1 = require("@nger/core");
11
+ let UrlSafeBase64 = class UrlSafeBase64 {
12
+ decode(base64Str) {
13
+ if (!base64Str)
14
+ return;
15
+ const t = base64Str.replace(/_/g, "/").replace(/-/g, "+");
16
+ const f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
17
+ let l = 0;
18
+ let p = 0;
19
+ let h = [];
20
+ do {
21
+ const o = f.indexOf(t.charAt(l++));
22
+ const u = f.indexOf(t.charAt(l++));
23
+ const a = f.indexOf(t.charAt(l++));
24
+ const c = f.indexOf(t.charAt(l++));
25
+ const s = o << 18 | u << 12 | a << 6 | c;
26
+ const e = s >> 16 & 255;
27
+ const r = s >> 8 & 255;
28
+ const n = 255 & s;
29
+ h[p++] = 64 === a ? String.fromCharCode(e) : 64 === c ? String.fromCharCode(e, r) : String.fromCharCode(e, r, n);
30
+ } while (l < t.length);
31
+ return h.join('');
32
+ }
33
+ };
34
+ UrlSafeBase64 = __decorate([
35
+ (0, core_1.Injectable)()
36
+ ], UrlSafeBase64);
37
+ exports.UrlSafeBase64 = UrlSafeBase64;