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); } }