api.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. const request = require('request')
  2. const env = require('./env.js')
  3. const logger = require('./logger.js')('api.js')
  4. async function execute(uri, method, form) {
  5. return new Promise((resolve, reject) => {
  6. request({
  7. url: 'http://' + env.server.host + uri,
  8. method: method,
  9. json: true,
  10. form: form || {},
  11. headers: {
  12. 'auth-info': 'loginname=' + env.loginName + ';password=' + env.password
  13. }
  14. }, function (error, response, body) {
  15. if (response.statusCode == 200) {
  16. resolve(body);
  17. } else {
  18. let message = response.statusCode + ' ' + (error || '') + (response.headers['error-info'] || '')
  19. logger.error(message)
  20. reject(message)
  21. }
  22. })
  23. })
  24. }
  25. module.exports.login = function () {
  26. return execute('/api/user/login', 'GET');
  27. }
  28. module.exports.getExams = function (pageNumber, pageSize) {
  29. let uri = '/api/exams'
  30. let param = [];
  31. if (pageNumber != undefined) {
  32. param.push('pageNumber=' + pageNumber)
  33. }
  34. if (pageSize != undefined) {
  35. param.push('pageSize=' + pageSize)
  36. }
  37. if (param.length > 0) {
  38. uri = uri + '?' + param.join('&')
  39. }
  40. return execute(uri, 'GET');
  41. }
  42. module.exports.getStudents = function (examId, pageNumber, pageSize, upload, absent, withScoreDetail) {
  43. let form = {
  44. examId: examId,
  45. pageNumber: pageNumber,
  46. pageSize: pageSize
  47. }
  48. if (upload != undefined) {
  49. form.upload = upload
  50. }
  51. if (absent != undefined) {
  52. form.absent = absent
  53. }
  54. if (withScoreDetail != undefined) {
  55. form.withScoreDetail = withScoreDetail
  56. }
  57. return execute('/api/exam/students', 'POST', form);
  58. }
  59. module.exports.countStudents = function (examId, upload, absent) {
  60. let uri = '/api/students/count/' + examId
  61. let param = [];
  62. if (upload != undefined) {
  63. param.push('upload=' + (upload ? 'true' : 'false'))
  64. }
  65. if (absent != undefined) {
  66. param.push('absent=' + (absent ? 'true' : 'false'))
  67. }
  68. if (param.length > 0) {
  69. uri = uri + '?' + param.join('&')
  70. }
  71. return execute(uri, 'GET');
  72. }
  73. module.exports.getPackages = function (examId, upload) {
  74. let uri = '/api/package/count/' + examId
  75. if (upload != undefined) {
  76. uri = uri + '?upload=' + (upload ? 'true' : false)
  77. }
  78. return execute(uri, 'GET');
  79. }