mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-05 12:02:13 +00:00
APIv2 init
This commit is contained in:
parent
60948e7881
commit
73d71a0be1
2 changed files with 54 additions and 0 deletions
53
src/server/apiv2.coffee
Normal file
53
src/server/apiv2.coffee
Normal file
|
|
@ -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
|
||||||
|
|
@ -80,6 +80,7 @@ mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
|
||||||
.use(middleware.translate)
|
.use(middleware.translate)
|
||||||
# API should be hit before all other routes
|
# API should be hit before all other routes
|
||||||
.use('/api/v1', require('./api').middleware)
|
.use('/api/v1', require('./api').middleware)
|
||||||
|
.use('/api/v2', require('./apiv2').middleware)
|
||||||
.use(require('./deprecated').middleware)
|
.use(require('./deprecated').middleware)
|
||||||
# Show splash page for newcomers
|
# Show splash page for newcomers
|
||||||
.use(middleware.splash)
|
.use(middleware.splash)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue