Newer
Older
import { Body, Controller, Get, Header, Logger, Post, Res } from '@nestjs/common';
import { version } from '../package.json';
import { Response } from 'express';
import { generatePDF } from './shared/utils';
import { GetPdfDto } from './users/dto/get-pdf.dto';
import { ConfigurationService } from './configuration/configuration.service';
private readonly logger = new Logger(AppController.name);
constructor(private configurationService: ConfigurationService) {}
const now = Date.now();
return {
status: 'API Online',
uptime: Number((now - this.start) / 1000).toFixed(0),
@Get('config')
async config() {
// temp IS_OPENSHIFT: on appsoc servers, GHOST_HOST_AND_PORT is local network server name
return {
ghostAdminUrl:
((process.env.IS_OPENSHIFT ? process.env.GHOST_HOST_AND_PORT : process.env.GHOST_URL_APPSOC) ||
'http://localhost:2368') + '/ghost/',
matomoTrackerUrl: process.env.MATOMO_URL,
matomoSiteId: process.env.MATOMO_SITEID,
};
}
@Post('/pdf')
@Header('Content-Type', 'application/pdf')
@Header('Cache-Control', 'no-cache, no-store, must-revalidate')
@Header('Pragma', 'no-cache')
@Header('Expires', '0')
async getPdf(@Body() body: GetPdfDto, @Res() res: Response): Promise<void> {
this.logger.log('getPdf: ' + JSON.stringify(body));
const buffer = await generatePDF(`${this.configurationService.appUrl}/${body.urlPath}`);
res.set({
'Content-Disposition': `attachment; filename=${body.fileName}`,
'Content-Length': buffer.length,
});
res.end(buffer);
}