api.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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, params) {
  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. if (params != undefined) {
  68. for (let key in params) {
  69. if (params[key] && params[key] != '') {
  70. form[key] = params[key]
  71. }
  72. }
  73. }
  74. return execute('/api/exam/students', 'POST', form);
  75. }
  76. module.exports.countStudents = function(examId, upload, absent) {
  77. let uri = '/api/students/count/' + examId
  78. let param = [];
  79. if (upload != undefined) {
  80. param.push('upload=' + (upload ? 'true' : 'false'))
  81. }
  82. if (absent != undefined) {
  83. param.push('absent=' + (absent ? 'true' : 'false'))
  84. }
  85. if (param.length > 0) {
  86. uri = uri + '?' + param.join('&')
  87. }
  88. return execute(uri, 'GET');
  89. }
  90. module.exports.getPackages = function(examId, upload) {
  91. let uri = '/api/package/count/' + examId
  92. if (upload != undefined) {
  93. uri = uri + '?upload=' + (upload ? 'true' : false)
  94. }
  95. return execute(uri, 'GET');
  96. }