WebUtils.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /**
  2. * WebUtils.js
  3. *
  4. * @author realor
  5. */
  6. class WebUtils {
  7. static getHttpStatusMessage(status) {
  8. let message
  9. switch (status) {
  10. case 200:
  11. message = 'OK'
  12. break
  13. case 400:
  14. message = 'Bad request'
  15. break
  16. case 401:
  17. message = 'Unathorized'
  18. break
  19. case 403:
  20. message = 'Access forbidden'
  21. break
  22. case 404:
  23. message = 'Not found'
  24. break
  25. case 405:
  26. message = 'Not allowed'
  27. break
  28. case 500:
  29. message = 'Internal server error'
  30. break
  31. case 501:
  32. message = 'Not implemented'
  33. break
  34. default:
  35. message = ''
  36. }
  37. return message
  38. }
  39. static setBasicAuthorization(request, username, password) {
  40. if (username !== null && username.length > 0 && password !== null && password.length > 0) {
  41. const userPass = username + ':' + password
  42. request.setRequestHeader('Authorization', 'Basic ' + btoa(userPass))
  43. }
  44. }
  45. static getQueryParams() {
  46. var queryString = {}
  47. var query = window.location.search.substring(1)
  48. var pairs = query.split('&')
  49. for (var i = 0; i < pairs.length; i++) {
  50. var index = pairs[i].indexOf('=')
  51. if (index !== -1) {
  52. var name = decodeURIComponent(pairs[i].substring(0, index))
  53. var value = decodeURIComponent(pairs[i].substring(index + 1))
  54. if (typeof queryString[name] === 'undefined') {
  55. queryString[name] = value
  56. } else if (typeof queryString[name] === 'string') {
  57. var arr = [queryString[name], value]
  58. queryString[name] = arr
  59. } else {
  60. queryString[name].push(value)
  61. }
  62. }
  63. }
  64. return queryString
  65. }
  66. static toHTML(text) {
  67. var html = ''
  68. var ch, i
  69. for (i = 0; i < text.length; i++) {
  70. ch = text.charAt(i)
  71. if (ch === '<') html += '&lt;'
  72. else if (ch === '>') html += '&gt;'
  73. else if (ch === '&') html += '&amp;'
  74. else html += ch
  75. }
  76. return html
  77. }
  78. /**
  79. *
  80. * @param {type} tasks to execute
  81. * @param {type} onCompleted callback
  82. * @param {type} onProgress callback
  83. * @param {type} onError callback
  84. * @param {type} notifyMillis
  85. * @param {type} delay
  86. * @returns undefined
  87. *
  88. * task : { run : fn, message: string, iterations: fn }
  89. */
  90. static executeTasks(tasks, onCompleted, onProgress, onError, notifyMillis, delay) {
  91. notifyMillis = notifyMillis || 100
  92. delay = delay || 10
  93. var postTask = function(i, j) {
  94. var task = tasks[i]
  95. var iterations = task.iterations ? task.iterations() : 1
  96. var message = task.message
  97. if (iterations > 1) {
  98. message += ' (' + j + ' / ' + iterations + ')'
  99. }
  100. if (onProgress) {
  101. var taskPerc = 100.0 / tasks.length
  102. var percentage = Math.round((i + j / iterations) * taskPerc)
  103. onProgress({ progress: percentage, message: message })
  104. }
  105. setTimeout(function() {
  106. var t0 = Date.now()
  107. do {
  108. try {
  109. task.run(j++)
  110. } catch (ex) {
  111. if (onError) onError(ex)
  112. return
  113. }
  114. } while (j < iterations && Date.now() - t0 < notifyMillis)
  115. if (j < iterations) {
  116. postTask(i, j)
  117. } else {
  118. i++
  119. if (i < tasks.length) {
  120. postTask(i, 0)
  121. } else if (onCompleted) {
  122. if (onProgress) {
  123. onProgress({ progress: 100, message: 'Completed.' })
  124. setTimeout(onCompleted, 100)
  125. } else {
  126. onCompleted()
  127. }
  128. }
  129. }
  130. }, delay)
  131. }
  132. postTask(0, 0)
  133. }
  134. }
  135. export { WebUtils }