const CaptchaApi = require('./captcha-api'); const logger = global.yoho.logger; const config = global.yoho.config; const _ = require('lodash'); module.exports = class extends global.yoho.BaseModel { constructor(ctx) { super(ctx); this.api = new CaptchaApi(ctx); } generateCaptcha(id) { return this.api.gen(id) .then(result => { logger.info('get captcha from ', result.data.url); return result; }); } _checkUniverse(captcha) { return captcha === config.UNIVERSAL_CAPTCHA ? Promise.resolve({code: 200}) : Promise.reject(); } check(id, captcha) { return this.api.check(id, captcha) .then((result) => { logger.info(`app.verified.graphic [${captcha}] result: `, JSON.stringify(result)); return result; }) .then((result) => { if (result.code === 200) { return { code: 200, message: '验证成功' }; } else if (result.code === 503 || result.code === 504 || result.code === 501) { return { code: 403, message: result.message }; } else { return { code: 405, message: result.message, data: { needCaptcha: true } }; } }); } async try() { const result = await this.api.try(); return _.get(result, 'data', true); } };