2016-12-16 11:42:41 -05:00
|
|
|
request = require("request")
|
|
|
|
settings = require("settings-sharelatex")
|
|
|
|
logger = require("logger-sharelatex")
|
|
|
|
|
|
|
|
module.exports = ChatApiHandler =
|
|
|
|
_apiRequest: (opts, callback = (error, data) ->) ->
|
|
|
|
request opts, (error, response, data) ->
|
|
|
|
return callback(error) if error?
|
|
|
|
if 200 <= response.statusCode < 300
|
|
|
|
return callback null, data
|
|
|
|
else
|
|
|
|
error = new Error("chat api returned non-success code: #{response.statusCode}")
|
|
|
|
error.statusCode = response.statusCode
|
|
|
|
logger.error {err: error, opts}, "error sending request to chat api"
|
|
|
|
return callback error
|
|
|
|
|
|
|
|
sendGlobalMessage: (project_id, user_id, content, callback)->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/messages"
|
|
|
|
method: "POST"
|
|
|
|
json: {user_id, content}
|
|
|
|
}, callback
|
|
|
|
|
|
|
|
getGlobalMessages: (project_id, limit, before, callback)->
|
|
|
|
qs = {}
|
|
|
|
qs.limit = limit if limit?
|
|
|
|
qs.before = before if before?
|
|
|
|
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/messages"
|
|
|
|
method: "GET"
|
|
|
|
qs: qs
|
|
|
|
json: true
|
|
|
|
}, callback
|
|
|
|
|
|
|
|
sendComment: (project_id, thread_id, user_id, content, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages"
|
|
|
|
method: "POST"
|
|
|
|
json: {user_id, content}
|
|
|
|
}, callback
|
|
|
|
|
|
|
|
getThreads: (project_id, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/threads"
|
|
|
|
method: "GET"
|
|
|
|
json: true
|
2017-01-04 10:26:02 -05:00
|
|
|
}, callback
|
|
|
|
|
|
|
|
resolveThread: (project_id, thread_id, user_id, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/resolve"
|
|
|
|
method: "POST"
|
|
|
|
json: {user_id}
|
|
|
|
}, callback
|
|
|
|
|
|
|
|
reopenThread: (project_id, thread_id, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/reopen"
|
|
|
|
method: "POST"
|
2017-01-24 10:18:49 -05:00
|
|
|
}, callback
|
|
|
|
|
|
|
|
deleteThread: (project_id, thread_id, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}"
|
|
|
|
method: "DELETE"
|
|
|
|
}, callback
|
|
|
|
|
|
|
|
editMessage: (project_id, thread_id, message_id, content, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages/#{message_id}/edit"
|
|
|
|
method: "POST"
|
|
|
|
json:
|
|
|
|
content: content
|
|
|
|
}, callback
|
|
|
|
|
|
|
|
deleteMessage: (project_id, thread_id, message_id, callback = (error) ->) ->
|
|
|
|
ChatApiHandler._apiRequest {
|
|
|
|
url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages/#{message_id}"
|
|
|
|
method: "DELETE"
|
|
|
|
}, callback
|
|
|
|
|