api.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. const request = require('requestretry')
  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. timeout: 10000,
  11. form: form || {},
  12. headers: {
  13. 'auth-info': 'loginname=' + env.loginName + ';password=' + env.password
  14. },
  15. maxAttempts: 50,
  16. retryDelay: 500,
  17. retryStrategy: request.RetryStrategies.HTTPOrNetworkError
  18. }, function(error, response, body) {
  19. if (response.statusCode == 200) {
  20. resolve(body);
  21. } else {
  22. let message = response.statusCode + ' ' + (error || '') + (response.headers['error-info'] || '')
  23. logger.error(message)
  24. reject(message)
  25. }
  26. })
  27. })
  28. }
  29. module.exports.login = function() {
  30. return execute('/api/user/login?withSchoolList=true', 'GET');
  31. }
  32. module.exports.getExams = function(pageNumber, pageSize, schoolId) {
  33. let uri = '/api/exams'
  34. let param = [];
  35. if (pageNumber != undefined) {
  36. param.push('pageNumber=' + pageNumber)
  37. }
  38. if (pageSize != undefined) {
  39. param.push('pageSize=' + pageSize)
  40. }
  41. if (schoolId != undefined) {
  42. param.push('schoolId=' + schoolId)
  43. }
  44. if (param.length > 0) {
  45. uri = uri + '?' + param.join('&')
  46. }
  47. return execute(uri, 'GET');
  48. }
  49. module.exports.getStudents = function(examId, pageNumber, pageSize, upload, absent, withScoreDetail, withMarkTrack) {
  50. let form = {
  51. examId: examId,
  52. pageNumber: pageNumber,
  53. pageSize: pageSize
  54. }
  55. if (upload != undefined) {
  56. form.upload = upload
  57. }
  58. if (absent != undefined) {
  59. form.absent = absent
  60. }
  61. if (withScoreDetail != undefined) {
  62. form.withScoreDetail = withScoreDetail
  63. }
  64. if (withMarkTrack != undefined) {
  65. form.withMarkTrack = withMarkTrack
  66. }
  67. return execute('/api/exam/students', 'POST', form);
  68. }
  69. module.exports.countStudents = function(examId, upload, absent) {
  70. let uri = '/api/students/count/' + examId
  71. let param = [];
  72. if (upload != undefined) {
  73. param.push('upload=' + (upload ? 'true' : 'false'))
  74. }
  75. if (absent != undefined) {
  76. param.push('absent=' + (absent ? 'true' : 'false'))
  77. }
  78. if (param.length > 0) {
  79. uri = uri + '?' + param.join('&')
  80. }
  81. return execute(uri, 'GET');
  82. }
  83. module.exports.getPackages = function(examId, upload) {
  84. let uri = '/api/package/count/' + examId
  85. if (upload != undefined) {
  86. uri = uri + '?upload=' + (upload ? 'true' : false)
  87. }
  88. return execute(uri, 'GET');
  89. }