api.js 2.7 KB

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