ChatApiHandler.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /* eslint-disable
  2. camelcase,
  3. handle-callback-err,
  4. max-len,
  5. */
  6. // TODO: This file was created by bulk-decaffeinate.
  7. // Fix any style issues and re-enable lint.
  8. /*
  9. * decaffeinate suggestions:
  10. * DS102: Remove unnecessary code created because of implicit returns
  11. * DS207: Consider shorter variations of null checks
  12. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  13. */
  14. let ChatApiHandler
  15. const OError = require('@overleaf/o-error')
  16. const request = require('request')
  17. const settings = require('settings-sharelatex')
  18. module.exports = ChatApiHandler = {
  19. _apiRequest(opts, callback) {
  20. if (callback == null) {
  21. callback = function(error, data) {}
  22. }
  23. return request(opts, function(error, response, data) {
  24. if (error != null) {
  25. return callback(error)
  26. }
  27. if (response.statusCode >= 200 && response.statusCode < 300) {
  28. return callback(null, data)
  29. } else {
  30. error = new OError(
  31. `chat api returned non-success code: ${response.statusCode}`,
  32. opts
  33. )
  34. error.statusCode = response.statusCode
  35. return callback(error)
  36. }
  37. })
  38. },
  39. sendGlobalMessage(project_id, user_id, content, callback) {
  40. return ChatApiHandler._apiRequest(
  41. {
  42. url: `${
  43. settings.apis.chat.internal_url
  44. }/project/${project_id}/messages`,
  45. method: 'POST',
  46. json: { user_id, content }
  47. },
  48. callback
  49. )
  50. },
  51. getGlobalMessages(project_id, limit, before, callback) {
  52. const qs = {}
  53. if (limit != null) {
  54. qs.limit = limit
  55. }
  56. if (before != null) {
  57. qs.before = before
  58. }
  59. return ChatApiHandler._apiRequest(
  60. {
  61. url: `${
  62. settings.apis.chat.internal_url
  63. }/project/${project_id}/messages`,
  64. method: 'GET',
  65. qs,
  66. json: true
  67. },
  68. callback
  69. )
  70. },
  71. sendComment(project_id, thread_id, user_id, content, callback) {
  72. if (callback == null) {
  73. callback = function(error) {}
  74. }
  75. return ChatApiHandler._apiRequest(
  76. {
  77. url: `${
  78. settings.apis.chat.internal_url
  79. }/project/${project_id}/thread/${thread_id}/messages`,
  80. method: 'POST',
  81. json: { user_id, content }
  82. },
  83. callback
  84. )
  85. },
  86. getThreads(project_id, callback) {
  87. if (callback == null) {
  88. callback = function(error) {}
  89. }
  90. return ChatApiHandler._apiRequest(
  91. {
  92. url: `${settings.apis.chat.internal_url}/project/${project_id}/threads`,
  93. method: 'GET',
  94. json: true
  95. },
  96. callback
  97. )
  98. },
  99. resolveThread(project_id, thread_id, user_id, callback) {
  100. if (callback == null) {
  101. callback = function(error) {}
  102. }
  103. return ChatApiHandler._apiRequest(
  104. {
  105. url: `${
  106. settings.apis.chat.internal_url
  107. }/project/${project_id}/thread/${thread_id}/resolve`,
  108. method: 'POST',
  109. json: { user_id }
  110. },
  111. callback
  112. )
  113. },
  114. reopenThread(project_id, thread_id, callback) {
  115. if (callback == null) {
  116. callback = function(error) {}
  117. }
  118. return ChatApiHandler._apiRequest(
  119. {
  120. url: `${
  121. settings.apis.chat.internal_url
  122. }/project/${project_id}/thread/${thread_id}/reopen`,
  123. method: 'POST'
  124. },
  125. callback
  126. )
  127. },
  128. deleteThread(project_id, thread_id, callback) {
  129. if (callback == null) {
  130. callback = function(error) {}
  131. }
  132. return ChatApiHandler._apiRequest(
  133. {
  134. url: `${
  135. settings.apis.chat.internal_url
  136. }/project/${project_id}/thread/${thread_id}`,
  137. method: 'DELETE'
  138. },
  139. callback
  140. )
  141. },
  142. editMessage(project_id, thread_id, message_id, content, callback) {
  143. if (callback == null) {
  144. callback = function(error) {}
  145. }
  146. return ChatApiHandler._apiRequest(
  147. {
  148. url: `${
  149. settings.apis.chat.internal_url
  150. }/project/${project_id}/thread/${thread_id}/messages/${message_id}/edit`,
  151. method: 'POST',
  152. json: {
  153. content
  154. }
  155. },
  156. callback
  157. )
  158. },
  159. deleteMessage(project_id, thread_id, message_id, callback) {
  160. if (callback == null) {
  161. callback = function(error) {}
  162. }
  163. return ChatApiHandler._apiRequest(
  164. {
  165. url: `${
  166. settings.apis.chat.internal_url
  167. }/project/${project_id}/thread/${thread_id}/messages/${message_id}`,
  168. method: 'DELETE'
  169. },
  170. callback
  171. )
  172. }
  173. }