aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers/UploadManager.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2024-09-01 12:55:59 -0400
committerbobzel <zzzman@gmail.com>2024-09-01 12:55:59 -0400
commita958577d4c27b276aa37484e3f895e196138b17c (patch)
tree6a9ca7b34ce3de02130b533dabc5f201f3527186 /src/server/ApiManagers/UploadManager.ts
parentb235e116167a06b6d36e2962dd3f610839f18974 (diff)
consolidated image resampling. fixed importing zipped workspace.
Diffstat (limited to 'src/server/ApiManagers/UploadManager.ts')
-rw-r--r--src/server/ApiManagers/UploadManager.ts49
1 files changed, 16 insertions, 33 deletions
diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts
index 8ab27130b..868373474 100644
--- a/src/server/ApiManagers/UploadManager.ts
+++ b/src/server/ApiManagers/UploadManager.ts
@@ -1,20 +1,18 @@
import * as AdmZip from 'adm-zip';
import * as formidable from 'formidable';
import * as fs from 'fs';
-import { createReadStream, createWriteStream, unlink } from 'fs';
+import { unlink } from 'fs';
import * as imageDataUri from 'image-data-uri';
-import { Jimp } from 'jimp';
import * as path from 'path';
import * as uuid from 'uuid';
import { retrocycle } from '../../decycler/decycler';
import { DashVersion } from '../../fields/DocSymbols';
-import { DashUploadUtils, InjectSize, SizeSuffix } from '../DashUploadUtils';
+import { DashUploadUtils, InjectSize, SizeSuffix, workerResample } from '../DashUploadUtils';
import { Method, _success } from '../RouteManager';
import { AcceptableMedia, Upload } from '../SharedMediaTypes';
import { Directory, clientPathToFile, pathToDirectory, publicDirectory, serverPathToFile } from '../SocketData';
import { Database } from '../database';
import ApiManager, { Registration } from './ApiManager';
-import { SolrManager } from './SearchManager';
export default class UploadManager extends ApiManager {
protected initialize(register: Registration): void {
@@ -185,7 +183,7 @@ export default class UploadManager extends ApiManager {
let linkids: string[] = [];
try {
// eslint-disable-next-line no-restricted-syntax
- for (const name in Object.keys(files)) {
+ for (const name in files) {
if (Object.prototype.hasOwnProperty.call(files, name)) {
const f = files[name];
// eslint-disable-next-line no-continue
@@ -194,25 +192,17 @@ export default class UploadManager extends ApiManager {
const zip = new AdmZip(path2.filepath);
zip.getEntries().forEach(entry => {
const entryName = entry.entryName.replace(/%%%/g, '/');
- if (!entryName.startsWith('files/')) {
- return;
- }
- const extension = path.extname(entryName);
- const pathname = publicDirectory + '/' + entry.entryName;
- const targetname = publicDirectory + '/' + entryName;
- try {
- zip.extractEntryTo(entry.entryName, publicDirectory, true, false);
- createReadStream(pathname).pipe(createWriteStream(targetname));
- Jimp.read(pathname).then(img => {
- DashUploadUtils.imageResampleSizes(extension).forEach(({ width, suffix }) => {
- const outputPath = InjectSize(targetname, suffix);
- if (!width) createReadStream(pathname).pipe(createWriteStream(outputPath));
- else img.resize({ w: width }).write(outputPath as `${string}.${string}`);
- });
- unlink(pathname, () => {});
- });
- } catch (e) {
- console.log(e);
+ if (entryName.startsWith('files/')) {
+ const pathname = publicDirectory + '/' + entry.entryName;
+ const targetname = publicDirectory + '/' + entryName;
+ try {
+ zip.extractEntryTo(entry.entryName, publicDirectory, true, false);
+ const extension = path.extname(targetname).toLowerCase();
+ const basefilename = targetname.substring(0, targetname.length - extension.length);
+ workerResample(pathname, basefilename.replace(/_o$/, '') + extension, SizeSuffix.Original, true);
+ } catch (e) {
+ console.log(e);
+ }
}
});
const json = zip.getEntry('docs.json');
@@ -243,7 +233,6 @@ export default class UploadManager extends ApiManager {
unlink(path2.filepath, () => {});
}
}
- SolrManager.update();
res.send(JSON.stringify({ id, docids, linkids }) || 'error');
} catch (e) {
console.log(e);
@@ -286,15 +275,9 @@ export default class UploadManager extends ApiManager {
}
imageDataUri.outputFile(uri, serverPathToFile(Directory.images, InjectSize(filename, origSuffix))).then((savedName: string) => {
const ext = path.extname(savedName).toLowerCase();
+ const outputPath = serverPathToFile(Directory.images, filename + ext);
if (AcceptableMedia.imageFormats.includes(ext)) {
- Jimp.read(savedName).then(img => {
- (!origSuffix ? [{ width: 400, suffix: SizeSuffix.Medium }] : Object.values(DashUploadUtils.Sizes)) //
- .forEach(({ width, suffix }) => {
- const outputPath = serverPathToFile(Directory.images, InjectSize(filename, suffix) + ext);
- if (!width) createReadStream(savedName).pipe(createWriteStream(outputPath));
- else img.resize({ w: width }).write(outputPath as `${string}.${string}`);
- });
- });
+ workerResample(savedName, outputPath, origSuffix, false);
}
res.send(clientPathToFile(Directory.images, filename + ext));
});