@resolveio/server-lib 11.0.3 → 11.1.0
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/managers/method.manager.d.ts +23 -3
- package/managers/method.manager.js +47 -137
- package/managers/method.manager.js.map +1 -1
- package/managers/monitor.manager.d.ts +4 -2
- package/managers/monitor.manager.js +44 -21
- package/managers/monitor.manager.js.map +1 -1
- package/methods/aws.js +160 -81
- package/methods/aws.js.map +1 -1
- package/methods/pdf.js +3 -4
- package/methods/pdf.js.map +1 -1
- package/package.json +7 -3
|
@@ -56,13 +56,37 @@ var MonitorManager = /** @class */ (function () {
|
|
|
56
56
|
this.setupIntervals();
|
|
57
57
|
this.setupEventLoop();
|
|
58
58
|
}
|
|
59
|
+
//Create function to get CPU information
|
|
60
|
+
MonitorManager.prototype.cpuAverage = function () {
|
|
61
|
+
//Initialise sum of idle and time of cores and fetch CPU info
|
|
62
|
+
var totalIdle = 0, totalTick = 0;
|
|
63
|
+
var cpus = os.cpus();
|
|
64
|
+
//Loop through CPU cores
|
|
65
|
+
for (var i = 0, len = cpus.length; i < len; i++) {
|
|
66
|
+
//Select CPU core
|
|
67
|
+
var cpu = cpus[i];
|
|
68
|
+
//Total up the time in the cores tick
|
|
69
|
+
for (var type in cpu.times) {
|
|
70
|
+
totalTick += cpu.times[type];
|
|
71
|
+
}
|
|
72
|
+
//Total up the idle time of the core
|
|
73
|
+
totalIdle += cpu.times.idle;
|
|
74
|
+
}
|
|
75
|
+
//Return the average Idle and Tick times
|
|
76
|
+
return { idle: totalIdle / cpus.length, total: totalTick / cpus.length };
|
|
77
|
+
};
|
|
59
78
|
MonitorManager.prototype.setupIntervals = function () {
|
|
60
79
|
var _this = this;
|
|
61
|
-
|
|
62
|
-
this._lastCPU = process.cpuUsage();
|
|
80
|
+
var lastCPU = this.cpuAverage();
|
|
63
81
|
setInterval(function () {
|
|
64
82
|
var now = new Date();
|
|
65
|
-
|
|
83
|
+
//Grab second Measure
|
|
84
|
+
var endMeasure = _this.cpuAverage();
|
|
85
|
+
//Calculate the difference in idle and total time between the measures
|
|
86
|
+
var idleDifference = endMeasure.idle - lastCPU.idle;
|
|
87
|
+
var totalDifference = endMeasure.total - lastCPU.total;
|
|
88
|
+
//Calculate the average percentage CPU usage
|
|
89
|
+
var percentageCPU = 1 - idleDifference / totalDifference;
|
|
66
90
|
if (_this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || _this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {
|
|
67
91
|
monitor_cpu_collection_1.MonitorCPUs.create({
|
|
68
92
|
_id: mongo_manager_1.objectIdHexString(),
|
|
@@ -71,8 +95,8 @@ var MonitorManager = /** @class */ (function () {
|
|
|
71
95
|
client: _this._serverConfig['CLIENT_NAME']
|
|
72
96
|
},
|
|
73
97
|
date: now,
|
|
74
|
-
app:
|
|
75
|
-
system:
|
|
98
|
+
app: percentageCPU,
|
|
99
|
+
system: os.loadavg()[0]
|
|
76
100
|
});
|
|
77
101
|
}
|
|
78
102
|
else {
|
|
@@ -82,12 +106,12 @@ var MonitorManager = /** @class */ (function () {
|
|
|
82
106
|
client: _this._serverConfig['CLIENT_NAME']
|
|
83
107
|
},
|
|
84
108
|
date: now,
|
|
85
|
-
app:
|
|
86
|
-
system:
|
|
109
|
+
app: percentageCPU,
|
|
110
|
+
system: os.loadavg()[0],
|
|
87
111
|
type: 'cpu'
|
|
88
112
|
});
|
|
89
113
|
}
|
|
90
|
-
|
|
114
|
+
lastCPU = endMeasure;
|
|
91
115
|
var memUsage = process.memoryUsage();
|
|
92
116
|
if (_this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || _this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {
|
|
93
117
|
monitor_memory_collection_1.MonitorMemorys.create({
|
|
@@ -97,12 +121,12 @@ var MonitorManager = /** @class */ (function () {
|
|
|
97
121
|
client: _this._serverConfig['CLIENT_NAME']
|
|
98
122
|
},
|
|
99
123
|
date: now,
|
|
100
|
-
physical_total: memUsage.heapTotal
|
|
101
|
-
physical_used: memUsage.heapUsed
|
|
102
|
-
physical_free: os.freemem()
|
|
103
|
-
virtual: memUsage.rss
|
|
104
|
-
private: memUsage.external
|
|
105
|
-
physical: os.totalmem()
|
|
124
|
+
physical_total: memUsage.heapTotal,
|
|
125
|
+
physical_used: memUsage.heapUsed,
|
|
126
|
+
physical_free: os.freemem(),
|
|
127
|
+
virtual: memUsage.rss,
|
|
128
|
+
private: memUsage.external,
|
|
129
|
+
physical: os.totalmem()
|
|
106
130
|
});
|
|
107
131
|
}
|
|
108
132
|
else {
|
|
@@ -112,16 +136,15 @@ var MonitorManager = /** @class */ (function () {
|
|
|
112
136
|
client: _this._serverConfig['CLIENT_NAME']
|
|
113
137
|
},
|
|
114
138
|
date: now,
|
|
115
|
-
physical_total: memUsage.heapTotal
|
|
116
|
-
physical_used: memUsage.heapUsed
|
|
117
|
-
physical_free: os.freemem()
|
|
118
|
-
virtual: memUsage.rss
|
|
119
|
-
private: memUsage.external
|
|
120
|
-
physical: os.totalmem()
|
|
139
|
+
physical_total: memUsage.heapTotal,
|
|
140
|
+
physical_used: memUsage.heapUsed,
|
|
141
|
+
physical_free: os.freemem(),
|
|
142
|
+
virtual: memUsage.rss,
|
|
143
|
+
private: memUsage.external,
|
|
144
|
+
physical: os.totalmem(),
|
|
121
145
|
type: 'memory'
|
|
122
146
|
});
|
|
123
147
|
}
|
|
124
|
-
_this._lastTime = new Date();
|
|
125
148
|
}, 3000);
|
|
126
149
|
};
|
|
127
150
|
MonitorManager.prototype.addMongoTracker = function (data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import ResolveIOMainServer from '../server-app';\nimport * as bent from 'bent';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../index';\nimport { deepCopy } from '../util/common';\nimport { objectIdHexString } from './mongo.manager';\nimport * as moment from 'moment';\nconst os = require('os');\n\nexport class MonitorManager {\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _serverConfig;\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tprivate _lastTime;\n\tprivate _lastCPU: {user: number, system: number};\n\n\tconstructor(mainServer, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\tsetupIntervals() {\n\t\tthis._lastTime = new Date();\n\t\tthis._lastCPU = process.cpuUsage();\n\t\t\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\n\t\t\tconst cpuUsage = process.cpuUsage(this._lastCPU);\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: (cpuUsage.user - this._lastCPU.user) / (1000 * (now.getTime() - this._lastTime.getTime())),\n\t\t\t\t\tsystem: (cpuUsage.system - this._lastCPU.system) / (1000 * (now.getTime() - this._lastTime.getTime()))\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: (cpuUsage.user - this._lastCPU.user) / (1000 * (now.getTime() - this._lastTime.getTime())),\n\t\t\t\t\tsystem: (cpuUsage.system - this._lastCPU.system) / (1000 * (now.getTime() - this._lastTime.getTime())),\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis._lastCPU = cpuUsage;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal / 1024 / 1024,\n\t\t\t\t\tphysical_used: memUsage.heapUsed / 1024 / 1024,\n\t\t\t\t\tphysical_free: os.freemem() / 1024 / 1024,\n\t\t\t\t\tvirtual: memUsage.rss / 1024 / 1024,\n\t\t\t\t\tprivate: memUsage.external / 1024 / 1024,\n\t\t\t\t\tphysical: os.totalmem() / 1024 / 1024\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal / 1024 / 1024,\n\t\t\t\t\tphysical_used: memUsage.heapUsed / 1024 / 1024,\n\t\t\t\t\tphysical_free: os.freemem() / 1024 / 1024,\n\t\t\t\t\tvirtual: memUsage.rss / 1024 / 1024,\n\t\t\t\t\tprivate: memUsage.external / 1024 / 1024,\n\t\t\t\t\tphysical: os.totalmem() / 1024 / 1024,\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._lastTime = new Date();\n\t\t}, 3000);\n\t}\n\n\t\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\t\n\t}\n\n\tsetupEventLoop() {\n\t\tsetTimeout(async () => {\n\t\t\tif (this._monitorData.length) {\n\t\t\t\tconst post = bent('https://backend.resolveio.com', 'POST', 'json', 200);\n\n\t\t\t\tlet monitorData = deepCopy(this._monitorData);\n\t\t\t\tthis._monitorData = [];\n\n\t\t\t\tlet size = JSON.stringify(monitorData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\tif (size < 45000000) { // 50 MB size limit\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst response = await post('/api/monitor', monitorData);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\tif (e.statusCode !== 500 && e.statusCode !== 501 && e.statusCode !== 502 && e.statusCode !== 503 && e.statusCode !== 504) {\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'RESOLVEIO MONITOR HTTP - Error Detected', JSON.stringify(e, null, 2));\n\n\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet tmpData = [];\n\t\t\t\t\tfor (let i = 0; i < monitorData.length; i++) {\n\t\t\t\t\t\ttmpData.push(monitorData[i]);\n\t\t\t\t\t\tsize = JSON.stringify(tmpData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\t\t\tif (size > 45000000) {\n\t\t\t\t\t\t\ttmpData.pop();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await post('/api/monitor', tmpData);\n\n\t\t\t\t\t\t\t\ttmpData = [monitorData[i]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\t\tif (e.statusCode !== 500 && e.statusCode !== 501 && e.statusCode !== 502 && e.statusCode !== 503 && e.statusCode !== 504) {\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'RESOLVEIO MONITOR HTTP - Error Detected', JSON.stringify(e, null, 2));\n\t\t\n\t\t\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tmpData.length) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst response = await post('/api/monitor', tmpData);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tif (e.statusCode !== 500 && e.statusCode !== 501 && e.statusCode !== 502 && e.statusCode !== 503 && e.statusCode !== 504) {\n\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'RESOLVEIO MONITOR HTTP - Error Detected', JSON.stringify(e, null, 2));\n\t\n\t\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setupEventLoop();\n\t\t}, 60000);\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date, \n\tmethod: string,\n\tcollection: string,\n\tduration: number,\n\tquery: string\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _lastTime: Date = null;\n\tprivate _maxDiff: number = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\n\tconstructor(functionType: MonitorFunctionType, functionName: string, user: string, data: any) {\n\t\tthis._lastTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis._data = data;\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = moment().diff(moment(this._lastTime), 'milliseconds');\n\t\t\tif (diff > this._maxDiff) {\n\t\t\t\tthis._maxDiff = diff;\n\t\t\t}\n\n\t\t\tthis._lastTime = new Date();\n\t\t}, 1);\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tif (this._maxDiff >= 1000) {\n\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getMainServer().getServerConfig()['CLIENT_NAME'] + ' - Slow ' + this._functionType + ' Detected', '', (this._user ? 'User: ' + this._user + '\\n' : '') + this._functionType + ': ' + this._functionName + '\\n' + 'During this function the event loop did not run for ' + this._maxDiff + ' ms (' + this._maxDiff / 1000 + ' sec)' + (this._data ? '\\n\\nData: ' + JSON.stringify(this._data, null, 2) : ''));\n\t\t}\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import ResolveIOMainServer from '../server-app';\nimport * as bent from 'bent';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../index';\nimport { deepCopy } from '../util/common';\nimport { objectIdHexString } from './mongo.manager';\nimport * as moment from 'moment';\nconst os = require('os');\n\nexport class MonitorManager {\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _serverConfig;\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tconstructor(mainServer, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\t//Create function to get CPU information\n\tcpuAverage() {\n\t\t//Initialise sum of idle and time of cores and fetch CPU info\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\t\n\t\t//Loop through CPU cores\n\t\tfor(var i = 0, len = cpus.length; i < len; i++) {\n\t\t\t//Select CPU core\n\t\t\tvar cpu = cpus[i];\n\t\t\n\t\t\t//Total up the time in the cores tick\n\t\t\tfor(let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\n\t\t\t//Total up the idle time of the core\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\t\n\t\t//Return the average Idle and Tick times\n\t\treturn {idle: totalIdle / cpus.length, total: totalTick / cpus.length};\n\t}\n\n\tsetupIntervals() {\n\t\tlet lastCPU = this.cpuAverage();\n\t\t\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\n\t\t\t//Grab second Measure\n\t\t\tvar endMeasure = this.cpuAverage(); \n\n\t\t\t//Calculate the difference in idle and total time between the measures\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\n\t\t\t//Calculate the average percentage CPU usage\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\t\t\t\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0],\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\t\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\t\n\t}\n\n\tsetupEventLoop() {\n\t\tsetTimeout(async () => {\n\t\t\tif (this._monitorData.length) {\n\t\t\t\tconst post = bent('https://backend.resolveio.com', 'POST', 'json', 200);\n\n\t\t\t\tlet monitorData = deepCopy(this._monitorData);\n\t\t\t\tthis._monitorData = [];\n\n\t\t\t\tlet size = JSON.stringify(monitorData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\tif (size < 45000000) { // 50 MB size limit\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst response = await post('/api/monitor', monitorData);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\tif (e.statusCode !== 500 && e.statusCode !== 501 && e.statusCode !== 502 && e.statusCode !== 503 && e.statusCode !== 504) {\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'RESOLVEIO MONITOR HTTP - Error Detected', JSON.stringify(e, null, 2));\n\n\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet tmpData = [];\n\t\t\t\t\tfor (let i = 0; i < monitorData.length; i++) {\n\t\t\t\t\t\ttmpData.push(monitorData[i]);\n\t\t\t\t\t\tsize = JSON.stringify(tmpData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\t\t\tif (size > 45000000) {\n\t\t\t\t\t\t\ttmpData.pop();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await post('/api/monitor', tmpData);\n\n\t\t\t\t\t\t\t\ttmpData = [monitorData[i]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\t\tif (e.statusCode !== 500 && e.statusCode !== 501 && e.statusCode !== 502 && e.statusCode !== 503 && e.statusCode !== 504) {\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'RESOLVEIO MONITOR HTTP - Error Detected', JSON.stringify(e, null, 2));\n\t\t\n\t\t\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tmpData.length) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst response = await post('/api/monitor', tmpData);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tif (e.statusCode !== 500 && e.statusCode !== 501 && e.statusCode !== 502 && e.statusCode !== 503 && e.statusCode !== 504) {\n\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'RESOLVEIO MONITOR HTTP - Error Detected', JSON.stringify(e, null, 2));\n\t\n\t\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setupEventLoop();\n\t\t}, 60000);\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date, \n\tmethod: string,\n\tcollection: string,\n\tduration: number,\n\tquery: string\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _lastTime: Date = null;\n\tprivate _maxDiff: number = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\n\tconstructor(functionType: MonitorFunctionType, functionName: string, user: string, data: any) {\n\t\tthis._lastTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis._data = data;\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = moment().diff(moment(this._lastTime), 'milliseconds');\n\t\t\tif (diff > this._maxDiff) {\n\t\t\t\tthis._maxDiff = diff;\n\t\t\t}\n\n\t\t\tthis._lastTime = new Date();\n\t\t}, 1);\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tif (this._maxDiff >= 1000) {\n\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getMainServer().getServerConfig()['CLIENT_NAME'] + ' - Slow ' + this._functionType + ' Detected', '', (this._user ? 'User: ' + this._user + '\\n' : '') + this._functionType + ': ' + this._functionName + '\\n' + 'During this function the event loop did not run for ' + this._maxDiff + ' ms (' + this._maxDiff / 1000 + ' sec)' + (this._data ? '\\n\\nData: ' + JSON.stringify(this._data, null, 2) : ''));\n\t\t}\n\t}\n}"]}
|
package/methods/aws.js
CHANGED
|
@@ -41,6 +41,8 @@ var file_collection_1 = require("../collections/file.collection");
|
|
|
41
41
|
var simpl_schema_1 = require("simpl-schema");
|
|
42
42
|
var index_1 = require("../index");
|
|
43
43
|
var mongo_manager_1 = require("../managers/mongo.manager");
|
|
44
|
+
var client_s3_1 = require("@aws-sdk/client-s3");
|
|
45
|
+
var s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
44
46
|
var request = require('request').defaults({ encoding: null });
|
|
45
47
|
var fs = require('fs');
|
|
46
48
|
var pdfCnt = 1000000;
|
|
@@ -69,26 +71,33 @@ function loadAWSMethods(methodManager) {
|
|
|
69
71
|
}),
|
|
70
72
|
function: function (fileName, fileData, fileSize, fileOrder, fileType, compress) {
|
|
71
73
|
var _this = this;
|
|
72
|
-
var that = this;
|
|
73
74
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
74
|
-
var key_1,
|
|
75
|
+
var key_1, aws;
|
|
75
76
|
return __generator(this, function (_a) {
|
|
76
77
|
if (fileName) {
|
|
77
78
|
key_1 = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
aws = this.getAWS();
|
|
80
|
+
aws.s3.putObject({
|
|
81
|
+
Bucket: this.serverConfig.AWSBUCKET,
|
|
82
|
+
Key: key_1,
|
|
83
|
+
Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'),
|
|
84
|
+
ACL: 'private',
|
|
85
|
+
ContentType: fileData.split(',')[0].split(':')[1].split(';')[0],
|
|
86
|
+
ContentDisposition: 'inline'
|
|
87
|
+
}).then(function (res) {
|
|
88
|
+
if (res) {
|
|
84
89
|
file_collection_1.Files.create({
|
|
85
90
|
_id: mongo_manager_1.objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key_1, order: fileOrder, type: fileType
|
|
86
91
|
}).then(function (resFile) {
|
|
87
92
|
resolve(resFile);
|
|
88
93
|
}, function (errFile) { return reject(errFile); });
|
|
89
94
|
}
|
|
95
|
+
else {
|
|
96
|
+
resolve(null);
|
|
97
|
+
}
|
|
98
|
+
}, function (err) {
|
|
99
|
+
reject(err);
|
|
90
100
|
});
|
|
91
|
-
// }
|
|
92
101
|
}
|
|
93
102
|
return [2 /*return*/];
|
|
94
103
|
});
|
|
@@ -118,18 +127,27 @@ function loadAWSMethods(methodManager) {
|
|
|
118
127
|
return new Promise(function (resolve, reject) {
|
|
119
128
|
if (fileName) {
|
|
120
129
|
var key_2 = 'uploads/' + Date.now() + '-' + fileName;
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
130
|
+
var aws = _this.getAWS();
|
|
131
|
+
aws.s3.putObject({
|
|
132
|
+
Bucket: _this.serverConfig.AWSBUCKET,
|
|
133
|
+
Key: key_2,
|
|
134
|
+
Body: Buffer.from(fileData),
|
|
135
|
+
ACL: 'private',
|
|
136
|
+
ContentType: 'application/gzip',
|
|
137
|
+
ContentDisposition: 'inline'
|
|
138
|
+
}).then(function (res) {
|
|
139
|
+
if (res) {
|
|
127
140
|
file_collection_1.Files.create({
|
|
128
141
|
_id: mongo_manager_1.objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key_2, order: fileOrder, type: fileType
|
|
129
142
|
}).then(function (resFile) {
|
|
130
143
|
resolve(resFile);
|
|
131
144
|
}, function (errFile) { return reject(errFile); });
|
|
132
145
|
}
|
|
146
|
+
else {
|
|
147
|
+
resolve(null);
|
|
148
|
+
}
|
|
149
|
+
}, function (err) {
|
|
150
|
+
reject(err);
|
|
133
151
|
});
|
|
134
152
|
}
|
|
135
153
|
});
|
|
@@ -158,18 +176,27 @@ function loadAWSMethods(methodManager) {
|
|
|
158
176
|
return new Promise(function (resolve, reject) {
|
|
159
177
|
if (fileName) {
|
|
160
178
|
var key_3 = 'uploads/' + Date.now() + '-' + fileName;
|
|
161
|
-
var
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
179
|
+
var aws = _this.getAWS();
|
|
180
|
+
aws.s3.putObject({
|
|
181
|
+
Bucket: _this.serverConfig.AWSBUCKET,
|
|
182
|
+
Key: key_3,
|
|
183
|
+
Body: fileData,
|
|
184
|
+
ACL: 'private',
|
|
185
|
+
ContentType: 'application/gzip',
|
|
186
|
+
ContentDisposition: 'inline'
|
|
187
|
+
}).then(function (res) {
|
|
188
|
+
if (res) {
|
|
167
189
|
file_collection_1.Files.create({
|
|
168
190
|
_id: mongo_manager_1.objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key_3, order: fileOrder, type: fileType
|
|
169
191
|
}).then(function (resFile) {
|
|
170
192
|
resolve(resFile);
|
|
171
193
|
}, function (errFile) { return reject(errFile); });
|
|
172
194
|
}
|
|
195
|
+
else {
|
|
196
|
+
resolve(null);
|
|
197
|
+
}
|
|
198
|
+
}, function (err) {
|
|
199
|
+
reject(err);
|
|
173
200
|
});
|
|
174
201
|
}
|
|
175
202
|
});
|
|
@@ -195,18 +222,27 @@ function loadAWSMethods(methodManager) {
|
|
|
195
222
|
return new Promise(function (resolve, reject) {
|
|
196
223
|
if (fileName) {
|
|
197
224
|
var key_4 = 'uploads/' + Date.now() + '-' + fileName;
|
|
198
|
-
var
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
225
|
+
var aws = _this.getAWS();
|
|
226
|
+
aws.s3.putObject({
|
|
227
|
+
Bucket: _this.serverConfig.AWSBUCKET,
|
|
228
|
+
Key: key_4,
|
|
229
|
+
Body: fs.createReadStream(fileData),
|
|
230
|
+
ACL: 'private',
|
|
231
|
+
ContentType: 'application/gzip',
|
|
232
|
+
ContentDisposition: 'inline'
|
|
233
|
+
}).then(function (res) {
|
|
234
|
+
if (res) {
|
|
204
235
|
file_collection_1.Files.create({
|
|
205
236
|
_id: mongo_manager_1.objectIdHexString(), __v: 0, name: fileName, size: 1, key: key_4, order: fileOrder, type: fileType
|
|
206
237
|
}).then(function (resFile) {
|
|
207
238
|
resolve(resFile);
|
|
208
239
|
}, function (errFile) { return reject(errFile); });
|
|
209
240
|
}
|
|
241
|
+
else {
|
|
242
|
+
resolve(null);
|
|
243
|
+
}
|
|
244
|
+
}, function (err) {
|
|
245
|
+
reject(err);
|
|
210
246
|
});
|
|
211
247
|
}
|
|
212
248
|
});
|
|
@@ -234,12 +270,12 @@ function loadAWSMethods(methodManager) {
|
|
|
234
270
|
deleteCnt = files.length;
|
|
235
271
|
files.forEach(function (file) {
|
|
236
272
|
file_collection_1.Files.deleteOne({ _id: file._id });
|
|
237
|
-
var
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
273
|
+
var aws = _this.getAWS();
|
|
274
|
+
aws.s3.deleteObject({
|
|
275
|
+
Bucket: _this.serverConfig.AWSBUCKET,
|
|
276
|
+
Key: file.key
|
|
277
|
+
}).then(function (res) {
|
|
278
|
+
if (res) {
|
|
243
279
|
deleteCnt--;
|
|
244
280
|
if (!deleteCnt) {
|
|
245
281
|
resolve(files.length);
|
|
@@ -262,7 +298,7 @@ function loadAWSMethods(methodManager) {
|
|
|
262
298
|
function: function (key) {
|
|
263
299
|
var _this = this;
|
|
264
300
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
265
|
-
var file,
|
|
301
|
+
var file, aws;
|
|
266
302
|
return __generator(this, function (_a) {
|
|
267
303
|
switch (_a.label) {
|
|
268
304
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ key: key })];
|
|
@@ -271,9 +307,14 @@ function loadAWSMethods(methodManager) {
|
|
|
271
307
|
if (file) {
|
|
272
308
|
file_collection_1.Files.deleteOne({ _id: file._id });
|
|
273
309
|
}
|
|
274
|
-
|
|
275
|
-
|
|
310
|
+
aws = this.getAWS();
|
|
311
|
+
aws.s3.deleteObject({
|
|
312
|
+
Bucket: this.serverConfig['AWSBUCKET'],
|
|
313
|
+
Key: key
|
|
314
|
+
}).then(function (res) {
|
|
276
315
|
resolve(res);
|
|
316
|
+
}, function (err) {
|
|
317
|
+
reject(err);
|
|
277
318
|
});
|
|
278
319
|
return [2 /*return*/];
|
|
279
320
|
}
|
|
@@ -290,7 +331,7 @@ function loadAWSMethods(methodManager) {
|
|
|
290
331
|
function: function (id_file) {
|
|
291
332
|
var _this = this;
|
|
292
333
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
293
|
-
var file,
|
|
334
|
+
var file, aws;
|
|
294
335
|
return __generator(this, function (_a) {
|
|
295
336
|
switch (_a.label) {
|
|
296
337
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ _id: id_file })];
|
|
@@ -299,14 +340,14 @@ function loadAWSMethods(methodManager) {
|
|
|
299
340
|
if (!file) {
|
|
300
341
|
reject('Could not find file');
|
|
301
342
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
343
|
+
aws = this.getAWS();
|
|
344
|
+
aws.s3.deleteObject({
|
|
345
|
+
Bucket: this.serverConfig['AWSBUCKET'],
|
|
346
|
+
Key: file.key
|
|
347
|
+
}).then(function (res) {
|
|
348
|
+
resolve(res);
|
|
349
|
+
}, function (err) {
|
|
350
|
+
reject(err);
|
|
310
351
|
});
|
|
311
352
|
file_collection_1.Files.deleteOne({ _id: file._id });
|
|
312
353
|
return [2 /*return*/];
|
|
@@ -330,20 +371,34 @@ function loadAWSMethods(methodManager) {
|
|
|
330
371
|
function: function (ids, expires) {
|
|
331
372
|
var _this = this;
|
|
332
373
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
333
|
-
var res, fileArray, files;
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
switch (_a.label) {
|
|
374
|
+
var res, fileArray, files, i, file, aws, getCommand, _a, _b;
|
|
375
|
+
return __generator(this, function (_c) {
|
|
376
|
+
switch (_c.label) {
|
|
337
377
|
case 0:
|
|
338
378
|
res = [];
|
|
339
379
|
fileArray = [];
|
|
340
380
|
return [4 /*yield*/, file_collection_1.Files.find({ _id: { $in: ids } })];
|
|
341
381
|
case 1:
|
|
342
|
-
files =
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
382
|
+
files = _c.sent();
|
|
383
|
+
i = 0;
|
|
384
|
+
_c.label = 2;
|
|
385
|
+
case 2:
|
|
386
|
+
if (!(i < files.length)) return [3 /*break*/, 5];
|
|
387
|
+
file = files[i];
|
|
388
|
+
aws = this.getAWS();
|
|
389
|
+
getCommand = new client_s3_1.GetObjectCommand({
|
|
390
|
+
Bucket: this.serverConfig.AWSBUCKET,
|
|
391
|
+
Key: file.key
|
|
346
392
|
});
|
|
393
|
+
_b = (_a = res).push;
|
|
394
|
+
return [4 /*yield*/, s3_request_presigner_1.getSignedUrl(aws.s3, getCommand, { expiresIn: expires })];
|
|
395
|
+
case 3:
|
|
396
|
+
_b.apply(_a, [_c.sent()]);
|
|
397
|
+
_c.label = 4;
|
|
398
|
+
case 4:
|
|
399
|
+
i++;
|
|
400
|
+
return [3 /*break*/, 2];
|
|
401
|
+
case 5:
|
|
347
402
|
resolve({ res: res, fileArray: files.map(function (a) { return a.name; }) });
|
|
348
403
|
return [2 /*return*/];
|
|
349
404
|
}
|
|
@@ -363,20 +418,21 @@ function loadAWSMethods(methodManager) {
|
|
|
363
418
|
function: function (id_file, expires) {
|
|
364
419
|
var _this = this;
|
|
365
420
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
366
|
-
var file,
|
|
421
|
+
var file, aws, getCommand;
|
|
367
422
|
return __generator(this, function (_a) {
|
|
368
423
|
switch (_a.label) {
|
|
369
424
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ _id: id_file })];
|
|
370
425
|
case 1:
|
|
371
426
|
file = _a.sent();
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
427
|
+
aws = this.getAWS();
|
|
428
|
+
getCommand = new client_s3_1.GetObjectCommand({
|
|
429
|
+
Bucket: this.serverConfig.AWSBUCKET,
|
|
430
|
+
Key: file.key
|
|
431
|
+
});
|
|
432
|
+
s3_request_presigner_1.getSignedUrl(aws.s3, getCommand, { expiresIn: expires }).then(function (res) {
|
|
433
|
+
resolve(res);
|
|
434
|
+
}, function (err) {
|
|
435
|
+
reject(err);
|
|
380
436
|
});
|
|
381
437
|
return [2 /*return*/];
|
|
382
438
|
}
|
|
@@ -396,14 +452,15 @@ function loadAWSMethods(methodManager) {
|
|
|
396
452
|
function: function (key, expires) {
|
|
397
453
|
var _this = this;
|
|
398
454
|
return new Promise(function (resolve, reject) {
|
|
399
|
-
var
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
455
|
+
var aws = _this.getAWS();
|
|
456
|
+
var getCommand = new client_s3_1.GetObjectCommand({
|
|
457
|
+
Bucket: _this.serverConfig.AWSBUCKET,
|
|
458
|
+
Key: key
|
|
459
|
+
});
|
|
460
|
+
s3_request_presigner_1.getSignedUrl(aws.s3, getCommand, { expiresIn: expires }).then(function (res) {
|
|
461
|
+
resolve(res);
|
|
462
|
+
}, function (err) {
|
|
463
|
+
reject(err);
|
|
407
464
|
});
|
|
408
465
|
});
|
|
409
466
|
}
|
|
@@ -422,14 +479,36 @@ function loadAWSMethods(methodManager) {
|
|
|
422
479
|
}),
|
|
423
480
|
function: function (keys, expires) {
|
|
424
481
|
var _this = this;
|
|
425
|
-
return new Promise(function (resolve, reject) {
|
|
426
|
-
var res
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
482
|
+
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
483
|
+
var res, i, key, aws, getCommand, _a, _b;
|
|
484
|
+
return __generator(this, function (_c) {
|
|
485
|
+
switch (_c.label) {
|
|
486
|
+
case 0:
|
|
487
|
+
res = [];
|
|
488
|
+
i = 0;
|
|
489
|
+
_c.label = 1;
|
|
490
|
+
case 1:
|
|
491
|
+
if (!(i < keys.length)) return [3 /*break*/, 4];
|
|
492
|
+
key = keys[i];
|
|
493
|
+
aws = this.getAWS();
|
|
494
|
+
getCommand = new client_s3_1.GetObjectCommand({
|
|
495
|
+
Bucket: this.serverConfig.AWSBUCKET,
|
|
496
|
+
Key: key
|
|
497
|
+
});
|
|
498
|
+
_b = (_a = res).push;
|
|
499
|
+
return [4 /*yield*/, s3_request_presigner_1.getSignedUrl(aws.s3, getCommand, { expiresIn: expires })];
|
|
500
|
+
case 2:
|
|
501
|
+
_b.apply(_a, [_c.sent()]);
|
|
502
|
+
_c.label = 3;
|
|
503
|
+
case 3:
|
|
504
|
+
i++;
|
|
505
|
+
return [3 /*break*/, 1];
|
|
506
|
+
case 4:
|
|
507
|
+
resolve(res);
|
|
508
|
+
return [2 /*return*/];
|
|
509
|
+
}
|
|
430
510
|
});
|
|
431
|
-
|
|
432
|
-
});
|
|
511
|
+
}); });
|
|
433
512
|
}
|
|
434
513
|
},
|
|
435
514
|
getDataURIfromURL: {
|
|
@@ -466,9 +545,9 @@ function loadAWSMethods(methodManager) {
|
|
|
466
545
|
}),
|
|
467
546
|
function: function (id_file, email, additional_message) {
|
|
468
547
|
var _this = this;
|
|
469
|
-
var that = this;
|
|
470
548
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
471
549
|
var file;
|
|
550
|
+
var _this = this;
|
|
472
551
|
return __generator(this, function (_a) {
|
|
473
552
|
switch (_a.label) {
|
|
474
553
|
case 0: return [4 /*yield*/, file_collection_1.Files.findById(id_file)];
|
|
@@ -478,18 +557,18 @@ function loadAWSMethods(methodManager) {
|
|
|
478
557
|
reject('Could not find file');
|
|
479
558
|
return [2 /*return*/];
|
|
480
559
|
}
|
|
481
|
-
|
|
560
|
+
this.callMethodInternal('getSignedUrl', file.key, 259200, function (errPDF, resPDF) {
|
|
482
561
|
if (resPDF) {
|
|
483
562
|
if (file.size < 5000000) {
|
|
484
563
|
var emailMessage = 'Attached is the file requested for email.\n' + (additional_message !== '' ? '\nAdditional Mesasge:\n' + additional_message + '\n' : '');
|
|
485
|
-
|
|
564
|
+
_this.sendEmail(email, index_1.ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{
|
|
486
565
|
filename: file.name,
|
|
487
566
|
path: resPDF
|
|
488
567
|
}]);
|
|
489
568
|
}
|
|
490
569
|
else {
|
|
491
570
|
var emailMessage = 'Please click the link to the requested file.\n' + (additional_message !== '' ? '\nAdditional Mesasge:\n' + additional_message + '\n' : '');
|
|
492
|
-
|
|
571
|
+
_this.sendEmail(email, index_1.ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '');
|
|
493
572
|
}
|
|
494
573
|
resolve(true);
|
|
495
574
|
}
|