@fdm-monster/server 2.0.8 → 2.0.10
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/.yarn/install-state.gz +0 -0
- package/README.md +1 -1
- package/RELEASE_NOTES.MD +22 -0
- package/dist/container.js +0 -6
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +0 -3
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/file-storage.controller.js +38 -56
- package/dist/controllers/file-storage.controller.js.map +1 -1
- package/dist/controllers/printer-files.controller.js +8 -75
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/slicer-compat.controller.js +3 -10
- package/dist/controllers/slicer-compat.controller.js.map +1 -1
- package/dist/controllers/validation/printer-files-controller.validation.js +7 -0
- package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
- package/dist/exceptions/runtime.exceptions.js +11 -0
- package/dist/exceptions/runtime.exceptions.js.map +1 -1
- package/dist/middleware/exception.filter.js +7 -0
- package/dist/middleware/exception.filter.js.map +1 -1
- package/dist/server.constants.js +1 -2
- package/dist/server.constants.js.map +1 -1
- package/dist/services/bambu.api.js +24 -12
- package/dist/services/bambu.api.js.map +1 -1
- package/dist/services/file-storage.service.js +29 -0
- package/dist/services/file-storage.service.js.map +1 -1
- package/dist/services/moonraker.api.js +42 -9
- package/dist/services/moonraker.api.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint.client.js +30 -7
- package/dist/services/octoprint/octoprint.client.js.map +1 -1
- package/dist/services/octoprint/utils/file.utils.js +42 -5
- package/dist/services/octoprint/utils/file.utils.js.map +1 -1
- package/dist/services/octoprint.api.js +12 -8
- package/dist/services/octoprint.api.js.map +1 -1
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/prusa-link/prusa-link.api.js +21 -5
- package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
- package/dist/tasks.js +0 -1
- package/dist/tasks.js.map +1 -1
- package/package.json +6 -6
- package/dist/state/file.cache.js +0 -68
- package/dist/state/file.cache.js.map +0 -1
- package/dist/state/printer-files.store.js +0 -92
- package/dist/state/printer-files.store.js.map +0 -1
- package/dist/tasks/printer-files-load.task.js +0 -29
- package/dist/tasks/printer-files-load.task.js.map +0 -1
package/.yarn/install-state.gz
CHANGED
|
Binary file
|
package/README.md
CHANGED
|
@@ -137,7 +137,7 @@ These are the people involved in the project. Find the meaning of the emoji keys
|
|
|
137
137
|
<tr>
|
|
138
138
|
<td align="center" valign="top" width="10%"><a href="https://github.com/Tbwan"><img src="https://avatars.githubusercontent.com/u/44231748?v=4?s=40" width="40px;" alt="Tbwan"/><br /><sub><b>Tbwan</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3ATbwan" title="Bug reports">🐛</a></td>
|
|
139
139
|
<td align="center" valign="top" width="10%"><a href="https://github.com/nuvious"><img src="https://avatars.githubusercontent.com/u/5287736?v=4?s=40" width="40px;" alt="David Cheeseman"/><br /><sub><b>David Cheeseman</b></sub></a><br /><a href="#ideas-nuvious" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-nuvious" title="Packaging/porting to new platform">📦</a> <a href="#infra-nuvious" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
140
|
-
<td align="center" valign="top" width="10%"><a href="https://github.com/thatguy-jaysenodell"><img src="https://avatars.githubusercontent.com/u/118288184?v=4?s=40" width="40px;" alt="That Guy Jaysen"/><br /><sub><b>That Guy Jaysen</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Athatguy-jaysenodell" title="Bug reports">🐛</a></td>
|
|
140
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/thatguy-jaysenodell"><img src="https://avatars.githubusercontent.com/u/118288184?v=4?s=40" width="40px;" alt="That Guy Jaysen"/><br /><sub><b>That Guy Jaysen</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Athatguy-jaysenodell" title="Bug reports">🐛</a> <a href="#ideas-thatguy-jaysenodell" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/commits?author=thatguy-jaysenodell" title="Code">💻</a></td>
|
|
141
141
|
<td align="center" valign="top" width="10%"><a href="http://design.zagethy.com"><img src="https://avatars.githubusercontent.com/u/6075740?v=4?s=40" width="40px;" alt="Zagethy"/><br /><sub><b>Zagethy</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3AZagethy" title="Bug reports">🐛</a></td>
|
|
142
142
|
</tr>
|
|
143
143
|
</tbody>
|
package/RELEASE_NOTES.MD
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Develop
|
|
2
2
|
|
|
3
|
+
# FDM Monster 2.0.10
|
|
4
|
+
|
|
5
|
+
## Fixes
|
|
6
|
+
|
|
7
|
+
- Reject duplicate filename uploads in central file storage (fixes #4972)
|
|
8
|
+
- Added ConflictException for 409 status code responses
|
|
9
|
+
- Refactored printer-files upload handler into focused helper methods
|
|
10
|
+
- Replaced manual error responses with proper exception classes throughout file upload endpoints
|
|
11
|
+
- The printer files load task was removed because it is no longer required
|
|
12
|
+
|
|
13
|
+
# FDM Monster 2.0.9
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Implemented directory navigation with optional recursive mode for printer file listings across all 4 implementations
|
|
18
|
+
- Added `dir` field to `FileDto` to distinguish files from directories (OctoPrint and Moonraker support recursive, PrusaLink and Bambu non-recursive only)
|
|
19
|
+
|
|
20
|
+
## Refactor
|
|
21
|
+
|
|
22
|
+
- Updated `getFiles()` signature to support `recursive` and `startDir` parameters with non-recursive as default for performance
|
|
23
|
+
- Removed in-memory file cache system - files are now fetched fresh from printer APIs
|
|
24
|
+
|
|
3
25
|
# FDM Monster 2.0.8
|
|
4
26
|
|
|
5
27
|
## Features
|
package/dist/container.js
CHANGED
|
@@ -18,11 +18,9 @@ const _settingsstore = require("./state/settings.store");
|
|
|
18
18
|
const _serverreleaseservice = require("./services/core/server-release.service");
|
|
19
19
|
const _taskmanagerservice = require("./services/task-manager.service");
|
|
20
20
|
const _githubservice = require("./services/core/github.service");
|
|
21
|
-
const _filecache = require("./state/file.cache");
|
|
22
21
|
const _printerwebsockettask = require("./tasks/printer-websocket.task");
|
|
23
22
|
const _socketiotask = require("./tasks/socketio.task");
|
|
24
23
|
const _socketfactory = require("./services/socket.factory");
|
|
25
|
-
const _printerfilesstore = require("./state/printer-files.store");
|
|
26
24
|
const _eventemitter = require("./handlers/event-emitter");
|
|
27
25
|
const _serverconstants = require("./server.constants");
|
|
28
26
|
const _softwareupdatetask = require("./tasks/software-update.task");
|
|
@@ -34,7 +32,6 @@ const _boottask = require("./tasks/boot.task");
|
|
|
34
32
|
const _userservice = require("./services/orm/user.service");
|
|
35
33
|
const _roleservice = require("./services/orm/role.service");
|
|
36
34
|
const _permissionservice = require("./services/orm/permission.service");
|
|
37
|
-
const _printerfilesloadtask = require("./tasks/printer-files-load.task");
|
|
38
35
|
const _authorizationconstants = require("./constants/authorization.constants");
|
|
39
36
|
const _printerwebsocketrestoretask = require("./tasks/printer-websocket-restore.task");
|
|
40
37
|
const _configservice = require("./services/core/config.service");
|
|
@@ -164,9 +161,7 @@ function configureContainer() {
|
|
|
164
161
|
[di.batchCallService]: (0, _awilix.asClass)(_batchcallservice.BatchCallService).singleton(),
|
|
165
162
|
[di.floorStore]: (0, _awilix.asClass)(_floorstore.FloorStore).singleton(),
|
|
166
163
|
[di.printerThumbnailCache]: (0, _awilix.asClass)(_printerthumbnailcache.PrinterThumbnailCache).singleton(),
|
|
167
|
-
[di.fileCache]: (0, _awilix.asClass)(_filecache.FileCache).singleton(),
|
|
168
164
|
[di.fileUploadTrackerCache]: (0, _awilix.asClass)(_fileuploadtrackercache.FileUploadTrackerCache).singleton(),
|
|
169
|
-
[di.printerFilesStore]: (0, _awilix.asClass)(_printerfilesstore.PrinterFilesStore).singleton(),
|
|
170
165
|
[di.printerCache]: (0, _awilix.asClass)(_printercache.PrinterCache).singleton(),
|
|
171
166
|
[di.printerEventsCache]: (0, _awilix.asClass)(_printereventscache.PrinterEventsCache).singleton(),
|
|
172
167
|
[di.printerSocketStore]: (0, _awilix.asClass)(_printersocketstore.PrinterSocketStore).singleton(),
|
|
@@ -182,7 +177,6 @@ function configureContainer() {
|
|
|
182
177
|
[di.clientDistDownloadTask]: (0, _awilix.asClass)(_clientbundletask.ClientDistDownloadTask).singleton(),
|
|
183
178
|
[di.printerWebsocketTask]: (0, _awilix.asClass)(_printerwebsockettask.PrinterWebsocketTask).singleton(),
|
|
184
179
|
[di.printerWebsocketRestoreTask]: (0, _awilix.asClass)(_printerwebsocketrestoretask.PrinterWebsocketRestoreTask).singleton(),
|
|
185
|
-
[di.printerFilesLoadTask]: (0, _awilix.asClass)(_printerfilesloadtask.PrinterFilesLoadTask).singleton(),
|
|
186
180
|
[di.printJobAnalysisTask]: (0, _awilix.asClass)(_printjobanalysistask.PrintJobAnalysisTask).singleton()
|
|
187
181
|
});
|
|
188
182
|
return container;
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/container.ts"],"names":["configureContainer","container","createContainer","injectionMode","InjectionMode","CLASSIC","di","DITokens","register","appDefaultRole","asValue","ROLES","GUEST","appDefaultRoleNoLogin","ADMIN","serverVersion","asFunction","process","env","AppConstants","VERSION_KEY","cradleService","asClass","CradleService","inject","socketFactory","SocketFactory","transient","typeormService","TypeormService","singleton","settingsService","SettingsService","floorService","FloorService","floorPositionService","FloorPositionService","cameraStreamService","CameraStreamService","printerService","PrinterService","printerMaintenanceLogService","PrinterMaintenanceLogService","printerTagService","PrinterTagService","refreshTokenService","RefreshTokenService","userService","UserService","userRoleService","UserRoleService","roleService","RoleService","permissionService","PermissionService","serverHost","ServerHost","exceptionFilter","ExceptionFilter","settingsStore","SettingsStore","configService","ConfigService","authService","AuthService","jwtService","JwtService","loggerFactory","LoggerFactory","taskManagerService","TaskManagerService","toadScheduler","ToadScheduler","eventEmitter2","configureEventEmitter","serverReleaseService","ServerReleaseService","monsterPiService","MonsterPiService","githubService","GithubService","octokitService","CustomOctoKit","Octokit","plugin","throttling","auth","get","GITHUB_PAT","throttle","onRateLimit","_retryAfter","options","_octokit","_retryCount","logger","warn","method","url","onSecondaryRateLimit","clientBundleService","ClientBundleService","logDumpService","LogDumpService","httpClientFactory","HttpClientFactory","socketIoGateway","SocketIoGateway","multerService","MulterService","yamlService","YamlService","printerLogin","printerApiFactory","PrinterApiFactory","prusaLinkApi","PrusaLinkApi","prusaLinkPollingAdapter","PrusaLinkHttpPollingAdapter","octoprintApi","OctoprintApi","octoprintClient","OctoprintClient","octoPrintSockIoAdapter","OctoprintWebsocketAdapter","moonrakerApi","MoonrakerApi","moonrakerClient","MoonrakerClient","moonrakerWebsocketAdapter","MoonrakerWebsocketAdapter","bambuApi","BambuApi","bambuClient","BambuClient","bambuFtpAdapter","BambuFtpAdapter","bambuMqttAdapter","BambuMqttAdapter","batchCallService","BatchCallService","floorStore","FloorStore","printerThumbnailCache","PrinterThumbnailCache","
|
|
1
|
+
{"version":3,"sources":["../src/container.ts"],"names":["configureContainer","container","createContainer","injectionMode","InjectionMode","CLASSIC","di","DITokens","register","appDefaultRole","asValue","ROLES","GUEST","appDefaultRoleNoLogin","ADMIN","serverVersion","asFunction","process","env","AppConstants","VERSION_KEY","cradleService","asClass","CradleService","inject","socketFactory","SocketFactory","transient","typeormService","TypeormService","singleton","settingsService","SettingsService","floorService","FloorService","floorPositionService","FloorPositionService","cameraStreamService","CameraStreamService","printerService","PrinterService","printerMaintenanceLogService","PrinterMaintenanceLogService","printerTagService","PrinterTagService","refreshTokenService","RefreshTokenService","userService","UserService","userRoleService","UserRoleService","roleService","RoleService","permissionService","PermissionService","serverHost","ServerHost","exceptionFilter","ExceptionFilter","settingsStore","SettingsStore","configService","ConfigService","authService","AuthService","jwtService","JwtService","loggerFactory","LoggerFactory","taskManagerService","TaskManagerService","toadScheduler","ToadScheduler","eventEmitter2","configureEventEmitter","serverReleaseService","ServerReleaseService","monsterPiService","MonsterPiService","githubService","GithubService","octokitService","CustomOctoKit","Octokit","plugin","throttling","auth","get","GITHUB_PAT","throttle","onRateLimit","_retryAfter","options","_octokit","_retryCount","logger","warn","method","url","onSecondaryRateLimit","clientBundleService","ClientBundleService","logDumpService","LogDumpService","httpClientFactory","HttpClientFactory","socketIoGateway","SocketIoGateway","multerService","MulterService","yamlService","YamlService","printerLogin","printerApiFactory","PrinterApiFactory","prusaLinkApi","PrusaLinkApi","prusaLinkPollingAdapter","PrusaLinkHttpPollingAdapter","octoprintApi","OctoprintApi","octoprintClient","OctoprintClient","octoPrintSockIoAdapter","OctoprintWebsocketAdapter","moonrakerApi","MoonrakerApi","moonrakerClient","MoonrakerClient","moonrakerWebsocketAdapter","MoonrakerWebsocketAdapter","bambuApi","BambuApi","bambuClient","BambuClient","bambuFtpAdapter","BambuFtpAdapter","bambuMqttAdapter","BambuMqttAdapter","batchCallService","BatchCallService","floorStore","FloorStore","printerThumbnailCache","PrinterThumbnailCache","fileUploadTrackerCache","FileUploadTrackerCache","printerCache","PrinterCache","printerEventsCache","PrinterEventsCache","printerSocketStore","PrinterSocketStore","testPrinterSocketStore","TestPrinterSocketStore","printJobService","PrintJobService","printQueueService","PrintQueueService","fileStorageService","FileStorageService","fileAnalysisService","FileAnalysisService","printFileDownloaderService","PrintFileDownloaderService","bootTask","BootTask","softwareUpdateTask","SoftwareUpdateTask","socketIoTask","SocketIoTask","clientDistDownloadTask","ClientDistDownloadTask","printerWebsocketTask","PrinterWebsocketTask","printerWebsocketRestoreTask","PrinterWebsocketRestoreTask","printJobAnalysisTask","PrintJobAnalysisTask"],"mappings":"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"}
|
package/dist/container.tokens.js
CHANGED
|
@@ -70,14 +70,12 @@ const DITokens = {
|
|
|
70
70
|
settingsStore: "settingsStore",
|
|
71
71
|
printerSocketStore: "printerSocketStore",
|
|
72
72
|
testPrinterSocketStore: "testPrinterSocketStore",
|
|
73
|
-
printerFilesStore: "printerFilesStore",
|
|
74
73
|
prusaLinkPollingAdapter: "prusaLinkPollingAdapter",
|
|
75
74
|
octoPrintSockIoAdapter: "octoPrintSockIoAdapter",
|
|
76
75
|
moonrakerWebsocketAdapter: "moonrakerWebsocketAdapter",
|
|
77
76
|
printerCache: "printerCache",
|
|
78
77
|
printerEventsCache: "printerEventsCache",
|
|
79
78
|
printerThumbnailCache: "printerThumbnailCache",
|
|
80
|
-
fileCache: "fileCache",
|
|
81
79
|
fileUploadTrackerCache: "fileUploadTrackerCache",
|
|
82
80
|
bootTask: "bootTask",
|
|
83
81
|
softwareUpdateTask: "softwareUpdateTask",
|
|
@@ -85,7 +83,6 @@ const DITokens = {
|
|
|
85
83
|
socketIoTask: "socketIoTask",
|
|
86
84
|
printerWebsocketTask: "printerWebsocketTask",
|
|
87
85
|
printerWebsocketRestoreTask: "printerWebsocketRestoreTask",
|
|
88
|
-
printerFilesLoadTask: "printerFilesLoadTask",
|
|
89
86
|
printJobAnalysisTask: "printJobAnalysisTask"
|
|
90
87
|
};
|
|
91
88
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/container.tokens.ts"],"names":["DITokens","cradleService","serverVersion","appDefaultRole","appDefaultRoleNoLogin","typeormService","serverHost","exceptionFilter","loggerFactory","httpClientFactory","socketIoGateway","multerService","configService","taskManagerService","toadScheduler","eventEmitter2","printerService","printerTagService","printerMaintenanceLogService","floorPositionService","printJobService","printQueueService","fileStorageService","fileAnalysisService","printFileDownloaderService","floorService","yamlService","settingsService","serverReleaseService","monsterPiService","githubService","octokitService","clientBundleService","logDumpService","userTokenService","authService","refreshTokenService","userService","userRoleService","permissionService","jwtService","roleService","prusaLinkApi","octoprintApi","octoprintClient","moonrakerApi","moonrakerClient","bambuApi","bambuClient","bambuFtpAdapter","bambuMqttAdapter","cameraStreamService","socketFactory","printerApiFactory","printerLogin","batchCallService","influxDbV2BaseService","systemInfoBundleService","floorStore","settingsStore","printerSocketStore","testPrinterSocketStore","
|
|
1
|
+
{"version":3,"sources":["../src/container.tokens.ts"],"names":["DITokens","cradleService","serverVersion","appDefaultRole","appDefaultRoleNoLogin","typeormService","serverHost","exceptionFilter","loggerFactory","httpClientFactory","socketIoGateway","multerService","configService","taskManagerService","toadScheduler","eventEmitter2","printerService","printerTagService","printerMaintenanceLogService","floorPositionService","printJobService","printQueueService","fileStorageService","fileAnalysisService","printFileDownloaderService","floorService","yamlService","settingsService","serverReleaseService","monsterPiService","githubService","octokitService","clientBundleService","logDumpService","userTokenService","authService","refreshTokenService","userService","userRoleService","permissionService","jwtService","roleService","prusaLinkApi","octoprintApi","octoprintClient","moonrakerApi","moonrakerClient","bambuApi","bambuClient","bambuFtpAdapter","bambuMqttAdapter","cameraStreamService","socketFactory","printerApiFactory","printerLogin","batchCallService","influxDbV2BaseService","systemInfoBundleService","floorStore","settingsStore","printerSocketStore","testPrinterSocketStore","prusaLinkPollingAdapter","octoPrintSockIoAdapter","moonrakerWebsocketAdapter","printerCache","printerEventsCache","printerThumbnailCache","fileUploadTrackerCache","bootTask","softwareUpdateTask","clientDistDownloadTask","socketIoTask","printerWebsocketTask","printerWebsocketRestoreTask","printJobAnalysisTask"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,WAAW;IACtBC,eAAe;IAEfC,eAAe;IACfC,gBAAgB;IAChBC,uBAAuB;IACvBC,gBAAgB;IAEhBC,YAAY;IACZC,iBAAiB;IACjBC,eAAe;IACfC,mBAAmB;IACnBC,iBAAiB;IACjBC,eAAe;IACfC,eAAe;IACfC,oBAAoB;IACpBC,eAAe;IACfC,eAAe;IACfC,gBAAgB;IAChBC,mBAAmB;IACnBC,8BAA8B;IAC9BC,sBAAsB;IACtBC,iBAAiB;IACjBC,mBAAmB;IACnBC,oBAAoB;IACpBC,qBAAqB;IACrBC,4BAA4B;IAC5BC,cAAc;IACdC,aAAa;IACbC,iBAAiB;IACjBC,sBAAsB;IACtBC,kBAAkB;IAClBC,eAAe;IACfC,gBAAgB;IAChBC,qBAAqB;IACrBC,gBAAgB;IAChBC,kBAAkB;IAClBC,aAAa;IACbC,qBAAqB;IACrBC,aAAa;IACbC,iBAAiB;IACjBC,mBAAmB;IACnBC,YAAY;IACZC,aAAa;IACbC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,cAAc;IACdC,iBAAiB;IACjBC,UAAU;IACVC,aAAa;IACbC,iBAAiB;IACjBC,kBAAkB;IAClBC,qBAAqB;IACrBC,eAAe;IACfC,mBAAmB;IACnBC,cAAc;IACdC,kBAAkB;IAClBC,uBAAuB;IACvBC,yBAAyB;IAEzBC,YAAY;IACZC,eAAe;IACfC,oBAAoB;IACpBC,wBAAwB;IACxBC,yBAAyB;IACzBC,wBAAwB;IACxBC,2BAA2B;IAE3BC,cAAc;IACdC,oBAAoB;IACpBC,uBAAuB;IACvBC,wBAAwB;IAExBC,UAAU;IACVC,oBAAoB;IACpBC,wBAAwB;IACxBC,cAAc;IACdC,sBAAsB;IACtBC,6BAA6B;IAC7BC,sBAAsB;AACxB"}
|
|
@@ -17,6 +17,7 @@ const _filestorageservice = require("../services/file-storage.service");
|
|
|
17
17
|
const _multerservice = require("../services/core/multer.service");
|
|
18
18
|
const _loggerfactory = require("../handlers/logger-factory");
|
|
19
19
|
const _fileanalysisservice = require("../services/file-analysis.service");
|
|
20
|
+
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
|
|
20
21
|
const _nodefs = require("node:fs");
|
|
21
22
|
const _nodepath = require("node:path");
|
|
22
23
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -198,64 +199,45 @@ class FileStorageController {
|
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
async uploadFile(req, res) {
|
|
202
|
+
const acceptedExtensions = [
|
|
203
|
+
'.gcode',
|
|
204
|
+
'.3mf',
|
|
205
|
+
'.bgcode'
|
|
206
|
+
];
|
|
207
|
+
const files = await this.multerService.multerLoadFileAsync(req, res, acceptedExtensions, true);
|
|
208
|
+
if (!files?.length) {
|
|
209
|
+
throw new _runtimeexceptions.BadRequestException("No file uploaded");
|
|
210
|
+
}
|
|
211
|
+
if (files.length > 1) {
|
|
212
|
+
throw new _runtimeexceptions.BadRequestException("Only 1 file can be uploaded at a time");
|
|
213
|
+
}
|
|
214
|
+
const file = files[0];
|
|
215
|
+
await this.fileStorageService.validateUniqueFilename(file.originalname);
|
|
216
|
+
const ext = (0, _nodepath.extname)(file.originalname);
|
|
217
|
+
const tempPathWithExt = file.path + ext;
|
|
201
218
|
try {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
const file = files[0];
|
|
221
|
-
const ext = (0, _nodepath.extname)(file.originalname);
|
|
222
|
-
const tempPathWithExt = file.path + ext;
|
|
223
|
-
try {
|
|
224
|
-
(0, _nodefs.copyFileSync)(file.path, tempPathWithExt);
|
|
225
|
-
const fileHash = await this.fileStorageService.calculateFileHash(tempPathWithExt);
|
|
226
|
-
this.logger.log(`Analyzing file: ${file.originalname} (ext: ${ext})`);
|
|
227
|
-
const analysisResult = await this.fileAnalysisService.analyzeFile(tempPathWithExt);
|
|
228
|
-
const metadata = analysisResult.metadata;
|
|
229
|
-
const thumbnails = analysisResult.thumbnails;
|
|
230
|
-
this.logger.log(`Analysis complete: format=${metadata.fileFormat}, layers=${metadata.totalLayers}, ` + `time=${metadata.gcodePrintTimeSeconds}s, filament=${metadata.filamentUsedGrams}g, ` + `thumbnails=${thumbnails.length}`);
|
|
231
|
-
const fileStorageId = await this.fileStorageService.saveFile(file, fileHash);
|
|
232
|
-
this.logger.log(`Uploaded file ${file.originalname} as ${fileStorageId}`);
|
|
233
|
-
let thumbnailMetadata = [];
|
|
234
|
-
if (thumbnails.length > 0) {
|
|
235
|
-
thumbnailMetadata = await this.fileStorageService.saveThumbnails(fileStorageId, thumbnails);
|
|
236
|
-
this.logger.log(`Saved ${thumbnailMetadata.length} thumbnail(s) for ${fileStorageId}`);
|
|
237
|
-
}
|
|
238
|
-
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, file.originalname, thumbnailMetadata);
|
|
239
|
-
this.logger.log(`Saved metadata JSON for ${fileStorageId}`);
|
|
240
|
-
res.send({
|
|
241
|
-
message: "File uploaded successfully",
|
|
242
|
-
fileStorageId,
|
|
243
|
-
fileName: file.originalname,
|
|
244
|
-
fileSize: file.size,
|
|
245
|
-
fileHash,
|
|
246
|
-
metadata,
|
|
247
|
-
thumbnailCount: thumbnails.length
|
|
248
|
-
});
|
|
249
|
-
} finally{
|
|
250
|
-
if ((0, _nodefs.existsSync)(tempPathWithExt)) {
|
|
251
|
-
(0, _nodefs.unlinkSync)(tempPathWithExt);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
} catch (error) {
|
|
255
|
-
this.logger.error(`Failed to upload file: ${error}`);
|
|
256
|
-
res.status(500).send({
|
|
257
|
-
error: "Failed to upload file"
|
|
219
|
+
(0, _nodefs.copyFileSync)(file.path, tempPathWithExt);
|
|
220
|
+
const fileHash = await this.fileStorageService.calculateFileHash(tempPathWithExt);
|
|
221
|
+
this.logger.log(`Analyzing ${file.originalname}`);
|
|
222
|
+
const analysisResult = await this.fileAnalysisService.analyzeFile(tempPathWithExt);
|
|
223
|
+
const { metadata, thumbnails } = analysisResult;
|
|
224
|
+
const fileStorageId = await this.fileStorageService.saveFile(file, fileHash);
|
|
225
|
+
this.logger.log(`Saved ${file.originalname} as ${fileStorageId}`);
|
|
226
|
+
const thumbnailMetadata = thumbnails.length > 0 ? await this.fileStorageService.saveThumbnails(fileStorageId, thumbnails) : [];
|
|
227
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, file.originalname, thumbnailMetadata);
|
|
228
|
+
res.send({
|
|
229
|
+
message: "File uploaded successfully",
|
|
230
|
+
fileStorageId,
|
|
231
|
+
fileName: file.originalname,
|
|
232
|
+
fileSize: file.size,
|
|
233
|
+
fileHash,
|
|
234
|
+
metadata,
|
|
235
|
+
thumbnailCount: thumbnails.length
|
|
258
236
|
});
|
|
237
|
+
} finally{
|
|
238
|
+
if ((0, _nodefs.existsSync)(tempPathWithExt)) {
|
|
239
|
+
(0, _nodefs.unlinkSync)(tempPathWithExt);
|
|
240
|
+
}
|
|
259
241
|
}
|
|
260
242
|
}
|
|
261
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/file-storage.controller.ts"],"names":["FileStorageController","logger","loggerFactory","fileStorageService","multerService","fileAnalysisService","name","listFiles","req","res","files","listAllFiles","send","map","file","thumbnails","metadata","_thumbnails","thumb","index","width","height","format","size","fileStorageId","fileName","fileFormat","fileSize","fileHash","createdAt","totalCount","length","error","status","getFileMetadata","params","getFileInfo","deleteFile","log","message","analyzeFile","filePath","getFilePath","fileExists","existingMetadata","loadMetadata","analysisResult","totalLayers","gcodePrintTimeSeconds","calculateFileHash","originalFileName","_originalFileName","thumbnailMetadata","saveThumbnails","saveMetadata","thumbnailCount","getThumbnailByIndex","thumbnailIndex","Number","parseInt","isNaN","thumbnail","getThumbnail","isJPG","isQOI","mimeType","base64","toString","thumbnailBase64","uploadFile","acceptedExtensions","multerLoadFileAsync","
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/file-storage.controller.ts"],"names":["FileStorageController","logger","loggerFactory","fileStorageService","multerService","fileAnalysisService","name","listFiles","req","res","files","listAllFiles","send","map","file","thumbnails","metadata","_thumbnails","thumb","index","width","height","format","size","fileStorageId","fileName","fileFormat","fileSize","fileHash","createdAt","totalCount","length","error","status","getFileMetadata","params","getFileInfo","deleteFile","log","message","analyzeFile","filePath","getFilePath","fileExists","existingMetadata","loadMetadata","analysisResult","totalLayers","gcodePrintTimeSeconds","calculateFileHash","originalFileName","_originalFileName","thumbnailMetadata","saveThumbnails","saveMetadata","thumbnailCount","getThumbnailByIndex","thumbnailIndex","Number","parseInt","isNaN","thumbnail","getThumbnail","isJPG","isQOI","mimeType","base64","toString","thumbnailBase64","uploadFile","acceptedExtensions","multerLoadFileAsync","BadRequestException","validateUniqueFilename","originalname","ext","extname","tempPathWithExt","path","copyFileSync","saveFile","existsSync","unlinkSync","AppConstants","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","OPERATOR"],"mappings":"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"}
|
|
@@ -16,7 +16,6 @@ const _printerfilescontrollervalidation = require("./validation/printer-files-co
|
|
|
16
16
|
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
|
|
17
17
|
const _printer = require("../middleware/printer");
|
|
18
18
|
const _authorizationconstants = require("../constants/authorization.constants");
|
|
19
|
-
const _printerfilesstore = require("../state/printer-files.store");
|
|
20
19
|
const _multerservice = require("../services/core/multer.service");
|
|
21
20
|
const _loggerfactory = require("../handlers/logger-factory");
|
|
22
21
|
const _express = require("express");
|
|
@@ -41,16 +40,14 @@ function _ts_metadata(k, v) {
|
|
|
41
40
|
}
|
|
42
41
|
class PrinterFilesController {
|
|
43
42
|
printerApi;
|
|
44
|
-
printerFilesStore;
|
|
45
43
|
printJobService;
|
|
46
44
|
fileAnalysisService;
|
|
47
45
|
fileStorageService;
|
|
48
46
|
multerService;
|
|
49
47
|
printerThumbnailCache;
|
|
50
48
|
logger;
|
|
51
|
-
constructor(loggerFactory, printerApi,
|
|
49
|
+
constructor(loggerFactory, printerApi, printJobService, fileAnalysisService, fileStorageService, multerService, printerThumbnailCache){
|
|
52
50
|
this.printerApi = printerApi;
|
|
53
|
-
this.printerFilesStore = printerFilesStore;
|
|
54
51
|
this.printJobService = printJobService;
|
|
55
52
|
this.fileAnalysisService = fileAnalysisService;
|
|
56
53
|
this.fileStorageService = fileStorageService;
|
|
@@ -58,36 +55,29 @@ class PrinterFilesController {
|
|
|
58
55
|
this.printerThumbnailCache = printerThumbnailCache;
|
|
59
56
|
this.logger = loggerFactory(PrinterFilesController.name);
|
|
60
57
|
}
|
|
61
|
-
async purgeIndexedFiles(req, res) {
|
|
62
|
-
await this.printerFilesStore.purgeFiles();
|
|
63
|
-
res.send();
|
|
64
|
-
}
|
|
65
58
|
async getThumbnails(req, res) {
|
|
66
59
|
const thumbnails = await this.printerThumbnailCache.getAllValues();
|
|
67
60
|
res.send(thumbnails);
|
|
68
61
|
}
|
|
69
62
|
async getFiles(req, res) {
|
|
70
|
-
const {
|
|
71
|
-
|
|
72
|
-
const
|
|
63
|
+
const { printerApi } = (0, _printerresolver.getScopedPrinter)(req);
|
|
64
|
+
const { recursive: recursiveStr, startDir } = await (0, _validators.validateInput)(req.query, _printerfilescontrollervalidation.getFilesSchema);
|
|
65
|
+
const recursive = recursiveStr === "true";
|
|
66
|
+
const files = await printerApi.getFiles(recursive, startDir);
|
|
73
67
|
res.send(files);
|
|
74
68
|
}
|
|
75
69
|
async startPrintFile(req, res) {
|
|
76
70
|
const { currentPrinterId } = (0, _printerresolver.getScopedPrinter)(req);
|
|
77
71
|
const { filePath } = await (0, _validators.validateInput)(req.body, _printerfilescontrollervalidation.startPrintFileSchema);
|
|
78
|
-
const encodedFilePath = encodeURIComponent(
|
|
72
|
+
const encodedFilePath = filePath.split('/').map(encodeURIComponent).join('/');
|
|
79
73
|
await this.printerApi.startPrint(encodedFilePath);
|
|
80
74
|
this.logger.log(`Started print for printer ${currentPrinterId}`);
|
|
81
75
|
res.send();
|
|
82
76
|
}
|
|
83
|
-
async getFilesCache(req, res) {
|
|
84
|
-
const { currentPrinter } = (0, _printerresolver.getScopedPrinter)(req);
|
|
85
|
-
res.send(this.printerFilesStore.getFiles(currentPrinter.id));
|
|
86
|
-
}
|
|
87
77
|
async downloadFile(req, res) {
|
|
88
78
|
this.logger.log(`Downloading file ${req.params.path}`);
|
|
89
79
|
const { path } = await (0, _validators.validateInput)(req.params, _printerfilescontrollervalidation.downloadFileSchema);
|
|
90
|
-
const encodedFilePath = encodeURIComponent(
|
|
80
|
+
const encodedFilePath = path.split('/').map(encodeURIComponent).join('/');
|
|
91
81
|
const response = await this.printerApi.downloadFile(encodedFilePath);
|
|
92
82
|
res.setHeader("Content-Type", response.headers["content-type"]);
|
|
93
83
|
res.setHeader("Content-Length", response.headers["content-length"]);
|
|
@@ -98,33 +88,11 @@ class PrinterFilesController {
|
|
|
98
88
|
response.data.pipe(res);
|
|
99
89
|
}
|
|
100
90
|
async deleteFileOrFolder(req, res) {
|
|
101
|
-
const { currentPrinterId } = (0, _printerresolver.getScopedPrinter)(req);
|
|
102
91
|
const { path } = await (0, _validators.validateInput)(req.query, _printerfilescontrollervalidation.getFileSchema);
|
|
103
|
-
const encodedFilePath = encodeURIComponent(
|
|
92
|
+
const encodedFilePath = path.split('/').map(encodeURIComponent).join('/');
|
|
104
93
|
const result = await this.printerApi.deleteFile(encodedFilePath);
|
|
105
|
-
await this.printerFilesStore.deleteFile(currentPrinterId, path);
|
|
106
94
|
res.send(result);
|
|
107
95
|
}
|
|
108
|
-
async clearPrinterFiles(req, res) {
|
|
109
|
-
const { currentPrinterId } = (0, _printerresolver.getScopedPrinter)(req);
|
|
110
|
-
const failedFiles = [];
|
|
111
|
-
const succeededFiles = [];
|
|
112
|
-
const nonRecursiveFiles = await this.printerApi.getFiles();
|
|
113
|
-
for (let file of nonRecursiveFiles){
|
|
114
|
-
try {
|
|
115
|
-
const encodedFilePath = encodeURIComponent(file.path);
|
|
116
|
-
await this.printerApi.deleteFile(encodedFilePath);
|
|
117
|
-
succeededFiles.push(file);
|
|
118
|
-
} catch (e) {
|
|
119
|
-
failedFiles.push(file);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
await this.printerFilesStore.purgePrinterFiles(currentPrinterId);
|
|
123
|
-
res.send({
|
|
124
|
-
failedFiles,
|
|
125
|
-
succeededFiles
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
96
|
async getPrinterThumbnail(req, res) {
|
|
129
97
|
const { currentPrinterId } = (0, _printerresolver.getScopedPrinter)(req);
|
|
130
98
|
const printerThumbnail = await this.printerThumbnailCache.getValue(currentPrinterId);
|
|
@@ -162,7 +130,6 @@ class PrinterFilesController {
|
|
|
162
130
|
}
|
|
163
131
|
throw e;
|
|
164
132
|
});
|
|
165
|
-
await this.printerFilesStore.loadFiles(currentPrinterId);
|
|
166
133
|
const ext = (0, _nodepath.extname)(uploadedFile.originalname);
|
|
167
134
|
const tempPathWithExt = uploadedFile.path + ext;
|
|
168
135
|
try {
|
|
@@ -245,17 +212,6 @@ class PrinterFilesController {
|
|
|
245
212
|
return _serverconstants.AppConstants.defaultAcceptedGcodeExtensions;
|
|
246
213
|
}
|
|
247
214
|
}
|
|
248
|
-
_ts_decorate([
|
|
249
|
-
(0, _awilixexpress.POST)(),
|
|
250
|
-
(0, _awilixexpress.route)("/purge"),
|
|
251
|
-
(0, _awilixexpress.before)((0, _authenticate.permission)(_authorizationconstants.PERMS.PrinterFiles.Clear)),
|
|
252
|
-
_ts_metadata("design:type", Function),
|
|
253
|
-
_ts_metadata("design:paramtypes", [
|
|
254
|
-
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
255
|
-
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
256
|
-
]),
|
|
257
|
-
_ts_metadata("design:returntype", Promise)
|
|
258
|
-
], PrinterFilesController.prototype, "purgeIndexedFiles", null);
|
|
259
215
|
_ts_decorate([
|
|
260
216
|
(0, _awilixexpress.GET)(),
|
|
261
217
|
(0, _awilixexpress.route)("/thumbnails"),
|
|
@@ -290,17 +246,6 @@ _ts_decorate([
|
|
|
290
246
|
]),
|
|
291
247
|
_ts_metadata("design:returntype", Promise)
|
|
292
248
|
], PrinterFilesController.prototype, "startPrintFile", null);
|
|
293
|
-
_ts_decorate([
|
|
294
|
-
(0, _awilixexpress.GET)(),
|
|
295
|
-
(0, _awilixexpress.route)("/:id/cache"),
|
|
296
|
-
(0, _awilixexpress.before)((0, _authenticate.permission)(_authorizationconstants.PERMS.PrinterFiles.Get)),
|
|
297
|
-
_ts_metadata("design:type", Function),
|
|
298
|
-
_ts_metadata("design:paramtypes", [
|
|
299
|
-
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
300
|
-
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
301
|
-
]),
|
|
302
|
-
_ts_metadata("design:returntype", Promise)
|
|
303
|
-
], PrinterFilesController.prototype, "getFilesCache", null);
|
|
304
249
|
_ts_decorate([
|
|
305
250
|
(0, _awilixexpress.GET)(),
|
|
306
251
|
(0, _awilixexpress.route)("/:id/download/:path"),
|
|
@@ -323,17 +268,6 @@ _ts_decorate([
|
|
|
323
268
|
]),
|
|
324
269
|
_ts_metadata("design:returntype", Promise)
|
|
325
270
|
], PrinterFilesController.prototype, "deleteFileOrFolder", null);
|
|
326
|
-
_ts_decorate([
|
|
327
|
-
(0, _awilixexpress.DELETE)(),
|
|
328
|
-
(0, _awilixexpress.route)("/:id/clear"),
|
|
329
|
-
(0, _awilixexpress.before)((0, _authenticate.permission)(_authorizationconstants.PERMS.PrinterFiles.Clear)),
|
|
330
|
-
_ts_metadata("design:type", Function),
|
|
331
|
-
_ts_metadata("design:paramtypes", [
|
|
332
|
-
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
333
|
-
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
334
|
-
]),
|
|
335
|
-
_ts_metadata("design:returntype", Promise)
|
|
336
|
-
], PrinterFilesController.prototype, "clearPrinterFiles", null);
|
|
337
271
|
_ts_decorate([
|
|
338
272
|
(0, _awilixexpress.GET)(),
|
|
339
273
|
(0, _awilixexpress.route)("/:id/thumbnail"),
|
|
@@ -370,7 +304,6 @@ PrinterFilesController = _ts_decorate([
|
|
|
370
304
|
_ts_metadata("design:paramtypes", [
|
|
371
305
|
typeof _loggerfactory.ILoggerFactory === "undefined" ? Object : _loggerfactory.ILoggerFactory,
|
|
372
306
|
typeof _printerapiinterface.IPrinterApi === "undefined" ? Object : _printerapiinterface.IPrinterApi,
|
|
373
|
-
typeof _printerfilesstore.PrinterFilesStore === "undefined" ? Object : _printerfilesstore.PrinterFilesStore,
|
|
374
307
|
typeof _printjobservice.PrintJobService === "undefined" ? Object : _printjobservice.PrintJobService,
|
|
375
308
|
typeof _fileanalysisservice.FileAnalysisService === "undefined" ? Object : _fileanalysisservice.FileAnalysisService,
|
|
376
309
|
typeof _filestorageservice.FileStorageService === "undefined" ? Object : _filestorageservice.FileStorageService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/printer-files.controller.ts"],"names":["PrinterFilesController","logger","loggerFactory","printerApi","printerFilesStore","printJobService","fileAnalysisService","fileStorageService","multerService","printerThumbnailCache","name","purgeIndexedFiles","req","res","purgeFiles","send","getThumbnails","thumbnails","getAllValues","getFiles","currentPrinterId","getScopedPrinter","log","files","loadFiles","startPrintFile","filePath","validateInput","body","startPrintFileSchema","encodedFilePath","encodeURIComponent","startPrint","getFilesCache","currentPrinter","id","downloadFile","params","path","downloadFileSchema","response","setHeader","headers","length","data","pipe","deleteFileOrFolder","query","getFileSchema","result","deleteFile","clearPrinterFiles","failedFiles","succeededFiles","nonRecursiveFiles","file","push","e","purgePrinterFiles","getPrinterThumbnail","printerThumbnail","getValue","uploadPrinterFile","acceptedExtensions","getAcceptedFileExtensions","printerType","multerLoadFileAsync","startPrintString","uploadFileSchema","ValidationException","error","join","uploadedFile","token","startTrackingSession","uploadFile","stream","createReadStream","fileName","originalname","contentLength","size","uploadToken","catch","clearUploadedFile","errorSummary","ext","extname","tempPathWithExt","existsSync","NotFoundException","copyFileSync","fileHash","calculateFileHash","substring","existingJob","findDuplicateByHash","metadata","fileStorageId","cachedMetadata","loadMetadata","analysisState","saveMetadata","existingFilePath","getFilePath","analysisResult","analyzeFile","fileFormat","totalLayers","gcodePrintTimeSeconds","filamentUsedGrams","saveFile","thumbnailMetadata","saveThumbnails","job","createPendingJob","updateJob","unlinkSync","captureException","BambuType","AppConstants","defaultAcceptedBambuExtensions","defaultAcceptedGcodeExtensions","PrinterFiles","Clear","Get","Actions","Delete","Upload","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","OPERATOR","printerResolveMiddleware"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/printer-files.controller.ts"],"names":["PrinterFilesController","logger","loggerFactory","printerApi","printJobService","fileAnalysisService","fileStorageService","multerService","printerThumbnailCache","name","getThumbnails","req","res","thumbnails","getAllValues","send","getFiles","getScopedPrinter","recursive","recursiveStr","startDir","validateInput","query","getFilesSchema","files","startPrintFile","currentPrinterId","filePath","body","startPrintFileSchema","encodedFilePath","split","map","encodeURIComponent","join","startPrint","log","downloadFile","params","path","downloadFileSchema","response","setHeader","headers","length","data","pipe","deleteFileOrFolder","getFileSchema","result","deleteFile","getPrinterThumbnail","printerThumbnail","getValue","uploadPrinterFile","currentPrinter","acceptedExtensions","getAcceptedFileExtensions","printerType","multerLoadFileAsync","startPrintString","uploadFileSchema","ValidationException","error","uploadedFile","token","startTrackingSession","uploadFile","stream","createReadStream","fileName","originalname","contentLength","size","uploadToken","catch","e","clearUploadedFile","errorSummary","ext","extname","tempPathWithExt","existsSync","NotFoundException","copyFileSync","fileHash","calculateFileHash","substring","existingJob","findDuplicateByHash","metadata","fileStorageId","cachedMetadata","loadMetadata","id","analysisState","saveMetadata","existingFilePath","getFilePath","analysisResult","analyzeFile","fileFormat","totalLayers","gcodePrintTimeSeconds","filamentUsedGrams","saveFile","thumbnailMetadata","saveThumbnails","job","createPendingJob","updateJob","unlinkSync","captureException","BambuType","AppConstants","defaultAcceptedBambuExtensions","defaultAcceptedGcodeExtensions","PrinterFiles","Get","Actions","Delete","Upload","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","OPERATOR","printerResolveMiddleware"],"mappings":"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"}
|
|
@@ -58,9 +58,7 @@ class SlicerCompatController {
|
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
const file = files[0];
|
|
61
|
-
|
|
62
|
-
const select = req.body.select === "true" || req.body.select === true;
|
|
63
|
-
this.logger.log(`OctoPrint-compatible upload: ${file.originalname} (print=${print}, select=${select})`);
|
|
61
|
+
await this.fileStorageService.validateUniqueFilename(file.originalname);
|
|
64
62
|
const fileHash = await this.fileStorageService.calculateFileHash(file.path);
|
|
65
63
|
const fileStorageId = await this.fileStorageService.saveFile(file, fileHash);
|
|
66
64
|
const filePath = this.fileStorageService.getFilePath(fileStorageId);
|
|
@@ -70,13 +68,8 @@ class SlicerCompatController {
|
|
|
70
68
|
const analysisResult = await this.fileAnalysisService.analyzeFile(filePath);
|
|
71
69
|
metadata = analysisResult.metadata;
|
|
72
70
|
thumbnails = analysisResult.thumbnails || [];
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
this.logger.log(`Saved ${thumbnailMetadata.length} thumbnail(s) for ${fileStorageId}`);
|
|
76
|
-
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, file.originalname, thumbnailMetadata);
|
|
77
|
-
} else {
|
|
78
|
-
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, file.originalname);
|
|
79
|
-
}
|
|
71
|
+
const thumbnailMetadata = thumbnails.length > 0 ? await this.fileStorageService.saveThumbnails(fileStorageId, thumbnails) : [];
|
|
72
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, file.originalname, thumbnailMetadata);
|
|
80
73
|
} catch (analysisError) {
|
|
81
74
|
this.logger.error(`Failed to analyze uploaded file: ${analysisError}`);
|
|
82
75
|
}
|