const request = require('request') const env = require('./env.js') const logger = require('./logger.js')('api.js') async function execute(uri, method, form) { return new Promise((resolve, reject) => { request({ url: 'http://' + env.server.host + uri, method: method, json: true, form: form || {}, headers: { 'auth-info': 'loginname=' + env.loginName + ';password=' + env.password } }, function (error, response, body) { if (response.statusCode == 200) { resolve(body); } else { let message = response.statusCode + ' ' + (error || '') + (response.headers['error-info'] || '') logger.error(message) reject(message) } }) }) } module.exports.login = function () { return execute('/api/user/login', 'GET'); } module.exports.getExams = function (pageNumber, pageSize) { let uri = '/api/exams' let param = []; if (pageNumber != undefined) { param.push('pageNumber=' + pageNumber) } if (pageSize != undefined) { param.push('pageSize=' + pageSize) } if (param.length > 0) { uri = uri + '?' + param.join('&') } return execute(uri, 'GET'); } module.exports.getStudents = function (examId, pageNumber, pageSize, upload, absent, withScoreDetail) { let form = { examId: examId, pageNumber: pageNumber, pageSize: pageSize } if (upload != undefined) { form.upload = upload } if (absent != undefined) { form.absent = absent } if (withScoreDetail != undefined) { form.withScoreDetail = withScoreDetail } return execute('/api/exam/students', 'POST', form); } module.exports.countStudents = function (examId, upload, absent) { let uri = '/api/students/count/' + examId let param = []; if (upload != undefined) { param.push('upload=' + (upload ? 'true' : 'false')) } if (absent != undefined) { param.push('absent=' + (absent ? 'true' : 'false')) } if (param.length > 0) { uri = uri + '?' + param.join('&') } return execute(uri, 'GET'); } module.exports.getPackages = function (examId, upload) { let uri = '/api/package/count/' + examId if (upload != undefined) { uri = uri + '?upload=' + (upload ? 'true' : false) } return execute(uri, 'GET'); }