mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-07-31 19:20:25 +00:00
Working again
This commit is contained in:
parent
02569c2dfa
commit
177c7e4f17
6 changed files with 30 additions and 27 deletions
|
|
@ -5,7 +5,7 @@
|
|||
"main": "./server.js",
|
||||
"dependencies": {
|
||||
"derby": "git://github.com/lefnire/derby#habitrpg",
|
||||
"racer": "git://github.com/lefnire/racer#habitrpg",
|
||||
"racer": "git://github.com/switz/racer#master",
|
||||
"racer-db-mongo": "git://github.com/lefnire/racer-db-mongo#habitrpg",
|
||||
"derby-ui-boot": "git://github.com/codeparty/derby-ui-boot#master",
|
||||
"derby-auth": "git://github.com/lefnire/derby-auth#master",
|
||||
|
|
@ -27,8 +27,7 @@
|
|||
"querystring": "~0.1.0",
|
||||
"superagent": "~0.12.4",
|
||||
"resolve": "~0.2.3",
|
||||
"browserify": "1.17.3",
|
||||
"validator": "~0.4.24"
|
||||
"browserify": "1.17.3"
|
||||
},
|
||||
"private": true,
|
||||
"subdomain": "habitrpg",
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
// Load nconf and define default configuration values if config.json or ENV vars are not found
|
||||
var conf = require('nconf');
|
||||
conf.argv().env().file({ file: __dirname + "/config.json" }).defaults({
|
||||
'PORT': process.env.PORT,
|
||||
'IP': process.env.IP
|
||||
'PORT': 3000,
|
||||
'IP': '0.0.0.0'
|
||||
});
|
||||
|
||||
// Override normal ENV values with nconf ENV values (ENV values are used the same way without nconf)
|
||||
|
|
@ -59,6 +59,8 @@ process.on('uncaughtException', function (error) {
|
|||
require('coffee-script') // remove intermediate compilation requirement
|
||||
module.exports = server = require('./src/server')
|
||||
|
||||
Error.stackTraceLimit = Infinity;
|
||||
|
||||
server.listen(process.env.PORT || 3000, process.env.IP || '0.0.0.0');
|
||||
|
||||
// Note: removed "up" module, which is default for development (but interferes with and production + PaaS)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ router = new express.Router()
|
|||
|
||||
scoring = require '../app/scoring'
|
||||
_ = require 'underscore'
|
||||
validator = require 'validator'
|
||||
validator = require 'derby-auth/node_modules/validator'
|
||||
check = validator.check
|
||||
snaitize = validator.sanitize
|
||||
icalendar = require 'icalendar'
|
||||
|
|
@ -24,7 +24,7 @@ router.get '/status', (req, res) ->
|
|||
status: 'up'
|
||||
|
||||
router.get '/user', (req, res) ->
|
||||
console.log 'hi', { uid, token } = req.query
|
||||
{ uid, token } = req.query
|
||||
return res.json 500, NO_TOKEN_OR_UID unless uid || token
|
||||
|
||||
model = req.getModel()
|
||||
|
|
@ -33,12 +33,11 @@ router.get '/user', (req, res) ->
|
|||
query.fetch (err, user) ->
|
||||
return res.json 500, err: err if err
|
||||
self = user.at(0).get()
|
||||
console.log self
|
||||
return res.json 500, NO_USER_FOUND if !self || _.isEmpty(self)
|
||||
|
||||
return res.json self
|
||||
|
||||
router.post '/user/tasks', (req, res) ->
|
||||
router.post '/user/task', (req, res) ->
|
||||
{ uid, token } = req.body
|
||||
task = { title, text, type, value, note } = req.body
|
||||
return res.json 500, NO_TOKEN_OR_UID unless uid || token
|
||||
|
|
@ -50,15 +49,16 @@ router.post '/user/tasks', (req, res) ->
|
|||
return res.json 500, err: err if err
|
||||
self = user.at(0).get()
|
||||
return res.json 500, NO_USER_FOUND if !self || _.isEmpty(self)
|
||||
return res.json 500, err: "type must be habit, todo, daily, reward" unless check(type).is /habit|todo|daily|reward/
|
||||
return res.json 500, err: "type must be habit, todo, daily, reward" unless /habit|todo|daily|reward/.test type
|
||||
return res.json 500, err: "must have a title" unless check(title).notEmpty()
|
||||
return res.json 500, err: "must have text" unless check(text).notEmpty()
|
||||
value ||= 0
|
||||
|
||||
#model.ref '_user', user
|
||||
model.refList "_#{type}List", "_user.tasks", "_user.#{type}Ids"
|
||||
model.push "_#{type}List", task
|
||||
|
||||
return res.json task
|
||||
return res.json 201, task
|
||||
|
||||
router.get '/users/:uid/calendar.ics', (req, res) ->
|
||||
#return next() #disable for now
|
||||
|
|
|
|||
|
|
@ -71,6 +71,8 @@ mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
|
|||
)
|
||||
# Adds req.getModel method
|
||||
.use(store.modelMiddleware())
|
||||
# API should be hit before all other routes
|
||||
.use('/api/v1', require('./api').middleware)
|
||||
# Show splash page for newcomers
|
||||
.use(middleware.splash)
|
||||
.use(priv.middleware)
|
||||
|
|
@ -78,7 +80,6 @@ mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
|
|||
.use(auth.middleware(strategies, options))
|
||||
# Creates an express middleware from the app's routes
|
||||
.use(app.router())
|
||||
.use('/api/v1', require('./api').middleware)
|
||||
.use(require('./static').middleware)
|
||||
.use(require('./deprecated').middleware)
|
||||
.use(expressApp.router)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
module.exports.splash = (req, res, next) ->
|
||||
# This was an API call, not a page load
|
||||
return next() if /^\/(api)|(v1)/.test req.path
|
||||
|
||||
unless req.query?.play? or req.getModel().get('_userId')
|
||||
res.redirect('/splash.html')
|
||||
else
|
||||
|
|
|
|||
|
|
@ -113,13 +113,18 @@ describe 'API', ->
|
|||
user = character.newUserObject()
|
||||
user.apiToken = derby.uuid()
|
||||
model.set "users.#{uid}", user
|
||||
user = model.get("users.#{uid}")
|
||||
user = model.at("users.#{uid}")
|
||||
currentUser = user.get()
|
||||
|
||||
params =
|
||||
uid: user.id
|
||||
token: user.apiToken
|
||||
uid: currentUser.id
|
||||
token: currentUser.apiToken
|
||||
title: 'Title'
|
||||
text: 'Text'
|
||||
type: 'habit'
|
||||
done()
|
||||
|
||||
###
|
||||
it '/api/v1/user', (done) ->
|
||||
console.log "#{baseURL}/user?#{qs.stringify(params)}"
|
||||
request.get("#{baseURL}/user")
|
||||
|
|
@ -133,18 +138,17 @@ describe 'API', ->
|
|||
assert.equal res.statusCode, 200
|
||||
assert.ok res.body
|
||||
console.log res.body
|
||||
done()
|
||||
done()
|
||||
###
|
||||
|
||||
it '/api/v1/task', (done) ->
|
||||
request.post("#{baseURL}/task")
|
||||
it '/api/v1/user/task', (done) ->
|
||||
request.post("#{baseURL}/user/task")
|
||||
.set('Accept', 'application/json')
|
||||
.send(params)
|
||||
.on('error', (err) ->
|
||||
console.log 'err', err
|
||||
)
|
||||
.end (res) ->
|
||||
#console.log 'task', res.body
|
||||
currentUser = user.get()
|
||||
assert.ok !res.body.err
|
||||
assert.equal res.statusCode, 200
|
||||
assert.ok res.body.tasks
|
||||
assert.equal res.statusCode, 201
|
||||
assert.ok res.body.id
|
||||
assert.ok currentUser.tasks[res.body.id]
|
||||
done()
|
||||
|
|
|
|||
Loading…
Reference in a new issue