diff --git a/src/app/filters.coffee b/src/app/filters.coffee index 605e4ebb63..a7c1a87dcf 100644 --- a/src/app/filters.coffee +++ b/src/app/filters.coffee @@ -14,9 +14,7 @@ module.exports.app = (appExports, model) -> model.set '_newTag', '' appExports.toggleEditingTags = -> - before = model.get('_editingTags') - model.set '_editingTags', !before, -> - location.reload() if before is true #when they're done, refresh the page + model.set '_editingTags', !model.get('_editingTags') appExports.clearFilters = -> user.set 'filters', {} diff --git a/src/server/apiv2.coffee b/src/server/apiv2.coffee new file mode 100644 index 0000000000..db4e2d1a02 --- /dev/null +++ b/src/server/apiv2.coffee @@ -0,0 +1,61 @@ +express = require 'express' +router = new express.Router() +util = require('util') + +_ = require 'lodash' +algos = require 'habitrpg-shared/script/algos' +helpers = require 'habitrpg-shared/script/helpers' +validator = require 'derby-auth/node_modules/validator' +check = validator.check +sanitize = validator.sanitize +misc = require '../app/misc' + +NO_TOKEN_OR_UID = err: "You must include a token and uid (user id) in your request" +NO_USER_FOUND = err: "No user found." + +# ---------- /api/v1 API ------------ +# Every url added beneath router is prefaced by /api/v2 + +### + API Status +### +router.get '/status', (req, res) -> + res.json status: 'up' + +### + beforeEach auth interceptor +### +auth = (req, res, next) -> + uid = req.headers['x-api-user'] + token = req.headers['x-api-key'] + return res.json 401, NO_TOKEN_OR_UID unless uid || token + + model = req.getModel() + query = model.query('users').withIdAndToken(uid, token) + + query.fetch (err, user) -> + return res.json err: err if err + req.user = user + req.userObj = user.get() + return res.json 401, NO_USER_FOUND if !req.userObj || _.isEmpty(req.userObj) + req._isServer = true + next() + +### +POST new actions +### +router.post '/', auth, (req, res) -> + actions = req.body + if _.isArray actions + actions.forEach (action)-> + switch action.op + when score + {} + when newTask + req.user.set "tasks.#{req.task.id}", action.task + + console.log util.inspect req.body + + res.json 200, req.userObj + +module.exports = router \ No newline at end of file diff --git a/src/server/index.coffee b/src/server/index.coffee index 152b9a79c9..3f707666e2 100644 --- a/src/server/index.coffee +++ b/src/server/index.coffee @@ -80,6 +80,7 @@ mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, -> .use(middleware.translate) # API should be hit before all other routes .use('/api/v1', require('./api').middleware) + .use('/api/v2', require('./apiv2').middleware) .use(require('./deprecated').middleware) # Show splash page for newcomers .use(middleware.splash) diff --git a/views/app/filters.html b/views/app/filters.html index b2e58dc26e..31241af7bd 100644 --- a/views/app/filters.html +++ b/views/app/filters.html @@ -8,7 +8,7 @@ {#each _user.tags as :tag} -
  • +
  • {#if and(_editingTags,not(:tag.challenge))}
    @@ -29,7 +29,7 @@ {/}
  • - +
  • @@ -37,15 +37,15 @@ - + @@ -53,9 +53,9 @@
    Tags - {{#each _user.tags as :tag}} + {#each users[_userId].tags as :tag} - {{/}} + {/}
    \ No newline at end of file diff --git a/views/app/tasks.html b/views/app/tasks.html index 152a53dc07..2cd989db67 100644 --- a/views/app/tasks.html +++ b/views/app/tasks.html @@ -163,7 +163,7 @@ -
  • +