From 73d71a0be16978f8f51751a3c91af5ab10c4e3ea Mon Sep 17 00:00:00 2001 From: yangit Date: Fri, 31 May 2013 20:28:54 +0800 Subject: [PATCH] APIv2 init --- src/server/apiv2.coffee | 53 +++++++++++++++++++++++++++++++++++++++++ src/server/index.coffee | 1 + 2 files changed, 54 insertions(+) create mode 100644 src/server/apiv2.coffee diff --git a/src/server/apiv2.coffee b/src/server/apiv2.coffee new file mode 100644 index 0000000000..f54c269c81 --- /dev/null +++ b/src/server/apiv2.coffee @@ -0,0 +1,53 @@ +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) -> + if _.isArray req.body + 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)