| import {Controller, Post} from 'simple-ts-express-decorators';
|
| import multer, {memoryStorage} from 'multer';
|
| import {Request, Response} from 'express';
|
| import {NsfwImageClassifier} from 'app/NsfwImageClassifier';
|
|
|
| const upload = multer({storage: memoryStorage()});
|
|
|
| @Controller()
|
| export class NsfwController {
|
| classifier: NsfwImageClassifier;
|
|
|
| constructor() {
|
| this.classifier = new NsfwImageClassifier();
|
| }
|
|
|
| @Post('/classify', upload.single('image'))
|
| async classify(request: Request, response: Response) {
|
| if (!request.file) {
|
| return response
|
| .status(410)
|
| .json({error: 'Specify image'});
|
| }
|
|
|
| const data = await this.classifier.classify(request.file.buffer);
|
|
|
| return response.json(data);
|
| }
|
|
|
| @Post('/classify-many', upload.array('images', 10))
|
| async classifyMany(request: Request, response: Response) {
|
| if (!request.files || !request.files.length) {
|
| return response
|
| .status(410)
|
| .json({error: 'Specify images'});
|
| }
|
|
|
| const buffers = (request.files as Express.Multer.File[]).map(file => file.buffer);
|
| const data = await this.classifier.classifyMany(buffers);
|
|
|
| return response.json(data);
|
| }
|
| }
|
|
|