30 lines
900 B
TypeScript
30 lines
900 B
TypeScript
import { Controller, Get, Query, Res } from '@nestjs/common';
|
|
import { ApiSecurity, ApiTags } from '@nestjs/swagger';
|
|
import { Response } from 'express';
|
|
import { Readable } from 'stream';
|
|
|
|
import { SessionManager } from '../core/abc/manager.abc';
|
|
import { SessionQuery } from '../structures/base.dto';
|
|
|
|
@ApiSecurity('api_key')
|
|
@Controller('api')
|
|
@ApiTags('screenshot')
|
|
export class ScreenshotController {
|
|
constructor(private manager: SessionManager) {}
|
|
|
|
@Get('/screenshot')
|
|
async screenshot(@Res() res: Response, @Query() sessionQuery: SessionQuery) {
|
|
const whatsappService = this.manager.getSession(sessionQuery.session);
|
|
const buffer = await whatsappService.getScreenshot();
|
|
const stream = new Readable();
|
|
stream.push(buffer);
|
|
stream.push(null);
|
|
|
|
res.set({
|
|
'Content-Type': 'image/png',
|
|
'Content-Length': buffer.length,
|
|
});
|
|
stream.pipe(res);
|
|
}
|
|
}
|