aboutsummaryrefslogtreecommitdiff
path: root/src/scraping
diff options
context:
space:
mode:
Diffstat (limited to 'src/scraping')
-rw-r--r--src/scraping/buxton/final/BuxtonImporter.ts15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/scraping/buxton/final/BuxtonImporter.ts b/src/scraping/buxton/final/BuxtonImporter.ts
index 319486593..e7a0d367d 100644
--- a/src/scraping/buxton/final/BuxtonImporter.ts
+++ b/src/scraping/buxton/final/BuxtonImporter.ts
@@ -8,6 +8,7 @@ const StreamZip = require('node-stream-zip');
const createImageSizeStream = require("image-size-stream");
import { parseXml } from "libxmljs";
import { strictEqual } from "assert";
+import { Readable, PassThrough } from "stream";
interface DocumentContents {
body: string;
@@ -306,26 +307,24 @@ async function writeImages(zip: any): Promise<ImageData[]> {
const imageUrls: ImageData[] = [];
for (const mediaPath of imageEntries) {
- const streamImage = () => new Promise<any>((resolve, reject) => {
+ const getImageStream = () => new Promise<Readable>((resolve, reject) => {
zip.stream(mediaPath, (error: any, stream: any) => error ? reject(error) : resolve(stream));
});
const { width, height, type } = await new Promise<Dimensions>(async resolve => {
- const sizeStream = createImageSizeStream().on('size', (dimensions: Dimensions) => {
+ const sizeStream = (createImageSizeStream() as PassThrough).on('size', (dimensions: Dimensions) => {
readStream.destroy();
resolve(dimensions);
- });
- const readStream = await streamImage();
+ }).on("error", () => readStream.destroy());
+ const readStream = await getImageStream();
readStream.pipe(sizeStream);
});
if (Math.abs(width - height) < 10) {
continue;
}
- const ext = `.${type}`.toLowerCase();
- const generatedFileName = `upload_${Utils.GenerateGuid()}${ext}`;
-
- await DashUploadUtils.outputResizedImages(streamImage, imageDir, generatedFileName, ext);
+ const generatedFileName = `upload_${Utils.GenerateGuid()}.${type.toLowerCase()}`;
+ await DashUploadUtils.outputResizedImages(getImageStream, generatedFileName, imageDir);
imageUrls.push({
url: `/files/images/buxton/${generatedFileName}`,