-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.coffee
More file actions
113 lines (87 loc) · 2.27 KB
/
index.coffee
File metadata and controls
113 lines (87 loc) · 2.27 KB
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
106
107
108
109
110
111
112
# #
# Eatery server #
# #
require('./newrelic')
express = require("express")
app = express()
router = express.Router()
timeout = require('connect-timeout')
Promise = require('es6-promise').Promise;
menu_manager = (require './menu_manager')
config = require("./config")
routes_calendar = require './routes_calendar'
routes_menu = require './routes_menu'
routes_location = require './routes_location'
#
# Set up the routes
#
## Home
router
.route("/")
.get (req, res) ->
res.sendFile(__dirname + "/info.txt")
return
## Calendars
router
.route("/calendars")
.get routes_calendar.all_ids
router
.route("/calendar/:cal_id")
.get routes_calendar.cal_id
router
.route("/calendar/:cal_id/:start/:end")
.get routes_calendar.render_range
## Locations
# FIXME: Include GPS locations for each location
router
.route("/locations")
.get routes_location.all_locations
router
.route("/location/:loc_id")
.get routes_location.location
## Menus
router
.route('/menus')
.get routes_menu.all_menus
router
.route("/menu/:menu_id")
.get routes_menu.menu_id
router
.route("/menu/:menu_id/:meal_type")
.get routes_menu.menu_for_meal
router
.route('/auth/groupme')
.get (req, res) ->
# res.send(req.query.access_token)
res.redirect('cuappdevEatery://authorize?access_token=' + req.query.access_token)
router
.route('/blank')
.get (req, res) ->
haltOnTimedout = (req, res, next) ->
unless req.timedout
next()
else
res.status(408).end()
return
#
# Start the server
#
start_server = (port) ->
console.log "Populating Caches"
Promise.all([
menu_manager.populate_cache().then(-> console.log "Menu Manager ready to go.")
])
.then(-> console.log "Caches done.")
.then(->
app
.use(timeout('10s'))
.use("/", router)
.use(haltOnTimedout)
.listen(port)
return true
).then(->
console.log("Good stuff happens on port " + port)
return true
)
port = if process.env.NODE_ENV == 'production' then process.env.PORT else 8080
start_server port