1+ import * as fs from 'fs' ;
12import * as net from 'net' ;
23import express = require( 'express' ) ;
3- import { Logger } from '../logger' ;
4- import { Browser } from '../browser' ;
54import * as boom from '@hapi/boom' ;
65import morgan = require( 'morgan' ) ;
6+ import * as promClient from 'prom-client' ;
7+ import { Logger } from '../logger' ;
8+ import { Browser } from '../browser' ;
79import { ServiceConfig } from '../config' ;
810import { metricsMiddleware } from './metrics_middleware' ;
9- import * as promClient from 'prom-client' ;
1011import { RenderOptions } from '../browser/browser' ;
1112
1213export 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