|
@@ -5,18 +5,24 @@ logger = require("logger-sharelatex")
|
|
|
|
|
|
|
|
TIMEOUT = 1000
|
|
TIMEOUT = 1000
|
|
|
module.exports = TagsHandler =
|
|
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)
|
|
|
|
|
|
|
+ getAllTags: (user_id, callback)->
|
|
|
|
|
+ @_requestTags user_id, (err, allTags)=>
|
|
|
|
|
+ if !allTags?
|
|
|
|
|
+ allTags = []
|
|
|
|
|
+ @_groupTagsByProject allTags, (err, groupedByProject)->
|
|
|
|
|
+ logger.log allTags:allTags, user_id:user_id, groupedByProject:groupedByProject, "got all tags from tags api"
|
|
|
|
|
+ callback err, allTags, groupedByProject
|
|
|
|
|
+
|
|
|
|
|
+ createTag: (user_id, name, callback = (error, tag) ->) ->
|
|
|
|
|
+ opts =
|
|
|
|
|
+ url: "#{settings.apis.tags.url}/user/#{user_id}/tag"
|
|
|
|
|
+ json:
|
|
|
|
|
+ name: name
|
|
|
|
|
+ timeout: TIMEOUT
|
|
|
|
|
+ request.post opts, (err, res, body)->
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {user_id}, (error) ->
|
|
|
|
|
+ return callback(error) if error?
|
|
|
|
|
+ callback(null, body or {})
|
|
|
|
|
|
|
|
renameTag: (user_id, tag_id, name, callback = (error) ->) ->
|
|
renameTag: (user_id, tag_id, name, callback = (error) ->) ->
|
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/rename"
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/rename"
|
|
@@ -26,50 +32,55 @@ module.exports = TagsHandler =
|
|
|
name: name
|
|
name: name
|
|
|
timeout: TIMEOUT
|
|
timeout: TIMEOUT
|
|
|
}, (err, res, body) ->
|
|
}, (err, res, body) ->
|
|
|
- TagsHandler._handleResponse res, {url, user_id, tag_id, name}, callback
|
|
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {url, user_id, tag_id, name}, callback
|
|
|
|
|
|
|
|
deleteTag: (user_id, tag_id, callback = (error) ->) ->
|
|
deleteTag: (user_id, tag_id, callback = (error) ->) ->
|
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}"
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}"
|
|
|
request.del {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
request.del {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
|
- TagsHandler._handleResponse res, {url, user_id, tag_id}, callback
|
|
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {url, user_id, tag_id}, callback
|
|
|
|
|
|
|
|
removeProjectFromTag: (user_id, tag_id, project_id, callback)->
|
|
removeProjectFromTag: (user_id, tag_id, project_id, callback)->
|
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/project/#{project_id}"
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/project/#{project_id}"
|
|
|
request.del {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
request.del {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
|
- TagsHandler._handleResponse res, {url, user_id, tag_id, project_id}, callback
|
|
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {url, user_id, tag_id, project_id}, callback
|
|
|
|
|
|
|
|
addProjectToTag: (user_id, tag_id, project_id, callback)->
|
|
addProjectToTag: (user_id, tag_id, project_id, callback)->
|
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/project/#{project_id}"
|
|
url = "#{settings.apis.tags.url}/user/#{user_id}/tag/#{tag_id}/project/#{project_id}"
|
|
|
request.post {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
request.post {url, timeout: TIMEOUT}, (err, res, body) ->
|
|
|
- TagsHandler._handleResponse res, {url, user_id, tag_id, project_id}, callback
|
|
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {url, user_id, tag_id, project_id}, callback
|
|
|
|
|
+
|
|
|
|
|
+ removeProjectFromAllTags: (user_id, project_id, callback)->
|
|
|
|
|
+ url = "#{settings.apis.tags.url}/user/#{user_id}/project/#{project_id}"
|
|
|
|
|
+ opts =
|
|
|
|
|
+ url: url
|
|
|
|
|
+ timeout:TIMEOUT
|
|
|
|
|
+ request.del opts, (err, res, body) ->
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {url, user_id, project_id}, callback
|
|
|
|
|
+
|
|
|
|
|
+ _handleResponse: (err, 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)
|
|
|
|
|
|
|
|
- requestTags: (user_id, callback)->
|
|
|
|
|
|
|
+ _requestTags: (user_id, callback)->
|
|
|
opts =
|
|
opts =
|
|
|
url: "#{settings.apis.tags.url}/user/#{user_id}/tag"
|
|
url: "#{settings.apis.tags.url}/user/#{user_id}/tag"
|
|
|
json: true
|
|
json: true
|
|
|
timeout: TIMEOUT
|
|
timeout: TIMEOUT
|
|
|
request.get opts, (err, res, body)->
|
|
request.get opts, (err, res, body)->
|
|
|
- TagsHandler._handleResponse res, {user_id}, (error) ->
|
|
|
|
|
|
|
+ TagsHandler._handleResponse err, res, {user_id}, (error) ->
|
|
|
return callback(error, []) if error?
|
|
return callback(error, []) if error?
|
|
|
callback(null, body or [])
|
|
callback(null, body or [])
|
|
|
|
|
|
|
|
- getAllTags: (user_id, callback)->
|
|
|
|
|
- @requestTags user_id, (err, allTags)=>
|
|
|
|
|
- if !allTags?
|
|
|
|
|
- allTags = []
|
|
|
|
|
- @groupTagsByProject allTags, (err, groupedByProject)->
|
|
|
|
|
- logger.log allTags:allTags, user_id:user_id, groupedByProject:groupedByProject, "getting all tags from tags api"
|
|
|
|
|
- callback err, allTags, groupedByProject
|
|
|
|
|
-
|
|
|
|
|
- removeProjectFromAllTags: (user_id, project_id, callback)->
|
|
|
|
|
- uri = buildUri(user_id, project_id)
|
|
|
|
|
- opts =
|
|
|
|
|
- uri:"#{settings.apis.tags.url}/user/#{user_id}/project/#{project_id}"
|
|
|
|
|
- timeout:TIMEOUT
|
|
|
|
|
- logger.log user_id:user_id, project_id:project_id, "removing project_id from tags"
|
|
|
|
|
- request.del opts, callback
|
|
|
|
|
-
|
|
|
|
|
- groupTagsByProject: (tags, callback)->
|
|
|
|
|
|
|
+ _groupTagsByProject: (tags, callback)->
|
|
|
result = {}
|
|
result = {}
|
|
|
_.each tags, (tag)->
|
|
_.each tags, (tag)->
|
|
|
_.each tag.project_ids, (project_id)->
|
|
_.each tag.project_ids, (project_id)->
|
|
@@ -81,7 +92,3 @@ module.exports = TagsHandler =
|
|
|
delete clonedTag.project_ids
|
|
delete clonedTag.project_ids
|
|
|
result[project_id].push(clonedTag)
|
|
result[project_id].push(clonedTag)
|
|
|
callback null, result
|
|
callback null, result
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-buildUri = (user_id, project_id)->
|
|
|
|
|
- uri = "#{settings.apis.tags.url}/user/#{user_id}/project/#{project_id}/tag"
|
|
|