api.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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: 1000,
  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', 'GET');
  31. }
  32. module.exports.getExams = function(pageNumber, pageSize) {
  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 (param.length > 0) {
  42. uri = uri + '?' + param.join('&')
  43. }
  44. return execute(uri, 'GET');
  45. }
  46. module.exports.getStudents = function(examId, pageNumber, pageSize, upload, absent, withScoreDetail, withMarkTrack) {
  47. let form = {
  48. examId: examId,
  49. pageNumber: pageNumber,
  50. pageSize: pageSize
  51. }
  52. if (upload != undefined) {
  53. form.upload = upload
  54. }
  55. if (absent != undefined) {
  56. form.absent = absent
  57. }
  58. if (withScoreDetail != undefined) {
  59. form.withScoreDetail = withScoreDetail
  60. }
  61. if (withMarkTrack != undefined) {
  62. form.withMarkTrack = withMarkTrack
  63. }
  64. return execute('/api/exam/students', 'POST', form);
  65. }
  66. module.exports.countStudents = function(examId, upload, absent) {
  67. let uri = '/api/students/count/' + examId
  68. let param = [];
  69. if (upload != undefined) {
  70. param.push('upload=' + (upload ? 'true' : 'false'))
  71. }
  72. if (absent != undefined) {
  73. param.push('absent=' + (absent ? 'true' : 'false'))
  74. }
  75. if (param.length > 0) {
  76. uri = uri + '?' + param.join('&')
  77. }
  78. return execute(uri, 'GET');
  79. }
  80. module.exports.getPackages = function(examId, upload) {
  81. let uri = '/api/package/count/' + examId
  82. if (upload != undefined) {
  83. uri = uri + '?upload=' + (upload ? 'true' : false)
  84. }
  85. return execute(uri, 'GET');
  86. }