captcha_aggregator/src/controllers/api.js

38 lines
1.2 KiB
JavaScript

import CaptchaService from "../services/captcha.js";
import config from '../config.js';
import fs from 'fs/promises';
class ApiController {
async new(req, res) {
const id = await CaptchaService.new();
return res.status(200).send({"id": id});
}
async get(req, res) {
const id = req.params.id;
const hash = await CaptchaService.get(id);
if (hash == undefined) {
return res.status(404).send({"message": "captcha not found"});
}
const image = await fs.readFile(`${config.data_dir}/${hash}.jpeg`);
return res.status(200).send(image)
}
async solve (req, res) {
const id = req.params.id;
const solution = req.body["solution"];
if (solution == undefined || solution.length != 6) {
return res.status(400).send({"message": 'please, send a valid solution. Example: {"solution":"123456"}'});
}
if (!await CaptchaService.check_and_save_solution(id, solution))
return res.status(409).send({"message": "Solution is not correct"});
return res.status(200).send({"message": "Successful"});
}
}
export default new ApiController();