Working again

This commit is contained in:
Daniel Saewitz 2013-02-23 03:20:16 -05:00
parent 02569c2dfa
commit 177c7e4f17
6 changed files with 30 additions and 27 deletions

View file

@ -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",

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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()