Skip to content

Commit 9b3949a

Browse files
authored
Service: Delete temporary file after serving it to client (#120)
Only applies to when running as HTTP service. Tries to delete temporary file after serving it to client. Fixes #115
1 parent 6ac82cf commit 9b3949a

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

src/browser/browser.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as os from 'os';
2+
import * as uniqueFilename from 'unique-filename';
23
import * as puppeteer from 'puppeteer';
3-
import { Browser as PuppeteerBrowser, Page } from 'puppeteer';
4-
import uniqueFilename = require('unique-filename');
54
import { Logger } from '../logger';
65
import { RenderingConfig } from '../config';
76

src/service/http-server.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import * as fs from 'fs';
12
import * as net from 'net';
23
import express = require('express');
3-
import { Logger } from '../logger';
4-
import { Browser } from '../browser';
54
import * as boom from '@hapi/boom';
65
import morgan = require('morgan');
6+
import * as promClient from 'prom-client';
7+
import { Logger } from '../logger';
8+
import { Browser } from '../browser';
79
import { ServiceConfig } from '../config';
810
import { metricsMiddleware } from './metrics_middleware';
9-
import * as promClient from 'prom-client';
1011
import { RenderOptions } from '../browser/browser';
1112

1213
export class HttpServer {
@@ -79,7 +80,7 @@ export class HttpServer {
7980
await this.browser.start();
8081
}
8182

82-
render = async (req: express.Request, res: express.Response) => {
83+
render = async (req: express.Request, res: express.Response, next: express.NextFunction) => {
8384
if (!req.query.url) {
8485
throw boom.badRequest('Missing url parameter');
8586
}
@@ -95,12 +96,24 @@ export class HttpServer {
9596
timezone: req.query.timezone,
9697
encoding: req.query.encoding,
9798
};
99+
98100
this.log.debug('Render request received', 'url', options.url);
99101
req.on('close', err => {
100102
this.log.debug('Connection closed', 'url', options.url, 'error', err);
101103
});
102104
const result = await this.browser.render(options);
103-
res.sendFile(result.filePath);
105+
res.sendFile(result.filePath, err => {
106+
if (err) {
107+
next(err);
108+
} else {
109+
try {
110+
this.log.debug('Deleting temporary file', 'file', result.filePath);
111+
fs.unlinkSync(result.filePath);
112+
} catch (e) {
113+
this.log.error('Failed to delete temporary file', 'file', result.filePath);
114+
}
115+
}
116+
});
104117
};
105118
}
106119

0 commit comments

Comments
 (0)