-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.coffee
105 lines (73 loc) · 2.7 KB
/
server.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
express = require 'express'
mongoose = require 'mongoose'
consolidate = require 'consolidate'
gcm = require 'node-gcm'
dateFormat = require 'dateformat'
dateFormat.i18n.monthNames = ["Jan.", "Feb.", "Marts", "April", "Maj", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dec."];
app = express()
##Web Config
app.use express.compress()
app.use express.static "#{__dirname}/resources/public"
app.use express.bodyParser()
app.use express.methodOverride()
app.use app.router
app.configure 'development', ->
app.get '/gcm/debug', (req, res) ->
res.send GCMIDs
app.get '/events/send', (req, res) ->
message = new gcm.Message()
message.addData('range', 30)
message.addData('geoLocation', [30, 20])
message.delayWhileIdle = true;
sender.send message, GCMIDs, 4, (result) ->
console.log result
res.end()
app.use express.logger ':method :url'
app.use express.errorHandler { dumpExceptions: true, showStack: true }
app.configure 'production', ->
app.use express.errorHandler()
app.engine 'html', consolidate.hogan
app.set 'view engine', 'html'
app.set 'views', "#{__dirname}/application/templates"
##End Web Config
##Database
db = mongoose.connect require './database' #This file will not be on Github
EventSchema = mongoose.Schema
title: String
description: String
eventTime: Date
geoLocation: [Number]
range: Number
humanLocation: String
EventModel = db.model 'events', EventSchema
sender = new gcm.Sender require './gcmKey' #This file will not be on Github
GCMIDs = [];
populateEvents = (req, res, next) ->
EventModel.find {}, (err, evs) ->
res.locals.events = for ev, i in evs
{
index: i
title: ev.title
description: ev.description
eventTime: dateFormat(ev.eventTime, 'hh:mm, d mmm yyyy')
geoLocation: ev.geoLocation
humanLocation: ev.humanLocation
}
res.locals.json = JSON.stringify res.locals.events
next()
app.get '/events/list', populateEvents, (req, res) ->
res.render 'index'
app.get '/events/new', populateEvents, (req, res) ->
res.locals.method = 'put'
res.render 'form'
app.put '/events/save', (req, res) ->
(new EventModel(req.body)).save (err) ->
message = new gcm.Message()
message.addData('range', req.body.range)
message.addData('geoLocation', req.body.geoLocation)
sender.send message, GCMIDs, 4, (result) ->
res.redirect '/events/new'
app.get '/gcm/register/:regid', (req, res) ->
GCMIDs.push req.params.regid
res.send 200, ''
app.listen 8080