aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/DashStats.ts4
-rw-r--r--src/server/DashUploadUtils.ts25
2 files changed, 22 insertions, 7 deletions
diff --git a/src/server/DashStats.ts b/src/server/DashStats.ts
index b6164832f..a9e6af67c 100644
--- a/src/server/DashStats.ts
+++ b/src/server/DashStats.ts
@@ -15,7 +15,8 @@ export namespace DashStats {
export const SAMPLING_INTERVAL = 1000; // in milliseconds (ms) - Time interval to update the frontend.
export const RATE_INTERVAL = 10; // in seconds (s) - Used to calculate rate
- const statsCSVFilename = './src/server/stats/userLoginStats.csv';
+ const statsCSVDirectory = './src/server/stats/';
+ const statsCSVFilename = statsCSVDirectory + 'userLoginStats.csv';
const columns = ['USERNAME', 'ACTION', 'TIME'];
/**
@@ -153,6 +154,7 @@ export namespace DashStats {
TIME: currentDate.toISOString(),
};
+ if (!fs.existsSync(statsCSVDirectory)) fs.mkdirSync(statsCSVDirectory);
let statsFile = fs.createWriteStream(statsCSVFilename, { flags: 'a' });
statsFile.write(convertToCSV(toWrite));
statsFile.end();
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index b1a7a9c5e..307aec6fc 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -14,7 +14,7 @@ import * as path from 'path';
import { basename } from 'path';
import * as parse from 'pdf-parse';
import * as request from 'request-promise';
-import { Duplex } from 'stream';
+import { Duplex, Stream } from 'stream';
import { filesDirectory, publicDirectory } from '.';
import { Utils } from '../Utils';
import { Opt } from '../fields/Doc';
@@ -349,10 +349,8 @@ export namespace DashUploadUtils {
if (metadata instanceof Error) {
return { name: metadata.name, message: metadata.message };
}
- const outputFile = filename || metadata.filename;
- if (!outputFile) {
- return { name: source, message: 'output file not found' };
- }
+ const outputFile = filename || metadata.filename || '';
+
return UploadInspectedImage(metadata, outputFile, prefix);
};
@@ -552,7 +550,22 @@ export namespace DashUploadUtils {
writtenFiles = {};
}
} else {
- writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images));
+ try {
+ writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images));
+ } catch (e) {
+ // input is a blob or other, try reading it to create a metadata source file.
+ const reqSource = request(metadata.source);
+ let readStream: Stream = reqSource instanceof Promise ? await reqSource : reqSource;
+ const readSource = `${prefix}upload_${Utils.GenerateGuid()}.${metadata.contentType.split('/')[1].toLowerCase()}`;
+ await new Promise<void>((res, rej) =>
+ readStream
+ .pipe(createWriteStream(readSource))
+ .on('close', () => res())
+ .on('error', () => rej())
+ );
+ writtenFiles = await outputResizedImages(readSource, resolved, pathToDirectory(Directory.images));
+ fs.unlink(readSource, err => console.log("Couldn't unlink temporary image file:" + readSource));
+ }
}
for (const suffix of Object.keys(writtenFiles)) {
information.accessPaths[suffix] = getAccessPaths(images, writtenFiles[suffix]);