|
|
@@ -3,47 +3,40 @@ settings = require("settings-sharelatex")
|
|
|
request = require("request")
|
|
|
logger = require("logger-sharelatex")
|
|
|
|
|
|
-oneSecond = 1000
|
|
|
-module.exports =
|
|
|
+TIMEOUT = 1000
|
|
|
+module.exports = TagsHandler =
|
|
|
+ _handleResponse: (res, params, callback) ->
|
|
|
+ if err?
|
|
|
+ params.err = err
|
|
|
+ logger.err params, "error in tag api"
|
|
|
+ return callback(err)
|
|
|
+ else if res? and res.statusCode >= 200 and res.statusCode < 300
|
|
|
+ return callback(null)
|
|
|
+ else
|
|
|
+ err = new Error("tags api returned a failure status code: #{res?.statusCode}")
|
|
|
+ params.err = err
|
|
|
+ logger.err params, "tags api returned failure status code: #{res?.statusCode}"
|
|
|
+ return callback(err)
|
|
|
+
|
|
|
renameTag: (user_id, tag_id, name, callback = (error) ->) ->
|
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/rename"
|
|
|
request.post {
|
|
|
url: url
|
|
|
json:
|
|
|
name: name
|
|
|
+ timeout: TIMEOUT
|
|
|
}, (err, res, body) ->
|
|
|
- if err?
|
|
|
- logger.err {err, user_id, tag_id, name}, "error renaming tag in tag api"
|
|
|
- return callback(err)
|
|
|
- else if res.statusCode >= 200 and res.statusCode < 300
|
|
|
- return callback(null)
|
|
|
- else
|
|
|
- err = new Error("tags api returned a failure status code: #{res.statusCode}")
|
|
|
- logger.err {err, user_id, tag_id, name}, "tags api returned failure status code: #{res.statusCode}"
|
|
|
- return callback(err)
|
|
|
+ TagsHandler._handleResponse res, {url, user_id, tag_id, name}, callback
|
|
|
|
|
|
deleteTag: (user_id, tag_id, callback = (error) ->) ->
|
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}"
|
|
|
- request.del url, (err, res, body) ->
|
|
|
- if err?
|
|
|
- logger.err {err, user_id, tag_id}, "error deleting tag from tag api"
|
|
|
- return callback(err)
|
|
|
- else if res.statusCode >= 200 and res.statusCode < 300
|
|
|
- return callback(null)
|
|
|
- else
|
|
|
- err = new Error("tags api returned a failure status code: #{res.statusCode}")
|
|
|
- logger.err {err, user_id, tag_id}, "tags api returned failure status code: #{res.statusCode}"
|
|
|
- return callback(err)
|
|
|
+ request.del {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
|
+ TagsHandler._handleResponse res, {url, user_id, tag_id}, callback
|
|
|
|
|
|
- removeProject: (user_id, project_id, tag, callback)->
|
|
|
- uri = buildUri(user_id, project_id)
|
|
|
- opts =
|
|
|
- uri:uri
|
|
|
- json:
|
|
|
- name:tag
|
|
|
- timeout:oneSecond
|
|
|
- logger.log user_id:user_id, project_id:project_id, tag:tag, "send delete tag to tags api"
|
|
|
- request.del opts, callback
|
|
|
+ removeProjectFromTag: (user_id, tag_id, project_id, callback)->
|
|
|
+ url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/project/#{project_id}"
|
|
|
+ request.del {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
|
+ TagsHandler._handleResponse res, {url, user_id, tag_id, project_id}, callback
|
|
|
|
|
|
addTag: (user_id, project_id, tag, callback)->
|
|
|
uri = buildUri(user_id, project_id)
|
|
|
@@ -51,23 +44,19 @@ module.exports =
|
|
|
uri:uri
|
|
|
json:
|
|
|
name:tag
|
|
|
- timeout:oneSecond
|
|
|
+ timeout: TIMEOUT
|
|
|
logger.log user_id:user_id, project_id:project_id, tag:tag, "send add tag to tags api"
|
|
|
request.post opts, callback
|
|
|
|
|
|
requestTags: (user_id, callback)->
|
|
|
opts =
|
|
|
- uri: "#{settings.apis.tags.url}/user/#{user_id}/tag"
|
|
|
+ url: "#{settings.apis.tags.url}/user/#{user_id}/tag"
|
|
|
json: true
|
|
|
- timeout: 2000
|
|
|
+ timeout: TIMEOUT
|
|
|
request.get opts, (err, res, body)->
|
|
|
- statusCode = if res? then res.statusCode else 500
|
|
|
- if err? or statusCode != 200
|
|
|
- e = new Error("something went wrong getting tags, #{err}, #{statusCode}")
|
|
|
- logger.err err:err
|
|
|
- callback(e, [])
|
|
|
- else
|
|
|
- callback(null, body)
|
|
|
+ TagsHandler._handleResponse res, {user_id}, (error) ->
|
|
|
+ return callback(error, []) if error?
|
|
|
+ callback(null, body or [])
|
|
|
|
|
|
getAllTags: (user_id, callback)->
|
|
|
@requestTags user_id, (err, allTags)=>
|
|
|
@@ -81,7 +70,7 @@ module.exports =
|
|
|
uri = buildUri(user_id, project_id)
|
|
|
opts =
|
|
|
uri:"#{settings.apis.tags.url}/user/#{user_id}/project/#{project_id}"
|
|
|
- timeout:oneSecond
|
|
|
+ timeout:TIMEOUT
|
|
|
logger.log user_id:user_id, project_id:project_id, "removing project_id from tags"
|
|
|
request.del opts, callback
|
|
|
|