api.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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: 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, params) {
  62. params = params || {}
  63. params.examId = examId
  64. return execute('/api/exam/student/count', 'POST', params)
  65. }
  66. module.exports.getPackages = function (examId, upload, withUrl) {
  67. let uri = '/api/package/count/' + examId
  68. let param = []
  69. if (upload != undefined) {
  70. param.push('upload=' + (upload ? 'true' : 'false'))
  71. }
  72. if (withUrl != undefined) {
  73. param.push('withUrl=' + (withUrl ? 'true' : 'false'))
  74. }
  75. if (param.length > 0) {
  76. uri = uri + '?' + param.join('&')
  77. }
  78. return execute(uri, 'GET')
  79. }